GTM's Preview mode is the one tool that separates teams who know their tracking works from teams who assume it does. Every GTM implementation, no matter how carefully planned, has bugs that only Preview mode surfaces — tags that don't fire because a trigger condition is slightly wrong, variables that return undefined instead of the value you expected, or tags that fire twice because you have a duplicate trigger you forgot about. Preview mode shows you all of this before you publish to live traffic.
This guide covers how Preview mode works, how to read the event stream and tag panel, how to share a preview session with a developer or QA team, and the five things most GTM users never check but should.
How Preview Mode Works
When you click "Preview" in GTM, Google opens a separate Tag Assistant session and sets a cookie called __TAG_ASSISTANT in your browser. This cookie tells GTM to load the unpublished container version — your saved draft — instead of the live version. Every other visitor to your site still sees the published container. Only your browser, with the cookie, runs the draft.
The preview window and your site are connected. Every event that fires in your browser sends data back to the Tag Assistant panel, which updates in real time. Navigate your site, click buttons, submit forms — each action appears as a new event in the left-hand timeline, and clicking any event shows you exactly which tags fired, which triggered but were blocked, and which did not fire and why.
Preview mode runs on your current workspace. If you have unsaved changes, those changes are NOT included until you save. Save your container before opening Preview, or you will be debugging a version that does not include your latest edits.
Reading the Tag Assistant Panel
The Tag Assistant interface has three main areas: the event timeline on the left, the summary panel in the middle, and the detail panels on the right.
The Event Timeline
The left panel lists every event that fired in order: Initialization, Consent Initialization, Page View, DOM Ready, Window Loaded, and then any custom events you push to the data layer. Each entry shows the event name and a count of how many tags fired for that event.
A high tag count on Page View is a common problem. If 12 tags fire on every page load, review whether all of them genuinely need to fire on every page. Tags that fire more than they should inflate your GTM container execution time and can delay page load for users.
The Tags Panel
Click any event in the timeline and the Tags tab shows three lists:
- Tags Fired — tags that fired successfully for this event. Green checkmark.
- Tags Not Fired — tags that have triggers but none matched this event. This is expected for most tags on most events.
- Tags Paused — tags that were paused in GTM and therefore did not fire regardless of triggers.
When a tag is in "Tags Not Fired" and you expected it to fire, click the tag name. GTM shows you the trigger condition and exactly why it did not match — which condition evaluated to false and what value it found instead of what it expected. This is the fastest way to debug a misfiring tag without guessing.
The Variables Panel
The Variables tab shows the state of every variable GTM evaluated at the moment of the selected event. This is where you verify that variables are returning the values you expect before the tag fires.
Every variable appears in two states: its value at the current event (right column) and the built-in variable name (left column). Common debugging scenarios here:
- A Data Layer variable shows
undefined— the dataLayer key you specified does not exist at this event, or the push happened after GTM read it - A URL variable returns the wrong value — check whether you need "Path", "Full URL", or a Custom JavaScript variable to extract the part you want
- A DOM element variable returns
undefined— the element may not exist at the trigger's firing order (Page View vs DOM Ready vs Window Loaded)
The Data Layer Panel
The Data Layer tab shows the full state of the dataLayer array at the time of the selected event — every key and value that has been pushed up to that point. This is the definitive check for whether your ecommerce pushes, user data pushes, or consent signals are arriving in the format GTM expects. If you see "ecommerce":{} with no nested keys, the push happened but the payload was empty. If you see no ecommerce key at all, the push never happened for this event.
Sharing a Preview Session
Preview sessions are not limited to your own browser. You can share a preview link with a developer, a QA reviewer, or a client so they can walk through the implementation on their own machine without needing access to GTM.
To share: in the Tag Assistant preview window, click the share icon in the top-right corner. GTM generates a URL with your container's preview token embedded. Anyone who opens that URL will have the preview cookie set in their browser and will be running your draft container for the duration of their session. The link expires when you close your preview session or publish a new version.
One important caveat: shared preview sessions load the draft container on your actual live site. If your draft has a breaking change — a tag that fires an infinite loop, or a variable that throws a JavaScript error — that bug is visible to anyone viewing the site with the preview cookie. Test on a staging environment if your draft has high-risk changes.
Five Things Most GTM Users Never Check
1. The Consent Initialization Event
If you are running Consent Mode v2, the very first event in your timeline should be Consent Initialization, and your consent default command should appear in the Data Layer before any other tags fire. If you see Page View before Consent Initialization, your consent default is being set too late and marketing tags are firing before consent is acknowledged. This is a compliance failure that a visual check in Preview mode catches in seconds.
2. Duplicate Tag Fires
In the Tags Fired list, check whether any tag appears more than once for the same event. A GA4 event tag firing twice on a single button click means the event is counted twice in every report that tag feeds. Common causes: the tag has both a specific click trigger and a broader Page View trigger that also matches, or two separate triggers with overlapping conditions are both assigned to the tag. GTM will not warn you about this — Preview mode is the only way to see it.
3. Tag Firing Order for Consent Tags
Tags fire in the order GTM processes triggers. If your consent initialization tag and your GA4 configuration tag both fire on Page View, the order they fire matters. GTM processes tags roughly in the order they were created, but Tag Sequencing (in the Advanced settings of any tag) lets you force an explicit order. Check in Preview that your consent initialization tag fires before any marketing or analytics tags on the same event. If it fires after, reordering in Tag Sequencing is the fix.
4. Variables on the Actual User Interaction
Most GTM testing is done on Page View because it is easy — load the page, check the panel. But your most important tags fire on user interactions: clicks, form submissions, scroll depth milestones. Test these in Preview by actually performing the interaction. Click the button. Submit the form. Scroll to 75%. Then check what the Variables tab shows at the exact moment of that interaction — not at Page View. Variables that look correct at Page View can return completely different values at click time because the click context changes which element built-in variables reference.
5. Staging versus Live Domain Comparison
Preview mode works on any domain — not just your production site. If you have a staging environment, open Preview on staging first, walk through the critical user journeys, and verify the tag fires match what you expect. Then check the same flows on production before publishing to confirm that any environment-specific differences (different URL structures, different page content, different third-party scripts) do not affect your GTM implementation. Tag behaviour on staging and production can diverge if the page structure or data layer pushes differ between environments.
The Limit of Preview Mode
Preview mode tells you that a tag fired. It does not tell you whether the data that tag sent arrived correctly in GA4. A GA4 event tag can fire in Preview and show green, and the event can still fail to appear in GA4 if the Measurement ID is wrong, if the event parameters exceed GA4's limits, or if the network request was blocked by an ad blocker or CSP header. After confirming tags fire in Preview, cross-check in the GA4 DebugView (Admin → DebugView) to verify the events are actually reaching the property.
For container-level correctness beyond what Preview shows — naming convention violations, redundant variables, consent mode gaps, tags that should never fire — an automated audit catches the patterns that manual Preview inspection misses. Understanding GTM workspaces is also important context, since Preview always runs against the currently selected workspace — switching workspaces without re-entering Preview means you may be debugging the wrong set of changes.
Summary
- Preview mode runs the unsaved workspace draft in your browser only — save before entering Preview
- Tags Fired / Not Fired / Paused + the "why it didn't fire" detail is the fastest tag debugging path
- Variables panel reveals undefined returns before a tag fires, not after
- Data Layer panel is the ground truth for whether pushes arrived and in what shape
- Share preview links with teammates — they expire when you close your session
- Always check Consent Initialization fires before Page View in any Consent Mode v2 setup
- Preview confirms firing; GA4 DebugView confirms receipt — you need both
Free GTM audit
NiceLookingData's automated GTM audit runs 44 checks across your container — catching trigger conflicts, orphaned tags, consent mode gaps, naming violations, and variable misconfigurations that Preview mode alone won't surface.
Run the GTM audit free →Analytics consultant turned founder. After years running the same GA4 and GTM audits across client engagements, Ludde built the audit into a product — so the pattern-matching takes a minute, not a meeting. More about Ludde →
Check your GTM container.
Upload your GTM export or connect live. Our auditor checks 44 best practices and gives you actionable fixes.
