My GA4 revenue doesn't match Shopify — here's what's actually happening
Some gap is normal: GA4 is client-side and structurally misses visitors who block tracking or decline consent, typically 10–30% on a default setup. But GA4 revenue can also be wrong in ways that have nothing to do with that — tax and shipping included by default, currency conversion read from the wrong field, or refunds GA4 never subtracts. Treat Shopify as the source of truth for revenue, and check the causes below before assuming the gap is "just normal."
Before troubleshooting, it helps to split this into two separate questions: how much of the gap is structural and expected, and how much is an actual configuration problem. Conflating the two is the most common mistake — it leads to either over-engineering a normal gap or ignoring a real one because "some mismatch is expected anyway."
What's structurally normal
Want to check your own numbers?Try the calculator →
A neglected or default GA4 setup commonly loses 10–30% of conversions — that's not a red flag by itself. A clean, well-configured setup usually lands in single digits to low teens, and server-side tracking often pushes it under 10%. Gaps above roughly 40% usually point to an actual fault, not just structural loss.
What's actually a configuration problem
GA4 revenue includes tax and shipping by default
Shopify's order total and GA4's purchase value aren't measuring the same thing unless the tag is explicitly configured to exclude tax and shipping. If it isn't, GA4 revenue will run consistently higher than Shopify's net sales — not a tracking loss, a definition mismatch.
Currency is read from the wrong field
For multi-currency stores, some integrations log the raw, unconverted order amount instead of the store-converted value — inflating or deflating revenue depending on which currencies are involved. The correctly converted number was available in a different field the whole time.
GA4 doesn't automatically subtract refunds
Unless refund events are explicitly tracked and sent to GA4, a purchase stays counted in revenue even after it's refunded in Shopify. Over a longer reporting window, this drifts GA4 revenue further from Shopify's net figures the more refunds a store processes.
Two properties — or two tags — are double-counting
A leftover test GA4 property still receiving live traffic, or two purchase tags firing on the same trigger, will inflate revenue and order counts simultaneously. This tends to surface as numbers that are too high, not too low — the opposite direction from the usual ad-blocker story.
What this looks like in practice
How to tell which one you have
- →Compare GA4 order count to Shopify order count first — if revenue is off but order count roughly lines up, look at tax/shipping/currency, not tracking loss.
- →If GA4 revenue is higher than Shopify's, suspect double-counting before suspecting a setup that's "too generous."
- →Check whether the gap is stable month to month. A consistent gap is explainable; a gap that swings randomly usually means something is intermittently broken.
- →Treat Shopify as the source of truth for revenue and orders. Use GA4 for behavior and channels, not as a financial figure.
"The goal isn't a perfect match between GA4 and Shopify — it's a small, stable, explained gap you can trust."
This was the exact pattern behind a recent rebuild: a DTC brand had revenue inflated to the point of being unusable. The fix wasn't a server-side overhaul — it was finding that the correctly converted revenue had been there all along, in a different field. Read the full case →