GTM debugging
DataLayer inspector
Browser session capture
The tool opens the page in a headless Chromium session and records the cookies, requests, tags, and dataLayer activity visible during that run.
Scoped rule set
Each tool applies a narrow ruleset to the captured session. It is useful for implementation QA, not a full-site crawl or legal determination.
Point-in-time report
Results show what was observed in that session, with severity labels and evidence. Re-run after changes or if your site varies by region or user state.
What we check
DataLayer pushes
Captures every dataLayer.push() call with full payload, in order, with timestamps.
GTM initialization order
Verifies that dataLayer is declared before the GTM snippet loads, not after.
E-commerce schema validation
Validates purchase, add_to_cart, view_item, and other e-commerce events against the GA4 spec.
Duplicate event detection
Flags repeated events that inflate your GA4 metrics, like double page_view or purchase fires.
How to read results
Events are shown chronologically. E-commerce fields are validated against the GA4 spec with missing fields highlighted.
Common issues we find
dataLayer initialized after GTM
The GTM snippet fires before window.dataLayer is declared, causing early pushes to be lost. Fix: declare dataLayer = [] above the GTM snippet.
Purchase event missing transaction_id
Without transaction_id, GA4 can't deduplicate purchases, leading to inflated revenue. Fix: always include a unique transaction_id in purchase events.
Duplicate events inflating metrics
Same event pushed twice due to SPA re-renders or duplicate GTM triggers. Fix: add event deduplication logic or use GTM trigger groups.