← All articles

Why GA4 shows fewer sales than your checkout

Here’s a moment most store owners know well. You open your store admin and it says you had 100 orders this month. Then you open Google Analytics 4 (GA4) to see how your ads did — and it shows only 60 purchases. The numbers don’t match, and nobody can tell you why.

You’re not doing anything wrong, and your store isn’t broken. This gap is normal, it happens to almost every online store, and once you understand it you can stop second-guessing your reports. Let’s walk through it in plain language.

The short version

The sale really happened — your checkout recorded it. But the little piece of code that’s supposed to tell GA4 and Meta “a purchase just happened” didn’t always get through. So your store knows about the sale, but your analytics tools never heard about a chunk of them. For many stores, that lost slice is somewhere between 20% and 50% of purchases.

Why does this happen?

Tools like GA4 and the Meta Pixel work from inside the visitor’s browser. When someone buys, a small script in their browser is supposed to send a message to Google and Meta. The problem is that a lot of things sit between that script and the report — and any of them can quietly swallow the message.

None of these mean you lost the sale. You got the money. You just lost the record of it in your marketing tools.

Why this matters more than it looks

A reporting gap might sound like a small annoyance. It isn’t — because you make real money decisions based on these numbers.

Imagine GA4 only sees 60 of your 100 sales. Now imagine those 40 missing sales mostly came from one ad campaign. In your report, that campaign looks like a loser, so you turn it off — when it was actually one of your best performers. You end up cutting what works and spending more on what doesn’t, all because the scoreboard was missing points.

This is the quiet cost of missing data: not just messy reports, but wrong decisions made with confidence. When the numbers are incomplete, “data-driven” can mean driving in the wrong direction.

What you can actually do about it

The fix is to stop relying only on the browser to report your sales. Instead of hoping each visitor’s browser successfully sends the message, you record the purchase on a server you control — and send that record to GA4 and Meta from there. This approach is called server-side tracking.

The difference is reliability. Ad blockers, Safari limits, and a closing browser tab can’t quietly drop a message that’s being sent from a server rather than from the shopper’s phone. You still respect consent — if a visitor says no, you don’t track them — but for the sales you’re allowed to count, far more of them actually reach your reports.

The result is simple: the number in GA4 starts looking a lot more like the number in your store admin. And when your reports are closer to reality, your ad decisions get better on their own — no guessing required.

The takeaway

If GA4 shows fewer sales than your checkout, you’re not broken and you’re not alone. It’s the normal result of how browser-based tracking works in a world of ad blockers, iPhones, and consent banners. The good news is that it’s fixable — and you don’t need to be technical to fix it.

Stobio is built for exactly this: it adds server-side tracking to your store so the sales you’re already making finally show up in GA4 and Meta — set up by you, no technical knowledge needed. You can see how it works at stobio.com.