Preview mode is the only way to see what your tags are actually doing, which is why it failing is disproportionately annoying. You cannot debug the thing you use to debug.
The failures look identical from the outside — a spinner, a timeout, or “no tags found” — and have very different causes. Here they are in the order worth checking.
First, understand what has to work
Preview is not a mode inside your site. It is a three-way handshake:
- Your browser opens
tagassistant.google.com - That page opens your site with a
gtm_debugURL parameter appended - Your site’s container sees the parameter, opens a connection back to Tag Assistant, and streams events
Break any leg and preview fails. Almost every cause below is one of those three legs being severed.
The checklist, ordered by likelihood
1. Check the container ID in the debug panel. Top left of the Tag Assistant window. If it is not the container installed on your site, nothing else matters. Previewing the wrong container or the wrong workspace is the most common cause and the least suspected.
2. Try incognito with extensions disabled. This single step isolates a large share of cases. Ad blockers, privacy extensions, and other tag-related extensions all interfere. If preview works in incognito, you have an extension problem, not a site problem.
3. Check third-party cookies. The handshake needs cookies for tagassistant.google.com. Browsers blocking third-party cookies by default — and stricter privacy settings — break it. Allow cookies for that domain specifically.
4. Accept your own cookie banner. If your consent platform blocks scripts before acceptance, the container may never load during preview. Accept, then reload with preview active.
5. Look for CSP violations in the console. A strict Content Security Policy can block the preview scripts and the connection to Tag Assistant while leaving normal container operation intact. The browser console names the blocked source, which makes this fast to confirm.
6. Check whether gtm_debug survives. Look at the address bar after preview opens your site. If the parameter is gone, something stripped it — a security rule, a redirect, a URL rewrite, or an SPA router. This is the classic reason preview works on staging and fails on production.
7. Clear cookies for tagassistant.google.com, close all browser windows, restart. A stale session is a real cause and this genuinely resolves it.
| Symptom | Most likely cause |
|---|---|
| ”No tags found” | wrong container or workspace |
| Connects, then drops | third-party cookies blocked |
| Never connects at all | extension, or CSP blocking |
| Works on staging, fails on production | gtm_debug stripped, or CDN cache |
| Works for you, not a colleague | their extensions or cookie settings |
| Tags missing only before consent | CMP blocking scripts |
The production-only case, in more detail
If preview works everywhere except production, stop testing tags and start looking at infrastructure. Production typically carries a CDN, full-page caching, a stricter CSP, a consent platform, and WAF rules that strip unknown query parameters for security.
That last one is the usual culprit, and it is worth stating plainly: gtm_debug is exactly the kind of unknown parameter a security rule is designed to remove. The rule is doing its job. It just also breaks your debugger.
Fixing it means allowlisting the parameter, which is a conversation with whoever owns the CDN or WAF config rather than anything you can change in GTM.
When you cannot fix it, debug anyway
Preview is convenient, not essential. If you are blocked and need to ship:
- GA4 DebugView with the Google Analytics Debugger extension sets the debug flag without the GTM handshake.
- Read the dataLayer in the console. Type
dataLayerand inspect. If your events are not there, the problem is upstream of GTM entirely — worth knowing early. - Watch the network tab and filter for
collect. Outgoing requests to Google’s endpoints prove tags fired, even with no debug UI.
The habit worth building: when preview fails, spend two minutes deciding whether the problem is your container or your connection to Tag Assistant. They are unrelated, and confusing them is how an afternoon disappears into a tagging problem that never existed.
This one is entirely outside what our extension does. GA4 Simple View reads the GA4 Data API and never touches containers, tags or the dataLayer — there is no version of this problem it helps with, and we would rather say so than invent a connection.
If your tags are firing and you want a faster way to read the resulting numbers, that part we do. The tagging itself is GTM’s job.
Questions people also ask
Each answer stands on its own, so it still makes sense quoted somewhere else.
Why does GTM Preview mode say no tags found?
Most often the container is not actually present on the page you loaded, you are previewing a different container or workspace than the one installed, or the debug connection never established. Check the container ID shown in the debug panel matches the one in your site source before investigating anything else.
Why does GTM Preview keep timing out or disconnecting?
The connection depends on third-party cookies for tagassistant.google.com and on the gtm_debug URL parameter surviving. Browser cookie blocking, privacy extensions, aggressive caching layers and servers that strip unknown query parameters all break it. Testing in an incognito window with extensions disabled isolates most of these.
Does a cookie consent banner break GTM Preview mode?
It can. If your consent platform blocks scripts before the visitor accepts, the GTM container may not load at all during preview, so no tags appear. Accepting cookies on the preview session, or temporarily configuring the CMP to allow the debug session, usually confirms whether that is the cause.
Can Content Security Policy block GTM Preview?
Yes. Preview loads additional scripts and opens a connection to tagassistant.google.com. A strict CSP that does not allow those sources will block the debug session while your normal container may still work. The browser console will show the CSP violation, which makes this one quick to confirm.
Why does GTM Preview work on my staging site but not production?
Production usually has layers staging does not: a CDN, page caching, a stricter CSP, a consent platform and security rules that strip unknown URL parameters. The gtm_debug parameter is exactly the kind of unknown parameter such rules remove, which severs the debug connection.
Is there an alternative if GTM Preview will not connect?
Yes. GA4 DebugView still works if you install the Google Analytics Debugger extension, which sets the debug flag without needing the GTM handshake. You can also read the dataLayer directly in the browser console, or inspect the network tab for outgoing collect requests to confirm tags are firing.