Shopify Analytics vs GA4: Why the Numbers Never Match
Shopify says 42 orders yesterday. GA4 says 31 sessions converted, or 55, depending on which report you open. The numbers disagree, and the instinct is to find the bug. There is no bug. The two systems measure different things with different rules, and they will never match.
The gap is not an error to fix. It is a difference to understand, and the stores that understand it stop reconciling and start using each system for the job it is good at.
What each system counts
Shopify Analytics counts orders, and it counts them at the moment of purchase, in the store's timezone, with the store's own attribution. An order is an order, and the count is exact. GA4 counts sessions and events, and a purchase is an event inside a session, which means the purchase count depends on the session being tracked, the event firing, and the attribution window.
Attribution is the biggest wedge. Shopify attributes an order to the last non-direct touch it recorded, with its own lookback rules. GA4 attributes conversions to sessions with its own default model, and the two models routinely disagree about which channel deserves the credit. A customer who clicks an ad, leaves, and returns by typing the URL is a paid conversion in one system and a direct conversion in the other.
Ad blockers and privacy settings widen the gap further. GA4 loses sessions to blockers, to Intelligent Tracking Prevention, and to consent banners that customers decline. Shopify loses nothing, because the order happens on Shopify's own servers. A store with a privacy-conscious audience will see a bigger gap than a store with a mainstream one, and the gap will grow over time, not shrink.
Which number to trust for which decision
Trust Shopify for revenue, orders, and anything that ends in money changing hands. It is the system of record for the business, and its numbers are exact. Trust GA4 for behavior: which pages people visit, where they drop off, and how long they stay, because Shopify does not measure behavior at the page level.
For channel decisions, use one system consistently and compare trends, not absolutes. If paid search is growing in GA4 month over month, it is growing, even if the absolute number is lower than Shopify's. Switching systems mid-quarter to chase a better number is how stores misread their own marketing.
The reconciliation habit to break is the daily one. Checking whether the two systems agree every morning is a ritual that produces no decision, because the gap is structural and the answer is always the same. Check the gap monthly, note whether it is growing, and investigate only if it jumps suddenly, which usually means a tracking break, not a business change.
When the gap means something is actually broken
A sudden jump in the gap is the signal, not the gap itself. If GA4 purchase events drop to near zero while Shopify orders stay steady, the purchase event is broken, usually after a theme change or a tag update. If the gap grows gradually, it is blockers and privacy settings, and it is the new normal. The test is the trend, not the level.
Related reading
Related reading: Abandoned Checkout Recovery: Shopify Built-In Flow vs Email, Your Shopify Reports Are Lying About Your Best Seller: Sessions vs Orders, and Automatic Discounts vs Discount Codes on Shopify: Which One to Use When.
Frequently asked questions
Why does GA4 show fewer orders than Shopify?
GA4 loses sessions to ad blockers, consent banners, and privacy settings, while Shopify counts every order on its own servers. The gap is structural, not a bug.
Which system should I trust for revenue?
Shopify. It is the system of record for orders and money. GA4 is for behavior: pages visited, drop-off points, and time on site.
Why do the two systems credit different channels?
They use different attribution models and lookback windows. A customer who clicks an ad and returns directly is a paid conversion in one system and a direct conversion in the other.
When should I worry about the gap?
When it jumps suddenly, which usually means a tracking break after a theme or tag change. A steady gap is normal. A growing gap is usually blockers and privacy settings.