Troubleshooting

GA4 Revenue Doesn’t Match Shopify: Causes and Fixes

By WebSignalytics Inc.  ·  9 min read

If your GA4 revenue doesn’t match Shopify, you are not doing anything wrong — and you are not alone. Open GA4 and your Shopify admin side by side for the same week and the two totals will almost never agree. Shopify might report $12,400 in sales while GA4 shows $10,900. The instinct is to assume one of them is broken. Usually neither is. The two systems count revenue in different ways, at different moments, with different gaps, and a steady gap between them is the normal state of affairs. This guide explains why the numbers diverge, how to diagnose each cause, what variance is acceptable, and which number to trust for which decision.

The reason this matters is that a lot of business decisions get made off the wrong figure. People discount their real sales because GA4 looks low, or they distrust GA4 entirely because it never lines up with the bank. Both reactions come from the same misunderstanding: expecting two tools built for different jobs to produce the same total.

Why the two numbers will never match exactly

Shopify is your system of record. It logs every completed order at the moment payment is captured, because it has to — that is the number you get paid on, report to the tax authority, and reconcile against your bank. It does not depend on a browser, a script, or a visitor’s consent. If an order completed, Shopify has it.

GA4 is a measurement tool. It records a purchase event only when a piece of JavaScript fires in the customer’s browser, attributes that purchase to a session, and successfully sends the data to Google. Every one of those steps can fail or be blocked — and when it fails, the order still happened, Shopify still recorded it, and GA4 simply did not see it. That structural difference is the root of nearly every data discrepancy between the two. GA4 almost always reports less revenue than Shopify, rarely more.

Shopify counts what was sold. GA4 counts what it managed to observe being sold. Those are different questions, so they get different answers.

Once you accept that GA4 is a sample of reality rather than a ledger of it, the gap stops being alarming and starts being diagnosable. The goal is not to make the numbers identical — that is impossible — but to understand the gap, keep it stable, and know which figure answers which question.

The main causes of the GA4 vs Shopify revenue gap

There are five common reasons the numbers part ways. Most stores have several running at once.

1. Consent-mode declines

If you operate in a region with privacy regulation — the EU, the UK, increasingly parts of Canada — you likely show a cookie banner, and a share of visitors decline tracking. With Google’s consent mode, those declines mean GA4 either receives no data for that customer or only a coarse, modelled estimate. A real purchase happens, Shopify records the full amount, and GA4 records a fraction of it or nothing at all. The more privacy-conscious your audience, the larger this consent mode revenue gap becomes — it is common to lose 10–30% of tracked purchases this way alone.

2. Cross-domain checkout gaps

Shopify’s checkout often runs on a different domain than your storefront — your shop sits on yourbrand.com but checkout completes on checkout.shopify.com or shop.app. Without proper cross-domain tracking, GA4 treats the move to the checkout domain as a brand-new visitor, breaking the link between the session and the purchase. The order completes and Shopify logs it, but GA4 either misses the purchase event entirely or attributes it to “direct” with no originating source. A broken cross-domain checkout is one of the largest and most common sources of missing GA4 revenue.

3. Ad blockers and browser privacy

A meaningful slice of shoppers run ad blockers, privacy browsers, or extensions that block Google Analytics outright. Safari and Firefox limit tracking by default. For these visitors the GA4 script never loads or never sends, so the purchase is invisible to GA4 while Shopify — which does not rely on that script — records it normally. There is no fix for this beyond server-side tracking; it is a permanent floor on how much GA4 can ever see.

4. Refunds and timing

Shopify and GA4 handle the calendar differently. GA4 records a purchase the instant it happens, in the visitor’s session, in their time zone. Shopify reports against your store’s time zone and financial settings. An order placed at 11 pm can land on different calendar days in the two systems, which throws off any single-day comparison. Refunds compound this: Shopify net sales subtract refunds, while GA4’s standard revenue often still counts the original purchase, so a week with several refunds will show GA4 higher than Shopify net — the one case where GA4 can look larger.

5. Currency, tax, and shipping

The two tools frequently measure a different dollar. Depending on configuration, GA4 may capture revenue including or excluding tax and shipping, while Shopify reports net sales, gross sales, and total separately. If you sell in multiple currencies, GA4 converts everything to one reporting currency at its own exchange rate, which will not match Shopify’s conversion to the penny. A persistent percentage gap that never moves is often just tax or shipping being counted on one side and not the other.

