TutorialPractitioner7 min read

GTM triggers explained: when tags should fire

All Pages, Click, Form, History Change, Custom Event, Timer and exception triggers — how marketers choose and combine them. Nov 2026.

Dipuck Jones
Written by Founder of MentionX · 13+ years in B2B SaaS growth and SEO
Reviewed
Short answer

Triggers decide when tags run. Most GTM bugs are trigger bugs: too broad (fires everywhere), too narrow (never fires), or tied to fragile click text. Learn the trigger types, then prefer Custom Event triggers fed by the data layer for anything that affects revenue reporting.

Key takeaways
  • Match the trigger to the reliability of the signal: data layer > DOM form events > click text.
  • Use exception triggers to prevent fires (thank-you page spam, internal traffic pages).
  • One tag can have several triggers; think in OR logic, then carve outs.
  • Always verify the event name in Preview's summary before you invent a new trigger.

Checked 5 November 2026 (CET) against Google Tag Manager Help, Google tag platform developer docs, Google Ads Help, Analytics Help and Meta Business Help where cited. Google Tag Manager, GA4 and Ads UIs change often, so confirm labels in your own accounts. "Our view" marks MentionX opinion. Ledgerline is a fictional company used for illustration.

01Trigger types marketers use most

Trigger typeFires whenUse forFragility
Page View - All PagesEvery page load (container loaded / DOM ready / window loaded depending on setting)Google tag, Conversion Linker, base pixelsLow
Page View - Some PagesPage URL / path matches rulesThank-you page conversionsMedium (URL changes)
Click - All ElementsAny click, optionally filteredCTA tracking when no data layer exists yetHigh
Click - Just LinksLink clicksOutbound link trackingMedium
Form SubmissionForm submit eventNative HTML formsMedium-High (many modern forms prevent default)
History ChangeSPA route changesVirtual page viewsMedium
Custom Eventevent key in data layer matchesPrimary conversions, ecommerceLow if developers keep the contract
Element VisibilityElement scrolls into viewPromo impression, sticky CTA seenMedium
TimerInterval elapsedRare; engagement experimentsLow
YouTube VideoVideo interactionsVideo engagement if API enabledMedium
Trigger GroupSeveral triggers all happenedAdvanced sequencesHigher complexity
Initialization / Consent InitializationVery early in page lifecycleConsent defaults, early set-up tagsN/A

02Page view triggers in practice

For the Google tag, All Pages is the default. For a thank-you page conversion without a data layer, Some Pages where Page Path contains /thank-you or equals /demo/thanks works — until someone renames the slug. Prefer a data layer generate_lead push on success, with a Custom Event trigger, as soon as you can get engineering time.

Page view timing options (Container Loaded, DOM Ready, Window Loaded) change how early tags run. Ads and analytics vendors often want early fires; tags that read DOM values may need DOM Ready. If a variable is undefined in Preview, try a later page view type.

03Click triggers without shooting yourself in the foot

Click triggers are fine for secondary UX analytics ("clicked pricing toggle"). They are a weak primary conversion definition.

Caveats.

  • Users click child elements (<span> inside <button>). Filters on Click Text may fail; Click Element / CSS matching may work better.
  • Many sites stop propagation or use shadow DOM.
  • Redesigns break CSS selectors.

If you must use clicks for a lead CTA until the data layer ships, document it as temporary and create the ticket for generate_lead.

04Form submission traps

GTM's Form Submission trigger listens for the browser submit event. Single-page forms, HubSpot embeds, and many SaaS forms submit via XHR/fetch and never fire a native submit GTM can see. Symptom: trigger works on a plain HTML contact form and fails on the marketing site's demo form.

Method. Confirm in Preview whether a Form event appears when you submit. If not, switch to: thank-you page view, Element Visibility on a success message, or — best — a data layer push from the form's success callback.

05Custom Event triggers

When the site runs dataLayer.push({event: 'generate_lead'}), you create a trigger type Custom Event with Event name generate_lead. Exact match. Then any GA4 Event tag, Ads conversion tag or Meta event can share that trigger.

This is the pattern for lessons 7–11 and 14.

06Exception triggers

Exceptions are triggers that block a tag even when another trigger matched. Examples:

  • Fire Ads conversion on generate_lead, except when Page Hostname contains staging.
  • Fire scroll tag on All Pages, except Page Path contains /legal/

