The Door Counter and the Till
I was building a weekly performance report for a brand a few months ago. Pulling sessions from GA4, orders from Shopify, dividing one by the other to get conversion rate. Standard setup.
The GA4 figure came back at about 58,700 sessions for the period. The Shopify sessions figure for the same period was just under 66,000. Same timeframe, same store, two different tools, a gap of roughly 7,000 sessions.
The conversion rate from GA4 was 1.41%. From Shopify it was 0.84%.
That's not a rounding difference. Those are two substantially different readings of the same business in the same week. And anyone reporting one without understanding why the other exists is working with a number they can't fully defend.
This happens on almost every brand I work with that has set up automated reporting from multiple data sources. The sessions gap appears, someone asks why the conversion rate figure changed. Nobody has a clean answer, and the conversation gets complicated. Most of the time it gets resolved by picking one number and moving on. What doesn't always happen is understanding why the gap exists in the first place. And why it matters which one you use.
The sweet shop
The clearest way I've found to explain the difference is this.
Imagine you run a sweet shop. You've got a little counter on the door that clicks every time someone walks in. And you've got the till, which only rings when someone actually buys something.
Normally those two go together. Busier day, more clicks on the door, more rings on the till.
Then one week the door counter says twice as many people came in as usual, but the till rang the same number of times as always. Something has changed. It's one of two things.
Either loads of real customers came in, looked around, didn't like what they saw, and walked out. That's a ‘real life problem’ and you should find out why.
Or the door counter is broken. Or the door keeps blowing open and close in the wind and clicking all by itself. In which case nothing is actually wrong at all, and if you spend the week redesigning your shop you've wasted time and effort.
So how do you tell the difference? You watch what the extra people did. Did they wander around and pick things up? Then they were real. They are qualified visitors looking for something but had objections so didn’t put their money in the till.
Did they appear and vanish in two seconds without touching anything? Then it was the wind blowing the door open and close.
And here's the part that matters most. You trust the till, not the door counter. Anyone can open a door. Nobody puts money in the till by accident.
The till is Shopify. The door counter is GA4. Divide one by the other and it produces your conversion rate. Which denominator you use changes the number significantly, and the reasons they differ are worth understanding before you choose.
Why the two numbers disagree
GA4 tracks sessions using its own JavaScript tag, which fires on every page load. It counts everyone: real customers, bots, crawlers, Googlebot indexing your pages, internal team visits if your IP isn't filtered, preview sessions from your own Shopify theme editor, test purchases being run by a developer. It also counts sessions that begin and end without any commercial intent. For example, someone who clicked a link by accident and bounced in two seconds, someone who loaded the page and immediately hit the back button.
Shopify's session tracking works differently. It's more closely tied to the commercial infrastructure of the store. It measures sessions that interact with the Shopify storefront at a level that registers as a visit to the platform and it handles some edge cases differently from GA4, particularly around how it attributes sessions across devices and how it handles direct traffic.
Neither is wrong. They're measuring slightly different things. GA4 is the broader, more inclusive measure. Shopify is closer to what happened commercially.
The gap between them on any given week is usually made up of a combination of: bot and crawler traffic that GA4 counts and Shopify doesn't, timezone handling differences between when a session starts and which day it gets attributed to, how the two systems handle same-user sessions across multiple visits, and occasionally genuine tracking discrepancies from tag firing issues on specific page types.
What this means practically is that GA4 will almost always show more sessions than Shopify. Which means GA4 conversion rate will almost always be lower than Shopify conversion rate. If you're reporting CVR to a founder using GA4 sessions and they look at their Shopify dashboard and see a different number, you need to have already explained why.
Which one to use and why it matters
My recommendation is GA4, and here's the reason.
GA4 is the industry standard for analytics-based benchmarking. The conversion rate figures you'll find published for your category are based on analytics platform tracking, not Shopify's own session count. Using GA4 sessions keeps your internal CVR comparable to those benchmarks and consistent with your own traffic analysis.
When you're assessing whether a paid campaign is driving real traffic or inflated clicks, you're comparing against GA4 sessions. When you're calculating the cost to acquire a customer from paid social, the denominator in that calculation is a GA4 session. If your internal CvR benchmark uses Shopify sessions and your channel reporting uses GA4 data, the two systems aren't speaking the same language and comparisons between them are unreliable.
GA4 is also the industry standard for cross-brand benchmarking. If you want to know whether a 1.2% conversion rate is strong or weak for your category, the benchmarks you'll find are based on GA4 or equivalent analytics tracking. Shopify's own CVR figures don't map cleanly to those benchmarks.
The practical implication is to decide once, document it, and apply it consistently. If you choose GA4 as your sessions source, write that down somewhere visible in your reporting setup. Something like: Sessions source: GA4. CvR = Shopify orders ÷ GA4 sessions. Not comparable to Shopify dashboard CvR. That note saves twenty minutes of explanation every time a founder spots the discrepancy.
If you choose Shopify sessions, which some teams do, particularly if they're primarily reporting internally and don't need to cross-reference paid channel data, document that too. The choice matters less than the consistency.
What you cannot do is use both in the same report without flagging which is which. A CvR figure is meaningless without knowing what the denominator is.
The commercial cost of getting this wrong
Here's where the sweet shop analogy earns its keep.
If you think the door is broken when actually the shop is empty, you don't fix the shop. You keep reporting a number that looks fine on paper while customers are leaving without buying, and nobody investigates why.
I've seen this happen in two specific ways.
The first is a brand that set up GA4 tracking but didn't filter internal traffic. The dev team was logging into the Shopify admin dozens of times a week, each visit registering as a GA4 session. The door counter was clicking every time a staff member walked through the back office. The reported conversion rate was running at about 0.6% for months. Nobody was buying. Lots of optimisation work got done on the homepage. The CvR didn't move. Eventually someone noticed the session counts and traced it back to unfiltered internal traffic. The real CvR, once cleaned, was closer to 1.8%.
The second is a brand that switched to reporting Shopify sessions because the number was higher and therefore the CvR looked better. The paid media team was optimising campaigns against GA4 data. The two numbers diverged over time as campaign traffic quality changed, and because they were using different denominators nobody caught it. They thought CvR was stable. GA4 was showing a clear decline. The paid team found out months later when the efficiency of campaign spend dropped and nobody could explain it from the internal numbers.
These aren't edge cases. They happen regularly when the sessions question isn't resolved early and documented clearly.
The connection to MER
I've written about Marketing Efficiency Ratio in previous articles and it connects directly here.
MER removes the sessions problem entirely. Total revenue divided by total marketing spend doesn't care how sessions are counted. It goes straight to the till and asks whether the money going in is producing enough money coming out. When the door counter is broken, MER doesn't notice because it never looked at the door.
This is one of the reasons I use MER alongside CvR rather than instead of it. CvR tells you something important about what's happening inside the shop such as whether visitors are buying, whether the product page is converting, whether a new layout is working. MER tells you whether the whole system is efficient. You need both. But when the two tell different stories, MER is usually closer to the truth, because the till is harder to mislead than the door counter.
The practical sequence I'd suggest: track MER as your top-line health metric. Use GA4-based CVR as the diagnostic that tells you what's happening inside the funnel. When they diverge, investigate the sessions quality before assuming the shop needs redesigning.
The till is the till. Start there.
Q: Why does GA4 show more sessions than Shopify for the same period?
GA4 tracks sessions using a JavaScript tag that fires on every page load, counting bots, crawlers, internal team visits, developer test sessions, and users who bounce in under two seconds with no commercial intent. Shopify's tracking is more closely tied to the commercial infrastructure of the store and counts sessions that interact with the storefront in a meaningful way. Neither is wrong. They measure slightly different things. GA4 is broader and more inclusive. Shopify is closer to what actually happened commercially. GA4 will almost always produce a higher session count and therefore a lower conversion rate than Shopify for the same period.
Q: Should I use GA4 or Shopify sessions to calculate conversion rate?
GA4. GA4 is the industry standard for analytics-based benchmarking. The conversion rate figures you'll find published for your category are based on analytics platform tracking, not Shopify's own session count. Using GA4 sessions keeps your internal CVR comparable to those benchmarks and consistent with your own traffic analysis. Using GA4 sessions as the denominator keeps your internal CvR consistent with how campaigns are being evaluated externally. GA4 is also the industry standard for cross-brand benchmarking, meaning the conversion rate benchmarks you'll find for your category are based on GA4 or equivalent analytics tracking. Whichever source you choose, document it clearly and write the source next to the metric in your reporting so anyone reading the number understands what denominator was used.
Q: What happens if internal team traffic isn't filtered out of GA4?
Every time a staff member visits the site, opens the Shopify theme editor for a preview, or a developer runs a test session, GA4 records a session. This inflates the session count and deflates the reported conversion rate. One brand I worked with had a reported CvR of around 0.6% for several months while the team ran repeated optimisation work on the homepage to improve it. Once internal traffic was filtered out, the real CvR was closer to 1.8%. The door counter was clicking every time someone walked through the back office. The shop wasn't empty. The counter was broken.
Q: What is the relationship between conversion rate and MER?
Conversion rate and Marketing Efficiency Ratio measure different things and work best used together. CvR, sessions divided into orders, tells you what is happening inside the funnel: whether visitors are buying, whether the product page is converting, whether a layout change made a difference. MER, total revenue divided by total marketing spend, tells you whether the whole marketing system is efficient. MER sidesteps the sessions problem entirely because it goes straight to revenue and spend without caring how sessions are counted. When CVR and MER tell different stories, investigate the sessions quality first before assuming the product or page needs changing.