Open Shopify, GA4 and Meta Ads Manager on the same Monday morning and you'll see three different sales numbers for the same week. It's the most common question Shopify merchants ask about tracking: which one is right?
The honest answer is that none of them is wrong. They're counting different things. Once you know what each one counts, most of the difference stops being mysterious, and the part that's left is the part worth fixing.
What each number actually counts
Shopify records every order. An order is placed, paid (or marked for cash on delivery), and it's in Shopify. This is your revenue record. It's the number your finance team should use.
GA4 counts what it can see. GA4 learns about a purchase when it's told about it. If that report has to come from the shopper's browser, not every browser lets it through. Shoppers who decline cookies, use ad blockers or have strict privacy settings are partly or completely invisible to a browser-only setup. So GA4 usually sits below Shopify.
Ad platforms count what they can claim. Meta, Google Ads and the others each decide which sales they helped produce, using their own attribution rules and windows. A shopper who saw a Meta ad on Monday and clicked a Google ad on Wednesday can be claimed by both. Add the platforms together and you'll often get more sales than you actually made.
Which number to trust, for which job
| Question | Use |
|---|---|
| How much did we sell? | Shopify |
| Which channels bring customers? | GA4 |
| How should we optimise a campaign? | The ad platform (Google Ads, Meta) |
Most tracking arguments, between a founder, an agency and a platform, end when everyone agrees which number is doing which job.
When a difference means something is broken
Some differences are normal and always will be:
- Time zones. Shopify and GA4 may close the day at different times.
- Refunds and cancellations. Each tool handles them differently.
- Consent. Shoppers who decline tracking should not be tracked, and that choice must be respected.
Beyond these, a difference usually means purchases that never arrived: a report blocked by the browser, a theme update that moved a script, an app conflict, or the same sale sent twice in one place and not at all in another.
That's the part worth fixing, because ad platforms learn from the sales they're told about. When some purchases never arrive, campaigns optimise toward a smaller, skewed set of customers.
How to close the gap
- Send purchases server-side, directly to your platforms. The sale then reaches them even when the browser blocks a tag.
- One sender per platform. If two tools both report purchases to the same platform, the same sale can be counted twice. Pick one sender for each platform.
- Respect consent properly. Use a cookie banner that works with Shopify's privacy settings.
- Know when something breaks. Tracking rarely breaks loudly, so a broken connection can cost weeks of decisions made on partial data.
That's how GTM Assistant works. It sends your sales to 14 platforms server-side, and our team sets it up with you so each platform has one sender. It's built on Shopify's Customer Privacy API, so every customer's consent choice is respected before any event is sent. If a connection breaks, for example an expired token, the app alerts you straight away.
See your own gap
Our team runs a free tracking audit for Shopify stores. We compare the orders and revenue Shopify recorded with what GA4 and Google Ads received, and flag duplicate purchases. We reply within 24 hours. The report takes up to one week. We don't change your tracking while we look.