AuditTag

GA4 audit: how to check your setup is actually right

By Sam ParkinsonUpdated 18 September 202610 min read

The short answer: a GA4 audit has two halves. The property settings that silently shape every report (retention, filters, referrals, key events), and the implementation: whether events fire once, on the right pages, with the right values.

Most GA4 setups we see were configured once, at launch, and never checked again. The settings half takes twenty minutes and is where the easy wins are.

GA4 will happily collect wrong data forever. It does not warn you that a purchase is missing its currency, that a payment gateway is stealing your attribution, or that the same tag is installed twice. Here is how to check.

Part 1: property settings

Data retention

Admin › Data collection and modification › Data retention. Standard properties default to 2 months of event-level data. Unless you have a reason not to, set it to 14 months so Explorations can compare this year to last. It only applies from the day you change it.

Internal traffic

Your own team's visits, test orders included, inflate every number. Define internal traffic under the data stream's tag settings, then go to Admin › Data filters and check the internal traffic filter is Active. New filters start in "Testing", where they only label data and exclude nothing, and many properties are left there by accident.

Unwanted referrals

If a shopper leaves your site to pay (PayPal, a bank's 3-D Secure page, a buy-now-pay-later provider) and comes back, GA4 can start a new session credited to that payment provider, stealing the purchase from the ad or email that earned it. Check Acquisition reports for payment providers appearing as referral sources. If they do, add them under the data stream's Configure tag settings › List unwanted referrals.

Cross-domain measurement

If the journey spans more than one domain you control (a separate checkout or booking domain), those domains need to be listed under Configure your domains, or every crossing starts a new session and attribution breaks at the most important moment.

Key events

GA4 calls its conversions key events. Check that purchase is marked as one, and that nothing trivial is (a scroll, a page view), because anything imported into Google Ads as a conversion from here can be optimised towards.

Currency and timezone

The property's reporting currency and timezone should match how the business counts money and days. A mismatched timezone makes every daily reconciliation look wrong by a few orders at each end.

Not sure GA4 is even installed where you think it is? The free AuditTag audit detects GA4, Tag Manager and leftover Universal Analytics on your public pages. Run a free audit →

Part 2: implementation

Is GA4 installed exactly once?

Search the page source and the Network tab for your G- measurement ID. Then check every route it could arrive by: a hardcoded snippet, a Tag Manager tag, a platform integration, a plugin. Two installs of the same measurement ID double every page view and every purchase. On Shopify specifically, Shopify warns that adding GA4 through Tag Manager on top of its Google & YouTube integration can duplicate tracking.

Do the ecommerce events fire, in order?

Open DebugView (enable debug mode with Tag Assistant or the Google Analytics Debugger extension), then walk a full purchase. You should see Google's recommended ecommerce sequence, or as much of it as you implement:

view_itemadd_to_cartbegin_checkoutadd_shipping_infoadd_payment_infopurchase

If the sequence stops at begin_checkout, the purchase is not connected to the checkout. On Shopify that is almost always the cause: see GA4 purchase event not firing on Shopify.

Does the purchase carry the right parameters?

Click the purchase event in DebugView and read its parameters. It needs transaction_id, value (a number), currency (a three-letter code) and an items array. A missing currency is the most common reason revenue shows as £0 while purchases are counted. A missing transaction_id stops GA4 removing duplicates.

Does refreshing the confirmation page send it again?

Reload the order confirmation page and watch DebugView. A second purchase with the same transaction_id is de-duplicated by GA4 in reporting; a second purchase without one is counted.

What does consent do?

Repeat the test in a private window without accepting the cookie banner. If you use Consent Mode, GA4 should still receive cookieless pings; if you do not, it should receive nothing until consent. Whichever you intend, confirm it is what actually happens.

Part 3: read the reports for symptoms

Symptom in GA4Likely cause
Purchases counted, revenue £0Missing or malformed currency or value
Revenue higher than the store tookDuplicate install, or purchase re-sent without transaction_id
Payment providers in referral trafficUnwanted referrals not configured
Large "(not set)" landing page shareEvents firing before page_view, or broken sessions across domains
High "Unassigned" channel shareMissing or malformed UTM parameters, or events without session source
Items reports empty, totals fineitems array missing or malformed
Everything dropped on one dateSomething was deployed that day: theme, app, consent banner, container publish

How AuditTag handles it

What AuditTag checks

  • Whether GA4 and Tag Manager are detectable on your public pages
  • Universal Analytics still installed with no GA4 alongside it
  • No analytics detectable at all
  • Captured GA4 ecommerce dataLayer events against a schema: numeric value, ISO currency, transaction_id on purchases, non-empty items (Guardrails)

What this doesn't prove

AuditTag does not log into your GA4 property, so it cannot see retention, filters, referral exclusions or key-event settings: Part 1 is yours to check. Detecting a GA4 tag also doesn't prove the purchase fires in checkout. A DebugView test order is the proof.

Check what's installed before you debug it

The free audit reads your public pages and tells you which tracking is detectable, including duplicate-prone setups and leftover Universal Analytics, in about a minute. No account, nothing installed.

Run a free audit →

Questions people ask

How do I check if GA4 is working?

Open GA4 Realtime or DebugView, then load a page and complete an action on your site. If page_view and your events appear within a minute, GA4 is receiving data. That proves collection works, not that it is correct: you still need to check the purchase event's value, currency and transaction_id, and look for duplicate installs.

Why does GA4 show less revenue than my store?

Usually because the purchase event does not fire reliably at checkout, is missing value or currency, or is blocked by consent or ad blockers. A small, stable gap is expected. A large or sudden gap, or zero revenue, is a tracking fault. Reconcile a closed week in the same timezone, allowing for GA4's processing delay of up to 48 hours.

What does (not set) mean in GA4?

It means GA4 received an event without the information needed to fill that dimension. For landing pages it often means sessions that began with an event other than page_view, or sessions that timed out and restarted. A small share is normal. A large or growing share points at tags firing out of order or at session breaks, often caused by cross-domain journeys or payment redirects.

Should I change GA4 data retention?

Usually yes. Standard GA4 properties keep event-level data for two months by default. Setting it to 14 months keeps year-on-year comparisons possible in Explorations. It does not affect standard reports, only event-level analysis, and it only applies going forward.

More tracking guides