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.
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.
- 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 type | Fires when | Use for | Fragility |
|---|---|---|---|
| Page View - All Pages | Every page load (container loaded / DOM ready / window loaded depending on setting) | Google tag, Conversion Linker, base pixels | Low |
| Page View - Some Pages | Page URL / path matches rules | Thank-you page conversions | Medium (URL changes) |
| Click - All Elements | Any click, optionally filtered | CTA tracking when no data layer exists yet | High |
| Click - Just Links | Link clicks | Outbound link tracking | Medium |
| Form Submission | Form submit event | Native HTML forms | Medium-High (many modern forms prevent default) |
| History Change | SPA route changes | Virtual page views | Medium |
| Custom Event | event key in data layer matches | Primary conversions, ecommerce | Low if developers keep the contract |
| Element Visibility | Element scrolls into view | Promo impression, sticky CTA seen | Medium |
| Timer | Interval elapsed | Rare; engagement experiments | Low |
| YouTube Video | Video interactions | Video engagement if API enabled | Medium |
| Trigger Group | Several triggers all happened | Advanced sequences | Higher complexity |
| Initialization / Consent Initialization | Very early in page lifecycle | Consent defaults, early set-up tags | N/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 containsstaging. - 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
- Open Preview on your site.
- Click your primary CTA. Note which events appear in the left summary (gtm.click, form submit, or nothing).
- Create a temporary GA4 Event tag
test_cta_clickwith a Click trigger filtered on Click Text or Click Classes. - Create a second tag waiting for Custom Event
generate_lead(even if it never fires yet). - 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:
- Custom Event name from data layer.
- Stable
data-*attributes via Auto-Event Variables. - Page Path equals (exact) for true singleton pages.
- Page Path contains (short unique slug).
- Click Classes / ID from design system tokens.
- 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 answersAll 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
- Google Tag Manager Help, Set up Google Analytics events (trigger examples)support.google.com
- Google Tag Platform, The data layerdevelopers.google.com
- All accessed 5 Nov 2026.