Free tool by Clarvivo · no login
Upload both exports for the same period. We treat Shopify as the financial source of truth and tell you whether GA4's difference is ordinary measurement loss, a duplicate-purchase problem, or tracking that has genuinely failed.
Export both over the same date range. We treat Shopify as the financial source of truth and GA4 as a measurement of it.
This tool answers: Is my Shopify-to-GA4 revenue gap normal, or is my purchase tracking broken?
Enable JavaScript to run the check — the diagnosis itself is free and needs no account.
GA4 and Shopify will never match, and every store owner eventually discovers this the hard way — usually mid-way through a meeting about ad spend.
The reason is structural. Shopify records money it actually took. GA4 records purchases a browser managed to report, which means it loses whatever ad blockers, consent refusals, JavaScript failures and closed tabs take away. A gap is not a bug; it is the cost of client-side measurement.
Which makes the useful question completely different from the one people ask. Not "why don't these match" but "is this the gap I had last month". A stable 11% gap is a healthy store. That same 11% gap appearing where 4% used to be is a deploy that broke checkout tracking, and nothing in either dashboard will tell you.
And one shape is always wrong: GA4 reporting more revenue than Shopify took. Measurement cannot exceed reality, so that is duplicate purchase events — which inflates every ROAS figure you calculate from it.
These answer the questions this one tends to raise.
So you can trust the result — and your developer can verify it.
Shopify's orders export is one row per line item, and the order total appears only on the first row of each order. Counting rows inflates your order count by however many multi-item orders you had, which produces a wrong average order value and a wrong conclusion. We key on the order number instead.
Pending, voided and unpaid orders are not revenue. Including them makes GA4 look like it is under-reporting when it is simply not counting money you never took. We report how many we excluded and why.
Mismatched date ranges and mixed currencies produce a gap that looks exactly like broken tracking. Those are checked first, because sending someone to debug tags over a date-picker mistake wastes days.
If the order-count gap and the revenue gap disagree, GA4 is not missing purchases — it is recording them with the wrong value, usually because the purchase event excludes shipping or tax. Same headline symptom, completely different fix.
This comparison is one export, one period, one moment. Clarvivo joins payment data to acquisition data continuously, so the channel that produced a sale is attached to the payment itself instead of being inferred from two dashboards that disagree.
Connect payment truth to channel attribution