GTM Debugging
DataLayer Inspector
Paste your URL below. We'll hook into window.dataLayer before any tags load, capture every push event, and validate e-commerce schemas against GA4 specs.
Real browser scan
We launch a headless Chromium browser and load your page exactly like a real visitor would.
Instant analysis
Every network request, cookie, and dataLayer push is intercepted and analyzed in real-time.
Actionable findings
Get severity-scored results with specific fix instructions. Share the report via a unique link.
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.