Google Tag Manager makes it easy to add tags - and just as easy to break them. Here's how to actually check whether a site's GTM tracking works, not just whether the container is installed.
Most people "check" Google Tag Manager by confirming the container is installed and calling it done. That's the least useful thing you can verify. A container can be live while the tags inside it never fire, fire twice, fire before consent, or ship a purchase with no value. Below is the exact process a tracking auditor uses to check whether a site's GTM setup actually works - by hand, and then in seconds.
Start with presence, but treat it as step zero, not the answer. Three quick ways:
Open the page, view source (or DevTools → Elements) and search for GTM-. You should see the container ID like GTM-ABC1234 in both the <head> script and the <noscript> iframe. Only the head snippet in the body, or a missing noscript, is a red flag.
Google's tagassistant.google.com connects to the live page and lists every container and tag. It's the official tool and shows tags GTM intends to fire.
Extensions that list installed tags are fine for a 5-second sniff test - but remember they read the container config, not what actually happened on the wire.
This is the real check. Every tag that works makes a network request. If the request isn't there, the tag didn't fire - no matter what GTM says.
Open DevTools (F12 or Cmd+Opt+I) → Network tab → tick Preserve log → reload the page and click through it. Filter the request list by these signatures to see each platform:
Now trigger the important actions - add to cart, submit a form, complete a test purchase - and watch whether the matching request appears each time. A tag that fires on page load but not on the actual conversion is the single most common (and most expensive) failure.
A purchase event that fires but ships no value, currency or transaction ID is broken even though it "works". Click the request in the Network tab and inspect the Payload (query string or POST body). Minimum checks per platform:
If value is 0, currency is missing, or the transaction/event ID is absent, your reporting and ad-platform optimisation are running on bad data even though every dashboard shows "conversions".
In the EU, tags that fire before the visitor accepts cookies are a GDPR problem - and a data-quality one. With DevTools Network open, load the page but don't click the consent banner. If GA4, Meta or Ads requests already appear, tags are firing pre-consent. Then accept, and confirm they fire properly afterwards. Consent Mode v2 should move gcs from G100 (denied) to G111 (granted) once consent is given.
Doing all of this by hand, on every page and every funnel step, is slow and easy to get wrong. duckmetric opens the page in a real browser, watches every request across GA4, Google Ads, Meta, TikTok and more, and tells you in plain language which GTM tags fire, which duplicate, which fire before consent, and which carry broken data - with a severity ranking and a rough estimate of what the gaps cost your ad budget.
Open DevTools → Network, reload the page, and look for the platform's request (e.g. /g/collect for GA4, /tr/ for Meta). If the request appears when the action happens, the tag fired. If it doesn't, the tag isn't firing regardless of what the container shows.
Yes - everything in steps 1-4 works from the outside using only your browser's DevTools, because you're watching the requests the page makes in your own browser. You just can't open GTM Preview mode without edit access to the container.
Preview shows what GTM intended to do - which tags matched their triggers. The Network tab shows what actually left the browser. A tag can fire in Preview but be blocked by consent, an ad blocker or an error before the request goes out, so you need both.
Usually a missing or non-unique transaction_id, a tag firing on more than the thank-you page, or a duplicate GA4 tag. Inspect the purchase request payload and confirm transaction_id, value and currency are present and unique per order.
No. The browser DevTools method needs nothing installed. duckmetric also runs the whole check from a URL with no signup for the free scan.
See also: GTM audit · how to track leads in GTM · how to monitor tracking before it breaks · detect server-side tracking
Paste a URL and see which tags actually fire - no signup.