TutorialPractitioner7 min read

Debug GTM with Preview and Tag Assistant

Use GTM Preview, Tag Assistant and GA4 DebugView together to find why tags fire, fail or duplicate — a practical marketer workflow. Nov 2026.

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

Most GTM incidents are solvable in thirty minutes if you debug in a fixed order: Preview event stream → Variables → tag fired/not fired reasons → network request → product DebugView (GA4) or Ads/Meta test tools. Skipping to "maybe publish again" creates new versions without answers.

Key takeaways
  • Debug from the event outward, not from the report backward.
  • A tag that "didn't fire" always has a reason listed in Preview — read it.
  • Confirm the destination system (GA4 DebugView, Ads, Meta Test Events) separately.
  • Keep a written debug checklist; tired Friday-you needs it.

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.

01The standard debug loop

  1. Reproduce on staging with one browser profile and extensions disabled (ad blockers break tests).
  2. GTM Preview connect to the URL.
  3. Perform one action (one submit, one purchase).
  4. Select the resulting event in the left summary.
  5. Check Tags: which fired, which did not, why not.
  6. Check Variables at that event.
  7. Check Data Layer tab for the payload.
  8. Check the browser network tab for collect / conversion hits.
  9. Check GA4 DebugView or vendor test consoles.
  10. Only then change the container.

02Reading "Tags Not Fired"

Common reasons Preview shows:

  • Trigger conditions not met (wrong Page Path, Click Text mismatch).
  • Exception trigger matched.
  • Consent required types not granted.
  • Tag is paused.
  • Firing option limits (once per page already used).

Believe the debugger. If it says Click Text does not match, your eye may still "see" the words — the clicked node may differ.

03Tag Assistant tips

Google Tag Assistant helps validate Google tags on live pages, show consent state and catch duplicate loaders. Use it after publish to confirm production matches Preview. If Assistant shows two Google tags for the same destination, revisit lesson 3’s double-counting section.

04GA4 DebugView pairing

Enable debug mode via Preview connection or the GA Debugger extension. Confirm event names and parameters. Remember: DebugView traffic is for QA; do not panic if it also appears in Realtime. See GA4 custom dimensions and DebugView.

05Ads and Meta

  • Ads: conversion diagnostics / Tag Assistant coverage for the conversion action.
  • Meta: Events Manager Test Events with browser + server labels.

Never declare victory from GTM Preview alone when money is on the line.

06Hard problems

SymptomDeeper causeApproach
Works in Preview, fails liveUnpublished changes; different environment snippet; CSP; consent regionalityPublish check; view-source GTM ID; test region
Intermittent firesRace: tag reads variable before pushFire on Custom Event; order data layer before tags
Duplicate hitsTwo containers, two tags, two pushesInventory loaders
SPA ghostsHistory Change missingLesson 3 history settings
Only fails on Safari / iOSITP / storage limits / consentCheck Consent Mode and first-party setup; consider server-side

07Worked example: Ledgerline

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

Ledgerline’s generate_lead tag failed only on the French locale site. Preview on /fr/demo showed the Custom Event name generate_lead_fr from a translation-aware push. The trigger listened for generate_lead. One dictionary update later, both locales matched. The bug looked like "GTM is broken in France" in Slack; it was a naming drift.

Walkthrough

  1. Pick a currently broken or unverified tag.
  2. Run the 10-step loop above; write findings in the ticket.
  3. Fix one cause; retest; do not change three things at once.
  4. Archive a Preview screenshot in the version description link.

08Shareable evidence

When you file a ticket "tag broken", attach: Preview screenshot of the event, Variables panel, Tags not fired reason, and DebugView screenshot. Engineers and agencies can resolve from evidence; they cannot resolve from "leads feel low".

09Production-only bugs

Some bugs appear only with real ad click IDs, real consent banners, or real CDN cache. Keep a "prod probe" checklist: Tag Assistant on production after publish, one real conversion test with a known click when possible, watch Realtime for 15 minutes.

10Change control while debugging

Never debug by publishing seven micro-versions an hour. Use Preview, pin hypotheses, and publish once with a clear note. Version spam makes rollback harder.

11DebugView vs Preview vs Realtime

