Flagship tool

The GA4 tag debugger

Watch analytics hits fire in real time as you browse, record the flow once, then let Tagfire replay it on a schedule and email your team with screenshots the moment something breaks.

  • Real-time hit capture
  • Record & replay
  • Scheduled monitoring
  • Visual regression
app.tagfire.io/app/tools/live-debugger
  • page_view · /products/running-shoe200
  • view_item · items[1], value 129.00, currency USD200
  • add_to_cart · items[1], value 129.00200
  • begin_checkout · items[1], value 129.00200
  • purchase · transaction_id MISSINGASSERT FAIL
en=purchase&tid=G-XXXXXXX&cid=1093...&gcs=G111
epn.value=129&ep.currency=USD&pr1=id~SHOE-42~qt~1
// expected: ep.transaction_id  →  not present
5
Events captured
4
Assertions passed
1
Assertion failed
0.4%
Visual diff
Live hit capture during a checkout journey: each GA4 event as it fires, with its parameters and assertion result.

In short

What is a GA4 tag debugger?

A GA4 tag debugger captures the analytics requests a page sends as you browse — event names, parameters, consent state, and the dataLayer pushes behind them — so you can confirm tags fire correctly instead of waiting for GA4 reports. Tagfire adds recording and scheduled replay, so the same journey is re-tested automatically and alerts you when it breaks.

Capture modes
Browser extension or in-app headless browser
Covers
GA4, GTM, dataLayer, Measurement Protocol
Recording
Record a journey, replay it any time
Monitoring
Scheduled replays with email alerts
Visual regression
Screenshot diff against a baseline
Price
Free to debug and record

How the tag debugger works

Three tabs: Inspect for live debugging, Recordings for saved journeys, Monitors for automation.

  1. 01

    Inspect a live session

    Browse your site with the Tagfire browser extension, or drive an in-app headless browser from the Inspect tab. Every GA4 hit, GTM tag, and dataLayer push appears as it happens, decoded into readable parameters.

  2. 02

    Record the journey

    Capture the clicks and inputs of a real flow — product page to purchase, say — and save it as a recording. Then declare expectations: the events that must fire on replay, with parameter conditions such as value greater than 0 and currency equal to USD.

  3. 03

    Put it on a schedule

    Group recordings into a monitor with a frequency, recipients, and a visual-diff threshold. Tagfire replays them in a headless browser, checks every expectation, screenshots the final page, and emails a digest when anything fails.

Guide

From debugging one hit to knowing tracking still works tomorrow

Every analytics team has the same story. A release goes out on a Tuesday. On the following Monday someone notices conversions look low. By the time anyone traces it back to a renamed CSS class that broke a GTM click trigger, six days of purchase data are gone and cannot be recovered.

The tools most teams use — GA4 DebugView, GTM Preview, the network tab — are all manual and momentary. They tell you tracking works right now, in your browser, while you are looking. They cannot tell you it still works next Tuesday. Closing that gap is the whole point of this tool.

Inspect: what live capture actually shows

The Inspect tab captures the analytics traffic a page produces and decodes it as it arrives. For each hit you see the event name, every parameter (including the ep. and epn. custom parameters that are unreadable in raw form), the measurement ID it was sent to, the consent state carried in gcs, and the dataLayer push that triggered it.

You can capture in two ways. The browser extension hooks your own browser, so you debug the real site in your real session with your real consent choices. The in-app headless browser drives a clean Chromium instance from Tagfire, which is the right choice when you want a first-visit state with no cookies, or when you are debugging a site on a machine where you cannot install anything.

  • Confirm an event fires at all, and only once — duplicate purchase hits are the most expensive bug in ecommerce tracking
  • Read consent flags on a hit to see whether your CMP is actually gating measurement
  • Catch parameters that arrive empty or as the literal string undefined
  • See the order events fire in, which is how you find a purchase that beats its own begin_checkout
  • Watch server-side hits alongside browser hits in a hybrid setup

Recordings: turning a manual check into a repeatable one

Debugging one journey by hand is fine. Debugging it again after every release is not — which is why nobody does it. A recording captures the steps of a flow once (the clicks, the form inputs, the navigation) and stores them so the same journey can be driven again on demand.

