Verify Your Tracking Works

Confirm data is genuinely reaching Analytics — and why a healthy-looking tag container doesn't prove it.

Tracking can look completely healthy and be sending nothing. Google Tag Manager will report your container as excellent while every tag is silently withheld. This article is how you actually confirm data is arriving.

⚠️ Warning: “Container quality: Excellent” in Tag Manager means your container is well-formed. It says nothing about whether Analytics is receiving anything.

The 60-second check

The most reliable test, and it needs no tools.

  1. Open your storefront in Chrome.
  2. Accept the cookie banner if one appears.
  3. Open the console — ⌘ + ⌥ + J on Mac, Ctrl + Shift + J on Windows.
  4. Paste this and press Enter:
performance.getEntriesByType('resource')
  .map(r => r.name)
  .filter(u => u.includes('/g/collect'))

A list of URLs means Analytics is receiving data. An empty list [] means nothing is being sent.

💡 Tip: These requests go to Google rather than your own site, so they don’t appear in the browser’s Network tab under your domain. performance sees them regardless — which is why this check works when others seem to show nothing.

📸 Screenshot placeholder: Browser console showing the command and a list of collect URLs.

Confirming in-site navigation counts

Your storefront loads pages instantly without a full refresh, which means pageviews have to be reported deliberately. Confirm they are:

  1. Land on the homepage and run the command — note how many results mention en=page_view
  2. Click through to a category or product page
  3. Run it again

The count must increase. If it doesn’t, only the first page of each visit is being counted.

Confirming purchases

The one that matters most, and the one worth testing deliberately.

  1. Place a test order, or open the confirmation page of a recent real one
  2. On the confirmation page, open the console and run:
window.dataLayer.filter(e => e.event === 'purchase')
  1. Check the result — you want an object with an ecommerce block containing a value matching what was charged

⚠️ Warning: If value shows as NaN, null, or 0 on a real order, Analytics will discard the purchase entirely. Revenue reporting silently stays empty. Contact support with a screenshot.

Confirming in Analytics itself

Realtime — open Reports → Realtime in Analytics, then browse your storefront in another tab. You should appear within seconds. This is the fastest end-to-end confirmation.

Purchases — place or wait for an order, then check Realtime for a purchase event, and confirm revenue in the monetization reports the next day.

ℹ️ Note: Standard reports lag by up to 24–48 hours. Realtime is the correct place to check something you just changed. Google Ads conversions lag further — allow a full day.

📸 Screenshot placeholder: GA4 Realtime showing active users and an event list.

Reading Tag Manager Preview correctly

Preview mode is genuinely useful, but easy to misread — it has misled experienced people into hours of wrong conclusions.

It shows tags for the selected event only. Clicking an event in the left-hand list shows what fired for that event. A tag that fires on page load will show as “not fired” when you’re looking at a later event. That’s normal.

“Tags Blocked by Consent Settings” is its own section. If you see it, those tags were withheld because the visitor hadn’t consented — not because anything is broken.

Everything before you clicked Accept is blocked by design. Accept the banner first, then browse, then read.

💡 Tip: When in doubt, trust the console check over Preview. It shows what actually left the browser.

Troubleshooting

Symptom Likely cause
Empty list from the console check Tracking not provisioned, or an ad blocker is running — try a private window
Pageviews don’t increase on navigation Container is out of date — re-provision GTM
Events appear, purchases don’t Buyers aren’t consenting, or the purchase event isn’t firing — use the purchase check above
Nothing in Realtime but the console shows hits Wrong Analytics property open
Worked before, stopped A container change was published by hand — re-provision to restore

💡 Tip: Run the 60-second check after any change to consent settings, pixel IDs, or a re-provision. It takes less time than reading a report that turns out to be empty.

Next: Unlock Your Data in GA4

← PreviousTraffic Sources & AttributionNext →Unlock Your Data in GA4