Why GA4 and Shopify Numbers Never Match, and When to Worry
Shopify shows one order count for last week and Google Analytics 4 shows noticeably fewer. Sessions are off too, and revenue does not match either. Before you assume the tracking is broken, know this: the two tools will never agree exactly, and Shopify's own Help Centre says so. The useful question is not why the numbers differ, but whether the gap is the normal kind or a sign that tracking has actually failed. This guide shows how to tell.
Platform details are from Shopify's Help Centre and developer documentation and Google's developer documentation, checked on 5 November 2026.
Why do GA4 and Shopify Analytics show different numbers?
Because they count different things in different ways, from different places. Shopify's page on analytics discrepancies lists the main reasons:
- Reloads are counted differently. Shopify notes that Google counts every page reload, while a browser does not count reloads of cached pages.
- Sessions are defined differently. Some tools count search bots as visitors and some do not.
- Google needs JavaScript and cookies. Shopify's words: Google "can only count visitors with JavaScript and cookies activated."
- Browser extensions block Google Analytics. Ad blockers and privacy extensions stop the tag from sending sessions and purchases.
- Time zones may not match. If your GA4 property and your Shopify store use different reporting time zones, orders near midnight land on different days.
- The tracking mechanisms are proprietary. Neither company shares exactly how it records a visit, so they will never record visitors identically.
The structural point is the most important one. Shopify counts orders in its own database, where every completed order exists. GA4 counts only the purchases that a tag in a browser managed to report. One is a ledger, the other is a sample of that ledger.

Why does GA4 show fewer orders than Shopify?
Because some orders never produce a browser event GA4 can see. On most Shopify stores today, GA4 receives purchases through Shopify's Customer events system, either via the Google and YouTube sales channel or a custom pixel. Shopify's documentation for the checkout_completed event explains when that event fires: once per checkout, typically on the Thank you page, or on the first upsell page if you run post-purchase offers. It adds a line that explains a lot of missing orders: "If the page where the event is supposed to be triggered fails to load, then the checkout_completed event isn't triggered at all."
On top of that, some order types never pass through an online checkout in a browser at all:
- Orders you create in the Shopify admin and mark as paid.
- Point of sale orders.
- Subscription renewals, which the subscription app creates on a schedule without the customer visiting.
- Orders from other sales channels and marketplaces connected to Shopify.
Then consent and blocking remove a further share of the orders that did happen in a browser. Put together, GA4 showing fewer orders than Shopify is the normal direction of the gap. GA4 showing more orders than Shopify is the warning sign, and it usually means the purchase event is firing twice.
How does cookie consent change what GA4 records?
A lot, if you sell to regions that require consent. Shopify's documentation on web pixels says that pixels honour the consent signals customers choose, and in regions where customers must consent to tracking, pixel callbacks run only after consent is given.
Google's side of this is Consent Mode, which comes in two versions according to Google's consent mode documentation:
- Basic consent mode blocks Google tags until the visitor interacts with the consent banner. If they decline, no data reaches Google at all.
- Advanced consent mode loads the tags with consent denied by default and sends cookieless pings, which Google uses for modelling.
For a store selling only within India with no consent banner, this may barely apply. For a store selling into Europe or the UK with a strict banner, a meaningful share of visitors may never be counted in GA4, and nothing is wrong with the setup. It is the setup working as designed.

Photo: Negative Space via StockSnap, CC0 1.0
Why does revenue differ even when orders match?
Because "revenue" means different things in each tool unless you make it match.
-
Tax and shipping. In Google's own GA4 ecommerce example, the purchase
valueis the sum of item price times quantity, withtaxandshippingsent as separate fields. Shopify reports several sales figures, and some include tax and shipping. Compare like with like. -
Refunds and cancellations. Shopify's sales reports adjust for returns. GA4 subtracts a refund only if a
refundevent with the sametransaction_idis sent to it. Most stores never send one. - Discounts. Check whether the value sent to GA4 is before or after order-level discounts.
- Currency. If you sell in several currencies, check which currency each tool reports in and when it converts.
For an Indian COD-heavy store there is one more effect. Shopify records a COD order when it is placed. If it is later cancelled or returned to origin, Shopify's reports reflect that, but GA4 keeps the original purchase unless you send a refund. Over a month, that alone can make GA4 revenue look healthier than reality.
Why are sessions so different between the two?
Sessions are the least comparable number of all. Each tool decides what a session is, which visits are bots, and which visitors it can see. Shopify also changed its own definition recently: between 21 and 23 September 2026 it moved to ending sessions after 30 minutes of inactivity, counting sessions without pageviews and filtering bots by default. If your Shopify sessions changed around then, our post on the Shopify session measurement update explains what moved.
Our advice is to stop trying to reconcile sessions at all. Use Shopify's sessions for Shopify's conversion rate and GA4's sessions for GA4's funnel and channel reports, and never divide one tool's orders by the other tool's sessions.

What size of gap between GA4 and Shopify is acceptable?
Neither Shopify nor Google publishes an acceptable figure, and any single percentage you read online is a rule of thumb, not a standard. The gap depends on your audience's devices and ad blocker use, your consent setup, how many orders come from POS, subscriptions or marketplaces, and how fast your Thank you page loads.
What we use instead is your own baseline:
- Compare online store orders only. Filter Shopify to orders from the Online Store channel, so POS, admin and marketplace orders are out of the comparison.
- Match the time zone and date range in both tools.
- Calculate GA4 purchases as a share of Shopify online orders for each of the last eight weeks.
- Watch the trend, not the level. A ratio that is steady week after week means tracking is working. A sudden drop or jump means something changed.
A sudden change is what deserves attention: a new consent banner, a theme or checkout change, a new post-purchase upsell app, or a second GA4 integration added by an app.
How do you check whether GA4 tracking is actually broken?
Run through these in order. Most broken setups fail on the first three.
- Count your GA4 integrations. Check the Google and YouTube channel, Settings then Customer events for custom pixels, and the theme code for a hardcoded gtag or Google Tag Manager snippet. Two active integrations is the most common cause of GA4 showing more purchases than Shopify.
-
Place a test order and watch GA4's real-time report or DebugView for one
purchaseevent with the correct order number astransaction_id. - Check the purchase value against the order, so you know whether tax and shipping are included.
- Test with consent accepted and declined if you show a consent banner, and confirm the behaviour matches what you intended.
- Test the post-purchase path if you run upsells, since the event moves to the first upsell page.
- Check the time zone in GA4's property settings against Shopify's store settings.
If you also send conversions to Meta, the same checks apply there. Our guide to the Shopify Meta pixel and Conversions API covers that side.
Which number should you trust for business decisions?
Use Shopify for anything about money: orders, revenue, average order value, refunds and repeat purchase. It is the system of record. Use GA4 for questions Shopify answers less well: which channels and campaigns brought visitors, where in the journey they dropped off, and how behaviour differs by landing page or device. That split, and the handful of reports worth setting up, is covered in our post on Shopify analytics setups that matter.
Not sure whether your gap is normal? Email hello@exactwhy.com with the subject "GA4 Shopify mismatch" and tell us which integrations you use. We will check your GA4 and Customer events setup for duplicate tags, missing purchase events and consent issues, and tell you whether the gap is expected or broken, free. If fixes are needed, we quote them after the check, and ongoing analytics and tracking support is available on a monthly retainer. You can also write to us through our contact page.