# 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.

Source: https://mentionx.ai/learn/gtm/gtm-triggers-explained  
Author: Dipuck Jones, founder of MentionX  
Updated: 5 November 2026  
Level: Practitioner

**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.*

## Trigger 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 |

## Page 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.

## Click 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`.

## Form 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.

## Custom 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.

## Exception 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.

## Worked 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.

> **Pro move:** name triggers with the signal, not the tag: `CE - generate_lead`, `Click - header Book demo`, `PV - /thanks`. Multiple tags can reuse one trigger.

## Trigger 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.

## Listening 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.

## All 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).

## Writing 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.

## Preview 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.

## Try 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.

## Quick 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.

## What 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](https://mentionx.ai/learn/gtm/gtm-install-google-tag). Next: [Variables: built-in and custom](https://mentionx.ai/learn/gtm/gtm-variables-built-in-custom). Or return to the [GTM for Marketers track](https://mentionx.ai/learn/gtm/gtm-for-marketers).

## Common 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.

## Sources

- Google Tag Manager Help, [Set up Google Analytics events](https://support.google.com/tagmanager/answer/13034206) (trigger examples)
- Google Tag Platform, [The data layer](https://developers.google.com/tag-platform/tag-manager/datalayer)
- All accessed 5 Nov 2026.

## Frequently asked questions

### 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.

---

Written and reviewed by Dipuck Jones for MentionX Learn. The HTML version of this page: https://mentionx.ai/learn/gtm/gtm-triggers-explained
