ConsentCheck

GTM Tags Not Firing? Here's How to Debug It

This is the GTM-specific version of tag debugging. If tags sometimes fire, sometimes don't, or only fire after refresh, you're dealing with a combination of trigger conditions, variables, and consent timing.

The goal here is to turn "it doesn't fire" into a repeatable diagnosis: what event happened, what trigger matched, what variables resolved to, and what consent state GTM believed at that moment.

Symptoms (what you see)

  • GTM Preview shows tag as "Not Fired" (even though you expected it)
  • Tag fires on some routes but not on the conversion route
  • Tag fires, but variables are empty (IDs, values, user data)
  • Consent-related tags never fire after accept (or fire before consent)

Why it happens

  • Preview vs production mismatch: you tested a path that users don't actually take
  • Trigger conditions: URL/path filters don't match, click classes change, custom events never dispatch
  • Variables resolve to empty: DOM elements don't exist at trigger time, dataLayer keys aren't present, or SPA timing breaks lookups
  • Consent initialization timing: Consent Mode defaults/updates occur after GTM evaluates consent

Fix checklist (advanced)

  1. Use Preview mode properly: confirm the exact event where you expect firing, and inspect the trigger evaluation results
  2. Validate trigger conditions: remove over-specific filters; verify regexes; confirm SPA routes vs full page loads
  3. Inspect variables: check the variable panel; confirm dataLayer keys exist on the same event
  4. Confirm consent timing: Consent Mode defaults must run before GTM/container; consent updates must fire on accept/reject

Manual debugging takes time

Automatically detect GTM + consent issues with a full scan, then verify conversion behavior with the test guide.

Internal links (next steps)