Hunor.digital
← All writing
GA4 · Tracking

How to check if your GA4 tracking actually works

GTM preview is a rehearsal, not proof. The three-layer verification I run on every audit: network requests, DebugView, and reconciling against your real order count.

Lázár HunorDigital Fixer
The short answer

Verify GA4 tracking in three layers: watch real network requests to google-analytics.com/g/collect in the browser's network tab, confirm events and parameters in GA4 DebugView, then reconcile purchase counts against your shop or CRM for the same date range. GTM preview alone proves nothing, because it runs with consent granted and no ad blocker.

The most expensive sentence in analytics is "we set that up already." Setups are claims. Verification is evidence. And the standard verification most teams do, clicking through GTM preview mode and seeing green checkmarks, is not evidence of anything except that the tag can fire in ideal conditions for a logged-in employee with consent granted and no ad blocker.

Your customers do not browse in ideal conditions. Here is the procedure I actually run, in order, on every audit.

Layer 1: watch the network, not the tool

Open your site in a normal browser window, open developer tools, go to the network tab, and filter for collect. GA4 hits go to an endpoint containing /g/collect. Now do the thing you want measured: load a page, add to cart, buy something on staging if you have it.

You are checking four things:

This takes ten minutes and finds more real problems than any other single check I know.

Layer 2: DebugView, for the parameter detail

GA4's DebugView (Admin, then DebugView) shows events arriving in near real time with their full parameter payloads, either from a device with debug mode enabled or while GTM preview is connected. Use it to confirm the parameters GA4 actually received, not just what the browser sent: mistyped parameter names and unregistered custom dimensions show up here as missing or ignored values.

One warning. DebugView shows your test device. It says nothing about whether real users' events arrive. That is what layers one and three are for.

Layer 3: reconcile against a source of truth

Pick last full week. Count purchases in GA4. Count orders in Shopify, WooCommerce, your backend, wherever the money actually landed. Compare.

There will be a gap. There is always a gap: ad blockers, declined consent, browser privacy features, and people who bought before your last fix all live in it. The point is not zero gap. The point is that you know the number. A stable gap in the low range is measurement reality. A gap that jumped after a release is a bug with a date attached. A gap nobody has ever measured is a business running on hope.

Do not skip this because it is unglamorous. It is the only check that catches problems in the majority of traffic you never personally test: other devices, other browsers, other countries, other consent choices.

The consent-state test everyone skips

Run layer one twice more: once after declining the consent banner, once after accepting. With consent declined, check what still fires. Depending on your setup and whether Consent Mode is configured correctly, GA4 hits may legitimately continue in cookieless form or should stop entirely; what must not happen is business as usual with full identifiers. If declining changes nothing about your network traffic, your banner is furniture, and that is a compliance problem before it is a data problem. I wrote that failure mode up separately in what your consent banner isn't blocking.

When: after every release, not once

Tracking does not stay verified. Every deploy, redesign, new banner, and new plugin can break assumptions silently. The realistic cadence for a small team:

  1. Full three-layer check after any release touching templates, checkout, or the tag container.
  2. The reconciliation check monthly, on a calendar reminder, because it is the one that catches what you did not think to test.
  3. An event-list review quarterly, hunting duplicates and orphans.

If you run this once and find a mess larger than an afternoon can fix, that is the point where a structured audit makes sense: everything that fires, mapped against everything that should, with the fixes prioritized by money touched. That is literally the Clarity engagement I sell, and the reconciliation gap from layer three is how you will know whether it paid for itself.