Why GA4 purchases do not match your store orders

GA4 usually reports fewer purchases than your store. The common causes: consent, ad blockers, thank-you page issues and duplicate events.

T The CROMagnet team, Store audit research 2 min read Updated

Your store says 212 orders last week. GA4 says 171. Before you assume something is broken, know that some gap is normal, since analytics can only count visitors it is allowed to count. The question is whether your gap is the expected size, and if not, what is causing the rest.

Gaps you should expect

Consent. If you show a cookie banner and visitors decline analytics, GA4 does not record them, or records them with less detail. In regions with strict consent rules this can be a large share of traffic.

Ad blockers and browser privacy settings. Some block the Google tag entirely. This varies by audience: technical audiences block more.

Orders placed outside the browser. Phone orders, manual orders entered in the admin, and subscription renewals never fire a thank-you page event.

A gap of 10 to 25 percent for these reasons is common. Treat it as a stable difference you account for, not an error.

Gaps that point to a bug

The purchase event fires on the wrong page, or not on every route

If the event relies on visitors reaching the order confirmation page, any payment method that redirects elsewhere can skip it. PayPal and buy-now-pay-later options are the usual cases. Place a test order with each payment method you offer and check each one.

Duplicate events

The opposite problem: GA4 shows more purchases than orders. A page refresh on the thank-you page fires the event again unless GA4 de-duplicates by transaction ID. Make sure each purchase event sends a unique transaction_id.

Two tags counting the same sale

An app that adds its own GA4 snippet, plus a manual one in the theme, plus Google Tag Manager, can fire everything twice. Look at the network requests on a test purchase. You should see one purchase hit.

Tracking stops after a theme or app change

A theme update can remove code added by hand to the theme files. If the gap suddenly widened on a date, check what changed on that date.

How to test properly

  1. Open GA4 DebugView, or the Google Tag Assistant.
  2. Place a real test order through each payment route.
  3. Confirm that exactly one purchase event arrives, with the right value, currency and transaction ID.
  4. Compare the transaction ID with the order number in your admin.

Decide which number to trust

For revenue, trust your store. Use GA4 for the shape of behaviour: which channels bring buyers, which pages precede purchase. Where numbers drive spending decisions, a consistent, tested setup beats a perfect one that nobody has verified.

An audit can read your pages, detect which tags are loaded, flag duplicates and confirm that a purchase tag is present, so you know where to start looking.

Check your own store

Run the audit on your store

200+ checks in under two minutes. Free, no signup.