How to diagnose each cause

You do not need to fix everything. You need to know which of the five is driving most of your gap, and you can work that out without a developer.

Start with the size and direction of the gap. If GA4 is consistently lower than Shopify by a stable percentage, that points to tracking loss — consent declines, ad blockers, or a checkout problem. If GA4 is sometimes higher, look at refunds and time-zone boundaries first.

Check your checkout domain. Place a test order yourself and watch whether GA4’s realtime report registers the purchase event. If your own purchase doesn’t show up, you have a cross-domain or tagging problem, and that is likely your single biggest leak. If it does show up but the source says “direct,” attribution is breaking at the domain hop.

Look at your traffic geography. A large share of EU or UK visitors plus a cookie banner makes consent mode declines the prime suspect. Compare your GA4 user count to a server-side count if you have one — the shortfall is roughly your consent and ad-blocker loss combined.

Compare like for like. Before concluding anything, make sure you are comparing GA4 revenue to Shopify gross sales for the same time zone and the same date range, with tax and shipping treated the same way. A surprising amount of “the numbers don’t match” is really “I compared net to gross.”

The honest catch: reconciling these two systems properly — checking the checkout domain, isolating consent loss, comparing the right revenue figure for the right date range — is fiddly, recurring work. Most store owners do it once in a panic, decide the numbers are “close enough,” and never look again. That is exactly the kind of ongoing check worth automating.

What variance is actually acceptable

There is no official threshold, but a useful rule of thumb: GA4 running 5–15% below Shopify is normal and healthy for most stores. That gap is the expected cost of consent declines, ad blockers, and browser privacy — losses you cannot fully eliminate and should not lose sleep over.

A gap of 20–40% usually means something is fixable — most often a cross-domain checkout problem or missing purchase tracking — and is worth investigating. A gap above that, or one that suddenly changes size, signals a real break: a tag stopped firing, a theme update removed the tracking snippet, or your consent banner configuration changed. The single most useful thing to monitor is not the absolute gap but its stability. A steady 12% gap week after week is fine. A gap that jumps from 12% to 35% overnight is the alarm worth responding to.

Which number to trust for which decision

The two figures are good at different jobs, and the trick is using each for what it measures honestly.

Trust Shopify for anything involving money. Actual revenue, profit, tax, payouts, reconciliation, “how much did we make this month” — always Shopify. It is the system of record. Never report your real sales off GA4; you will understate them every time.

Trust GA4 for understanding behaviour. Which channel drives the most revenue, whether a campaign converted, how the path to purchase looks, which products get viewed but not bought — that is GA4’s job. Even though its absolute revenue is undercounted, the proportions between channels are usually reliable, because the undercounting is spread fairly evenly across them. GA4 answers “where did this come from and what did people do” far better than Shopify can.

The mistake to avoid is using GA4’s revenue total as a financial figure, or using Shopify to make marketing-attribution decisions it has no data for. Each tool is right within its lane and misleading outside it. A confident wrong conclusion from the wrong number is a recurring trap — our case study GA4 Says We Lost Money walks through exactly how a healthy store talked itself into a crisis by trusting the wrong figure.

Where WebSignalytics fits

WebSignalytics connects to your Google Analytics in the background and emails you a plain-language report every Monday: what changed last week, why it likely matters, and what’s worth your attention. No dashboards, no logging in, no learning curve.

Part of what it watches is the kind of signal this article is about — a tracking gap that suddenly widens, a purchase event that stops firing, a channel whose revenue drops to zero overnight. Those are the symptoms of a broken tag or a checkout change, and they are easy to miss when you only glance at GA4 occasionally. WebSignalytics surfaces them automatically and explains them in a sentence, so a measurement problem gets caught in week one rather than discovered three months later when the quarter’s numbers look wrong.

It will not make GA4 and Shopify match — nothing can, and they shouldn’t. What it does is tell you when the gap stops behaving normally, which is the part that actually matters.

Catch tracking problems before they cost you a quarter

Connect your Google Analytics in two minutes. Your first plain-language report — what changed, what it means, what to do — arrives the following Monday.

Start your 14‑day free trial
← Back to all posts