Event Inspector
Every GA4 dataLayer push and gtag() call, live in a side panel —
kept across page reloads, and checked against the GA4 ecommerce spec
so you see which events are broken.
What it does
Hooks dataLayer and gtag with accessors at document_start. When GTM replaces push with its own function, capture keeps working — where naive inspectors go silent.
13 checks against the GA4 ecommerce spec: a transaction_id sent twice, missing value or currency, totals that don't add up, legacy item keys, double-fired triggers.
Open an event and the data is already laid out as key: value lines, items as compact boxes. Raw JSON stays one click away, with a Copy button.
Quick pills for every funnel step with live counts — a zero shows a gap at a glance. Plus payload search, a dataLayer / gtag split and a one-click problems filter.
Events are kept per tab, so you can fire one, reload the page and still review exactly what was sent. Dividers mark each page load.
No account, no tracking, no network requests. Three permissions, no host access. Dark and light themes, interface in 8 languages.
Screenshots
Changelog
Every version, newest first.
- Capture that survives Google Tag Manager. The hook now installs accessor properties at
document_start: when GTM replacesdataLayer.pushwith its own function, the replacement is wrapped too, so events keep arriving instead of stopping silently. Reassigningwindow.dataLayer, resetting it withlength = 0and nested pushes from Custom HTML tags are all handled, andgtag()calls are recorded once instead of twice. - It tells you what's broken. Every event is checked against the GA4 ecommerce spec — a
transaction_idsent twice (revenue counted twice),purchasewithouttransaction_id,valueorcurrency, avaluethat doesn't match the items total,valuewithoutcurrency, emptyitems, legacyid/namekeys, malformed currency codes, double-fired events and GA4 length limits. Problems are flagged in the feed and one click filters down to them. - The payload reads like a request body. Expanding an event now shows flat
key: valuelines with items as compact boxes — no digging through JSON. Raw JSON is a collapsed extra, with Copy. - Newest first. The feed is reversed: the current page and its latest event are always on top. Scrolled down to read something? Incoming events no longer move it.
- Quick filters for
purchase,add_to_cart,begin_checkout,view_item,view_item_listandremove_from_cartwith live counts — a zero count shows a gap in the funnel. Plus a Capture switch to pause the stream and an event counter badge on the toolbar icon. - Rebuilt interface — dark and light themes, and 8 languages: English, Українська, Русский, Español, Deutsch, Français, Português and 日本語.
- Fewer permissions, no leftovers. Dropped
scriptingand host permissions; events now live in per-tab session storage and are cleared with the tab or the browser. Writes are serialized, so bursts on page load no longer drop events.
- Live
dataLayerandgtagcapture in a Chrome side panel, persisted per tab across page reloads. - Event list with full JSON payload, source and name filters, page-load dividers and JSON export.
Try Event Inspector
Free, private, and no account needed. Add it to Chrome and see exactly what your GA4 tags are sending.
Add to Chrome →