free · no signup

Google Tag Manager checker

Check if Google Tag Manager is installed on a page, spot duplicate containers and hardcoded tags that double-count, then test tags in Preview mode.

Scans the page's HTML in seconds. It also reports every other tracking script it finds.

about Google Tag Manager

Why it breaks quietly.

Google Tag Manager is a container script, gtm.js, identified by a GTM- ID. It loads whatever tags you publish in the GTM interface, so one snippet can control GA4, ad pixels and anything else.

That indirection is why GTM problems hide. The container can load fine while the tags inside it never fire, fire on the wrong trigger, or wait on unpublished changes, and nothing in the page source tells you which.

what the free scan checks

✓

Whether Google Tag Manager is in the page

The scan fetches the page's HTML and matches the vendor's script URL and install snippet.

✓

Whether it blocks rendering

A script tag without async or defer delays the page from painting. Marketing scripts never need to.

✓

Whether it's installed more than once

Duplicate installs usually send every event twice and inflate conversions.

✓

Whether GTM and hardcoded tags overlap

Google Tag Manager next to a hardcoded GA4 or Meta Pixel is a double-counting risk if the same tag also fires inside GTM.

✓

How exposed the page is to blockers

A server-side readiness grade: whether tags load from domains blocklists target, and whether conversions have a server-side path.

It reads the HTML, so tags injected later (inside GTM, for example) don't show up, and it can't see events fire. That's what verification is for.

common failures

How Google Tag Manager goes dark.

✗

Changes were saved but never published

Work sits in a GTM workspace until someone submits and publishes a version. Preview mode shows it working, live visitors get the old container.

✗

Tags in GTM duplicate hardcoded tags

A Meta Pixel or GA4 tag is hardcoded in the theme and also configured in GTM. Both fire, and every event is counted twice.

✗

Two containers on one page

An agency container and an in-house container, or an old GTM ID nobody removed, both load. Tags can fire from either, and it is hard to tell which one owns what.

✗

Triggers that no longer match

A redesign renames a button class or changes a thank-you URL. The trigger stops matching and the conversion tag simply never fires again.

✗

Consent settings block tags

Tags configured to require consent wait for a signal from the consent banner. If the banner integration breaks, those tags never run.

by hand

Check it yourself, step by step.

  1. 1

    Click Preview in your GTM workspace, enter your URL and use Tag Assistant to see which tags fired and which did not on each page and event.

  2. 2

    In GTM, open Versions and confirm the live version contains the changes you expect.

  3. 3

    View the page source and search for GTM- to make sure there is exactly one container ID, and that it matches your workspace.

  4. 4

    Search the page source for gtag( and fbq( to find tags hardcoded outside GTM that may also fire inside it.

questions

Asked and answered.

Can this check tell me if the tags inside GTM are firing?+

No. A static HTML scan sees the GTM container snippet and any tags hardcoded next to it, and flags when a hardcoded GA4 or Meta tag could be double-counting. Tags GTM injects at runtime are invisible to it, and so is whether anything fires. TracerKit's Verification tier watches real fires per tag and alerts when one goes silent.

How do I check if Google Tag Manager is installed?+

Run the check above or search your page source for gtm.js and your GTM- ID. Tag Assistant will also show the container when it connects.

Why does it work in Preview but not live?+

Preview runs your current workspace. Live visitors get the last published version, so publish the workspace and test again.

check other tags

Know Google Tag Manager is firing, every hour of every day.

Verification watches each tag on real traffic and emails you the moment one goes silent. 14-day trial, no card.