Insight

Why GA4 and Shopify report different revenue

They will never match exactly, and chasing a perfect match wastes weeks. What matters is knowing which gap is normal, which is a bug, and which number to run the business on.

Almost every store owner notices this eventually: Google Analytics 4 says one revenue figure, Shopify says another, and Google Ads says a third. The instinct is to assume something is broken. Usually several small things are, and some of the gap is simply correct.

How big a gap is normal?

In a healthy setup, GA4 typically reports somewhere between 90% and 99% of what your store platform records. A consistent shortfall in that range is expected and not worth fixing. Below roughly 90%, or a gap that moves around week to week, means something is actually wrong.

The direction matters as much as the size. GA4 under-reporting is normal. GA4 over-reporting is always a bug — usually a purchase event firing more than once.

What causes the gap

In rough order of how much damage each one does:

  • Consent and ad blockers. If a visitor declines analytics cookies or runs a blocker, the browser never sends the purchase event, but the order still lands in Shopify. This is the single largest cause in most accounts and it is not a fault — it is the visitor's choice working as intended.
  • Payment redirects. PayPal, some UPI flows and certain hosted gateways bounce the customer to another domain and back. If the return journey is mishandled, the session breaks and the purchase is attributed to a referral, or lost.
  • Thank-you page refreshes. A customer reloading the confirmation page fires the purchase event twice unless it is de-duplicated on transaction ID. This is the usual cause of GA4 reporting more than Shopify.
  • Tax and shipping. Shopify's reports and GA4's revenue field often include different components. A stable few-percent difference is frequently just this.
  • Refunds and cancellations. Shopify nets them off. GA4 only does if you send refund events, which most setups never implement.
  • Timezone boundaries. If the GA4 property and the store are on different timezones, daily figures will never agree even when the monthly total does.

How do I work out which one it is?

Compare a single day rather than a month, and compare order counts before revenue. Order counts isolate tracking problems; revenue mixes in tax, shipping and refunds, so it tells you less.

Then take five specific orders from your store admin and search GA4's reports for those transaction IDs. Missing IDs point to consent, blockers or a broken payment return. Duplicated IDs point to a de-duplication problem. IDs present with the wrong value point to tax or currency configuration. Three or four orders is usually enough to tell which pattern you have.

Which number should I actually use?

Your store platform, every time. It is the system that took the money, it reconciles against your payment processor, and it is the number your accountant will use.

One caveat worth naming: if GA4 is under-reporting badly, the conversion rates you are reading are wrong too, and any conversion rate optimisation work built on them is testing against a moving baseline. Fix the measurement before you start testing.

GA4 is not there to tell you how much you sold. It is there to tell you where the sales came from. Use Shopify or WooCommerce for the total, use GA4 for the mix, and stop expecting either to do the other's job.

The practical version: track blended performance — total revenue from your store platform over total ad spend across all channels — as the number that decides whether things are working. Platform and analytics figures then become steering signals inside a channel rather than a scoreboard.

When the gap is worth fixing

Fix it when GA4 reports above your store platform (always a bug), when the gap exceeds about 10%, when it changes suddenly, or when server-side tracking is sending conversions into Google Ads and Meta — because at that point the gap is not a reporting curiosity, it is feeding a bidding algorithm the wrong training data.

That last case is the one worth acting on quickly. A tracking discrepancy you only read in a dashboard costs you nothing. The same discrepancy inside a Smart Bidding strategy costs you money every day it runs. More on that on the analytics and tracking page.

Let's Talk


Let Me Help You Grow Your Business.

Book your free performance analysis call. No pressure, no obligations, just honest insights about your marketing performance.

Let’s Talk