Use exceptions instead of stuffing huge "does not match" regex into the main trigger when readability matters.

07Worked example: Ledgerline trigger choices

Ledgerline is a fictional accounts-payable software company. Details are illustrative.

Ledgerline tracked demo requests three ways over six months: (1) click on the button, (2) form submit trigger, (3) data layer generate_lead after HubSpot success. Click double-counted because the button contained an icon span that sometimes registered twice with different filters. Form submit never fired on the HubSpot embed. Data layer matched CRM create events within 2% once duplicates were removed.

Walkthrough

  1. Open Preview on your site.
  2. Click your primary CTA. Note which events appear in the left summary (gtm.click, form submit, or nothing).
  3. Create a temporary GA4 Event tag test_cta_click with a Click trigger filtered on Click Text or Click Classes.
  4. Create a second tag waiting for Custom Event generate_lead (even if it never fires yet).
  5. Compare reliability. Keep the better one; delete the test tag before publish or leave it paused.

08Trigger groups and sequences

Trigger Groups require multiple conditions to have occurred in the same page view (for example scrolled 50% AND clicked a CTA). They are powerful and easy to misconfigure. Prefer a single data layer event that already means "qualified engagement" when engineering can provide it — the group becomes unnecessary.

09Listening for errors

There is no universal "form failed" trigger that works across vendors. If you need failure analytics, ask for explicit data layer events (form_error) with error codes stripped of PII. Do not scrape red text from the DOM as a long-term strategy.

10All Pages tags budget

Every All Pages tag costs CPU on every view. Keep the All Pages list sacred: Google tag, Conversion Linker, consent machinery, base pixels you truly need. Move vanity interaction tags to scoped triggers. Your Core Web Vitals owners will thank you — and so will future auditors (lesson 19).

11Writing durable trigger conditions

Prefer in this order:

  1. Custom Event name from data layer.
  2. Stable data-* attributes via Auto-Event Variables.
  3. Page Path equals (exact) for true singleton pages.
  4. Page Path contains (short unique slug).
  5. Click Classes / ID from design system tokens.
  6. Click Text (last resort).

When you use regex, write tests: three URLs that should match, three that should not. Paste those into the trigger notes.

12Preview methodology for triggers

Create a temporary GA4 Event debug_trigger_probe pointed at the trigger under test. Fire the user action five times. Confirm five fires (or the exact once-per semantics you want). Delete or pause the probe tag before production publish — leftover probes are a common audit finding.

13Try it yourself

Map your top five conversion actions to a trigger type. Mark each as Reliable / Fragile / Unknown. Unknown means you haven't verified in Preview yet — do that this week.

14Quick quiz

1. Why do Form Submission triggers fail on many marketing sites?

Answer: Forms often submit via JavaScript without a native submit event GTM can hear.

2. What trigger type listens for `dataLayer` event names?

Answer: Custom Event.

3. What does an exception trigger do?

Answer: Prevents the tag from firing when the exception condition matches.

15What should you check before the next lesson?

  • You can identify which events Preview shows for your main CTA.
  • You know the difference between All Pages and Custom Event.
  • You have at least one fragile trigger documented as temporary.

Previous: Install GTM and the Google tag. Next: Variables: built-in and custom. Or return to the GTM for Marketers track.

16Common questions

All Pages vs Consent Initialization? Consent Initialization is earlier for consent defaults; most tags use All Pages/Initialization after consent is set.

Why didn't my Click trigger fire? Wrong element, child node clicks, or blocked listeners. Prefer data layer for primary conversions.

Multiple triggers on one tag? Yes — OR logic, with optional exceptions.

Questions people ask

3 answers

All Pages vs Consent Initialization?

Consent Initialization fires earlier so consent defaults can apply before other tags. Use it for consent defaults; use All Pages / Initialization for most tags once consent is handled.

Why didn't my Click trigger fire?

Often the clickable element isn't what you think (child span vs button), or a listener is blocked. Try Click Classes/ID, or a data layer event from the app.

Can one tag have multiple triggers?

Yes. A tag fires when any of its triggers match (OR). Use exception triggers to block fires.

Sources

  1. Google Tag Manager Help, Set up Google Analytics events (trigger examples)support.google.com
  2. Google Tag Platform, The data layerdevelopers.google.com
  3. All accessed 5 Nov 2026.
Written and reviewed by Dipuck JonesHow we research and testReport an error