GTM Container Not Detected
Updated
Either the container on the live page is not the one you edited, or the version with your change was never published. Confirm the GTM ID on the final destination, check that the change is in the live version, then rule out consent, script blocking and hostname rules.
A practical checklist for when Google Tag Manager is expected but not visible on the page being tested.
The key question is whether the correct published container is present on the actual destination. From there, check consent, hostname/environment rules and whether another redirect sends traffic away from the page where GTM was installed.
What to check
1. Verify the container ID
Confirm the GTM-XXXX ID in production matches the container you are reviewing.
2. Confirm the container is published
A workspace change or preview session does not mean the production site has the same version.
3. Check the final destination
The campaign may redirect away from the page where the GTM snippet was installed.
4. Check consent and script controls
Consent platforms, CSP rules and blockers can alter whether GTM loads during the observation window.
5. Check hostname and environment logic
Some implementations intentionally load GTM only on selected hosts, environments or page types.
6. Look for multiple containers
Multiple GTM containers may be intentional, but they can also indicate old or duplicate implementations that complicate debugging.
What you see and what it usually means
No request to gtm.js
The container snippet is missing from this page, or something blocks it before it runs. Compare the page source with a page where GTM is known to work.
gtm.js loads with another GTM- ID
The site runs a different container from the one you are editing. Your changes are being published somewhere this page never loads.
The container loads, your new tag does not
The container is fine. Either the published version does not include the change, or the trigger does not match this page. Check which version is live in GTM.
It loads on the homepage but not on the landing page
The snippet lives in a template the landing page does not use. This is common with page builders, checkout pages and subdomains.
A typical case
A team adds a conversion tag in GTM-AAAA and publishes it. On the live landing page nothing happens, and Tag Assistant cannot connect. The page source shows GTM-BBBB, a container created years ago by a previous agency. The tag was built in a container the site does not load, and the fix is to move it to the one it does.
Before you call it fixed
- Expected GTM ID confirmed
- Published version confirmed
- Correct final page tested
- Consent/script restrictions reviewed
- Hostname rules checked
- Duplicate containers reviewed
Check the production URL
A correct configuration on paper can still fail after redirects, deployment or consent logic. Use the exact URL your campaign will send traffic to.
Check a campaign URLVerify the signal directly
Related troubleshooting guides
Common questions
Where should the GTM snippet be placed?
Google’s instructions put the script as high in the head as possible and the noscript part immediately after the opening body tag. A snippet placed late can miss early events but is still detected.
Can GTM load from my own domain?
Yes. With server-side tagging, gtm.js can be served from a subdomain of your site instead of googletagmanager.com. A check that only looks for Google’s domain can miss it.
Can a Content Security Policy block GTM?
Yes. If the policy does not allow scripts from googletagmanager.com, the browser refuses to load the container and reports the violation in the console.
Scan the full campaign route.
See where the click lands, what survives the redirect chain and which supported tracking signals are visible on the final page.