What makes a recording useful rather than just repeatable is its expectations. An expectation says which GA4 events must fire during that journey and, optionally, what has to be true about their parameters — a purchase with a value above zero, a currency of USD, a non-empty transaction_id. After any replay, captured hits are checked against those expectations and you get a pass or fail per assertion, not a wall of raw requests to read.

This is the step that converts tribal knowledge into something a team owns. The person who knows that the checkout only fires add_to_cart correctly when a size is selected first can encode that, once, and it stays true after they leave.

Monitors: the part that runs without you

A monitor groups several recordings for one site into a single scheduled check. It owns the schedule (hourly, daily, or weekly), the list of email recipients, and the visual-regression settings. On each run, Tagfire replays every recording server-side in headless Chromium, evaluates its expectations, captures a full-page screenshot, and pixel-diffs that screenshot against the accepted baseline.

A recording fails if an expectation fails, a step fails, or the visual diff exceeds the threshold you set. Any failure sends one digest email to all recipients, with the failing assertions and the screenshots attached. Every run is kept as history, so you can see exactly which run a regression appeared in.

The visual diff matters more than it first appears. Analytics assertions catch tags that stopped firing; they cannot catch a checkout button that moved behind a cookie banner, because the tag still fires when the test clicks the element directly. The screenshot comparison catches the class of breakage where tracking is technically fine and the page is not.

Keeping synthetic traffic out of your reports

Replays drive real tags, which means they generate real hits. Tagfire sends a distinctive User-Agent containing a TagfireMonitor token from the headless browser, so you can exclude monitor traffic with a GA4 internal-traffic filter or a GTM exception regardless of who owns the property. Where you control the property, you can additionally filter the service static outbound IPs. Set this up before your first scheduled run, not after.

Where this fits against DebugView and GTM Preview

Use Tagfire for

  • Verifying a flow end to end, not one page at a time
  • Re-testing the same journey after every release
  • Knowing within an hour that a tag stopped firing
  • Catching layout breaks that assertions cannot see
  • Debugging a site you cannot install an extension on
  • Handing a client evidence that tracking works

Use DebugView / GTM Preview for

  • Confirming GA4 accepted and processed a hit
  • Iterating on a trigger you are actively building
  • Checking GTM variable values mid-build
  • Anything requiring GA4-side processing detail

They are complementary. GTM Preview is a build-time tool — it is where you develop a tag. This is a verification and monitoring tool — it is where you prove the tag still works months later, without anyone remembering to check.

What to monitor first

  1. The purchase or lead journey

    The one flow whose data the business actually acts on. If you only ever create one monitor, make it this one, and assert on transaction_id, value, and currency.

  2. Consent accept and consent reject

    Record the journey twice: once accepting the banner, once rejecting it. The reject path is the one nobody tests, and it is where compliance problems and data loss both hide.

  3. The main form submission

    Form success events break constantly, because form markup changes constantly. Assert that the success event fires and that the page reaching it is the confirmation page, not a validation error.

  4. A key landing page from paid traffic

    Assert on campaign parameters surviving the landing. This is how you catch a redirect that strips gclid or your UTMs — see the UTM builder for keeping those links consistent in the first place.

Comparison

Tagfire vs. the alternatives

How a monitoring-capable tag debugger compares to the manual tools most teams use today.

CapabilityTagfireGA4 DebugViewGTM Preview
Live hit capture while browsingYesYesYes
Works without a debug cookieYesNoNo
Record a journey and replay itYesNoNo
Assertions on event parametersYesNoNo
Runs on a schedule, unattendedYesNoNo
Email alerts on failureYesNoNo
Screenshot visual regressionYesNoNo
Headless browser, no extension neededYesNoNo
Shows GA4-side processing detailNoYesNo
Live GTM variable inspectionPartlyNoYes

Debugging and recording are free. Scheduled monitors, replay, and visual regression are part of the paid plans.

FAQ

Frequently asked questions

Stop finding out about broken tags a week late

Debug live hits, record the journey once, and let scheduled monitors tell you the moment it breaks — with screenshots.

Start debugging free