Almost every store owner opens GA4 and Shopify side by side at some point and finds two different numbers for the same day. That is expected. What matters is knowing why, which number to use for which decision, and when the difference points to a real tracking error.
The nine usual causes
- Consent: in the UK and EU, visitors who decline analytics cookies are not tracked as usual by GA4. Consent Mode v2 models some of the gap; Shopify still counts the order.
- Ad blockers and browser privacy features block or limit the Google tag.
- Other channels: Shopify counts orders from POS, draft orders, marketplaces and manual orders. GA4 only sees the online store.
- Duplicate purchase events: the Google & YouTube app and a manual GTM or pixel setup both send purchases.
- Missing purchase events: a custom pixel that is not connected correctly in Customer events, or a consent setup that blocks it.
- Revenue definitions: Shopify reports can include or exclude taxes, shipping, discounts and returns; GA4 records whatever value the event sends.
- Refunds and cancellations: Shopify adjusts its figures; GA4 only does if refund events are sent.
- Time zone and currency: the store and the GA4 property use different time zones, or multi-currency orders are converted differently.
- Sessions and attribution: Shopify and GA4 define sessions differently and use different attribution models for channels.
Which number to trust for what
| Question | Use | Why |
|---|---|---|
| How many orders and how much revenue? | Shopify | It is the ledger: every order, refund and payment |
| Which channels bring buyers? | GA4 (trend) | Consistent attribution over time, even if not complete |
| Where do visitors drop out? | GA4 | Funnels and events on product, cart and checkout |
| Did a campaign work? | Both | Shopify for revenue, GA4 for the path that led there |
Normal gap or tracking bug?
Compare purchases in GA4 with online store orders in Shopify per week. A gap that stays roughly stable over months is normal and mostly comes from consent and ad blockers. A gap that suddenly widens, or GA4 showing more purchases than Shopify, points to a problem: a broken pixel after a theme or app change, or a second tag sending duplicate purchases.
How to make the numbers closer
- Send purchase events from one source only, with the Shopify order ID as transaction ID so GA4 can remove duplicates.
- Use Shopify's Customer events (web pixels) for checkout tracking; on Shopify's current checkout, scripts can no longer be pasted into the checkout or order status page.
- Set up Consent Mode v2 correctly so GA4 can model what consent hides — see cookie consent and Consent Mode on Shopify.
- Use the same time zone and reporting currency in Shopify and GA4.
- Send refunds to GA4 if you use it for revenue reports.
- Consider server-side tagging when ad platforms need more complete conversion data.
Checking tracking after every theme and app change is part of our Shopify support and maintenance. Too many tags also slow the store down — see third-party scripts and Shopify performance.