Pixel and tag checks

How to check Google Tag Manager is installed and published

Google Tag Manager is installed if every page loads googletagmanager.com/gtm.js?id=GTM-… with your container ID. Whether it works is a second question: the tags you see in the GTM workspace only run on the site after you publish a version.

Skip the DevTools: the free scan loads your page in a real browser, accepts and rejects the cookie banner, and shows what the Google Tag Manager actually sent.

At a glance

Tag script
www.googletagmanager.com/gtm.js?id=GTM-XXXXXXX (or from your own domain with a Google tag gateway or server-side GTM)
Google tag
gtag/js?id=G-… or AW-… when installed without GTM
Container ID
GTM- followed by 7 or 8 letters and digits
dataLayer
The window.dataLayer array: gtm.js, gtm.dom and gtm.load events show the container started
Consent
Consent tags belong on the Consent Initialization – All Pages trigger

Check it yourself in two minutes

  1. Open DevTools on the Network tab, filter on gtm.js and load a page. The request's id is the container ID. Repeat on the product page, cart, checkout and confirmation page: templates often differ.
  2. In the Console, type dataLayer. You should see {event: "gtm.js"} early in the list. Two gtm.js entries with different IDs mean two containers.
  3. In GTM, open Versions and compare the live version's date with your last change. Unpublished workspace changes do nothing on the site.
  4. Click Preview in GTM and enter your URL. Tag Assistant shows, per event, which tags fired and which did not, and why.

Why the Google Tag Manager breaks, and how to fix it

Changes made but never published

A tag that works in Preview but not on the live site is almost always unpublished. Preview runs your workspace; visitors get the last published version. Submit and publish, then check the version number in Tag Assistant's summary.

The snippet is missing on some pages

Checkout pages, landing page builders and separate templates (blog, help centre) often lack the container. Conversions on a hosted checkout's thank-you page then never fire. Check the snippet on each page type, and on Shopify, use the platform's customer events or the confirmation page settings, since checkout pages do not load the theme's code.

Two containers, or a container plus hard-coded tags

A second container left by an old agency, or gtag.js snippets next to GTM tags for the same IDs, double counts GA4 page views and Ads conversions. List every GTM-, G- and AW- ID on the page and make sure each is sent from one place.

Consent tags fire too late

A consent tool tag on "All Pages" or "Initialization" can run after a GA4 or Ads tag has already fired. Use the Consent Initialization trigger for the consent default, and turn on consent overview under Admin, then Container settings, to see each tag's consent requirements. See Consent Mode default is not set.

Blocked by the browser or the site

A Content Security Policy that does not allow googletagmanager.com blocks the container outright (the Console shows a CSP error). Ad blockers and privacy browsers block it for part of your visitors. Serving the tag from your own domain, through Google tag gateway or server-side GTM, reduces that loss.

What the free scan checks

  • The Google tag or a Tag Manager container loads, from Google or your own domain
  • Only one GTM container, or a note if there are several
  • A Consent Mode v2 default is set before any Google tag fires
  • Whether the tag is served first-party (Google tag gateway or server-side GTM)
  • Every ad platform the container loads actually sends events

Server-side events (Conversions APIs, server-side tagging) are invisible to a public scan, so the report never marks them as working or broken.

Related

Sources

Updated 2026-10-27. Based on the platforms' public documentation and the requests their public tags make; menus and names change, so check the linked pages if a step looks different.

Other platforms