Guide

GTM loads but no tags fire

container.js returns 200 and nothing in the container ever runs. How to tell a dead container from a consent block, with steps you can run today.

Last reviewed September 2026.

A 200 on the container is not a firing tag

gtm.js returning 200 means the browser fetched the container. It does not mean any tag inside it ran. Agencies lose weeks here because the theme “has GTM” and the vendor dashboards stay quiet.

1. Confirm the container actually arrived

Filter the network panel for your container ID. A blocked request, a 404, or a file that never executes (injected into a comment, or after a JS error that stops the parser) is a different problem from a live container with dead tags.

2. Preview on the silent page type

Preview mode on the homepage will not show a product-only trigger. Load the page type that should fire. If preview shows the tag as “not fired”, read the trigger: a missingdataLayer event, a Page Path that no longer matches after a theme change, or a consent check that never becomes granted.

3. Consent versus a dead tag

After a banner change, every tag can sit behind a consent state that never resolves. The container still loads. Nothing collects.Consent mode blocking analytics.

4. Prove it with the vendor request

Ignore GTM’s own requests. Look for the vendor collect endpoint. That is the same two-observation rule as a scan: library (or container) plus collection.How to tell if a pixel is working.

If you manage many stores, a homepage-only check will miss this every time. Four page types is the minimum. How Trace watches a portfolio.

Confirm it with a scan

Four page types, a real browser, no account. A scan will not fix the tag. It will tell you whether it is firing now.

Scan a store

All guides · How the scanner works · Watch the store