ToolBest for
GTM PreviewWhich tags/triggers/variables fired on this browser
GA4 DebugViewWhether GA4 accepted the event and parameters
GA4 RealtimeProduction smoke test after publish
Tag AssistantConsent + Google tag health on live pages
Ads conversion diagnosticsWhether Ads saw the conversion action

Use them as a ladder: Preview → DebugView → publish → Realtime → Ads/Meta UIs.

12Common "red" Tag Assistant findings

  • Multiple Google tags installing the same Measurement ID
  • Consent defaults missing
  • Tag fired but blocked by consent
  • Incorrect container installed on a subdomain

Treat red items as tickets, not as background noise.

13Reproducing SPA bugs

In Preview, navigate with in-app routers (not full reloads). Confirm history change triggers if you rely on them. Many "works on first load only" bugs are SPA route issues. Record a Loom for engineering showing the exact click path.

14Variable evaluation discipline

When a tag fails, open the Variables tab for the exact event — not the previous Page View. Click triggers especially confuse people who look at page load variable values. Confirm Click Classes / Form ID at the moment of the event.

15Pause vs delete while debugging

Pause duplicate suspects instead of deleting during an incident. Deletion removes evidence. After 7 quiet days, delete or move to _Paused with a note. Version history helps, but paused tags with notes are kinder to the next auditor.

16Incident response for "conversions dropped 40%"

  1. Confirm the drop is real: compare GA4 key events, Ads conversions and CRM for the same window. One system wrong ≠ three.
  2. Check consent rates: CMP change can deny storage for a large geo overnight.
  3. Check Versions: what published yesterday?
  4. Preview the money path on production URL (Tag Assistant) and staging.
  5. Check site releases: SPA router, form vendor, thank-you URL.
  6. Check tag fire counts in GTM (if available) / GA4 event counts for the trigger event.
  7. Rollback to last known good container version if a publish is implicated; then fix forward.

Do not start by rebuilding the conversion tag from scratch — you will lose forensics.

17Keeping a debug container note

Create a workspace note or Confluence page: "How we Preview Ledgerline". Include Measurement IDs, test users, CMP test deep links, and who has Ads access. New contractors should not spend two days discovering how to turn on DebugView.

18Browser extensions that lie to you

Ad blockers, privacy extensions and even some password managers alter scripts or strip parameters. Keep a clean Chromium profile named GTM QA with extensions disabled for Preview work. Reproduce "bugs" there before filing engineering tickets. Roughly half of "GTM randomly broken for me" reports are extension interference on the reporter’s daily driver browser.

19Try it yourself

Break a sandbox tag on purpose (wrong trigger event name). Use Preview to identify the reason string. Fix it. That muscle memory matters.

20Quick quiz

1. What should you inspect first when a tag does not fire?

Answer: The event in Preview and the tag’s unmet trigger/consent/exception reasons.

2. Why disable ad blockers while debugging?

Answer: They can block gtm.js or collect hits and fake failures.

3. Is Preview enough to approve Ads spend changes?

Answer: No — confirm Ads/Meta receiving systems too.

21What should you check before the next lesson?

  • You can explain fired vs not-fired for one tag with evidence.
  • DebugView or vendor test tool used at least once.

Previous: Cross-domain tracking. Next: Server-side GTM. Or return to the GTM for Marketers track.

22Common questions

Preview vs Tag Assistant? Workspace debugger vs broader live inspection — use both.

Preview empty? Wrong/missing container or blockers.

Share Preview? Yes, via share/debug session links.

Questions people ask

3 answers

Preview vs Tag Assistant?

Preview is GTM's workspace debugger. Tag Assistant (browser extension / debug mode) inspects tags on live pages more broadly. Use both.

Why does Preview connect but no tags show?

Wrong container on the page, blocked snippet, or you're looking at a cached old container. Check container ID in page source.

Can I share Preview with a developer?

Yes — use the share preview link / debug session features so they see the same event stream.

Sources

  1. Google Tag Manager Help, Preview and debug containerssupport.google.com
  2. Google Tag Manager Help, Set up Google Analytics eventssupport.google.com
  3. All accessed 5 Nov 2026.
Written and reviewed by Dipuck JonesHow we research and testReport an error