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.

Enter the full page URL you want to scan. We'll load it in a real browser and analyze it live.

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.

Critical = Missing required fields or broken e-commerce tracking.Warning = Duplicate events or optional fields missing.Pass = Event schema matches GA4 spec correctly.

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.