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)
- Use Preview mode properly: confirm the exact event where you expect firing, and inspect the trigger evaluation results
- Validate trigger conditions: remove over-specific filters; verify regexes; confirm SPA routes vs full page loads
- Inspect variables: check the variable panel; confirm dataLayer keys exist on the same event
- 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)
- Check Consent Mode v2 setup →
- Test Google Ads conversion tracking →
- Why conversions break (full framework) →
- GA4 conversions not showing in Google Ads →
- Google tag not firing? Fix GTM & gtag issues →
- Conversion tracking inaccurate? Fix GA4 vs Ads mismatch →
- Enhanced Conversions not working? Fix hashing & consent conflicts →
