Shopify and Ads Manager do not match because they count sales in completely different ways. Shopify records an order when the money arrives. Meta records a sale when someone who saw or clicked your ad buys inside its attribution window, and credits it to the day of the click rather than the day of the purchase. A gap of 20 to 30 percent is normal. A gap above 50 percent usually means your tracking is broken.
The short version
- Shopify counts money. Meta and Google count influence. Both are right.
- Meta backdates a sale to the day of the click, so weekly comparisons never line up.
- Under 30 percent gap is normal. Over 50 percent means go and fix the setup.
- Run the business on blended ROAS from your store, use platform numbers only to steer campaigns.
Ads Manager says you made 40 sales. Shopify says 27. Google Ads says something else entirely, with a decimal on the end.
So which one is lying?
None of them. They are measuring three different things and all three are technically correct. Once you know what each one counts, the panic goes away and you can get back to making decisions instead of refreshing dashboards.
What Shopify counts
Shopify is your cash register. It records an order when the payment goes through, on the day it goes through, and it does not care where the customer came from. It is the only number that matches your bank account, which makes it the number that decides whether the business works.
Shopify’s own analytics does have channel attribution, but it defaults to last click. If a customer saw your Meta ad on Monday, then came back through a branded Google search on Friday and bought, Shopify usually gives that sale to Google. Meta still counts it, because Meta saw the click that started the whole thing.
What Meta Ads Manager counts
Meta counts a conversion if the buyer clicked your ad within the last 7 days or viewed it within the last 1 day. That is the standard setting. So a sale gets credited to Meta even when the customer’s final step was typing your brand name into Google.
The bigger source of confusion is the date. Meta reports the sale against the day of the ad click, not the day of the purchase. Someone clicks on the 1st and buys on the 6th, and Meta files that sale under the 1st.
So when you compare last week in Ads Manager to last week in Shopify, you are comparing two different sets of orders. That one fact explains a large share of the gaps we get asked about.
Meta also deduplicates badly when your pixel and Conversions API both fire without a shared event ID. Then one purchase gets counted twice and your reporting quietly inflates.
What Google Ads counts
Google defaults to a 30 day click window, far longer than Meta’s 7. It also uses data-driven attribution, which splits credit across several touchpoints instead of handing it all to one. That is why you see decimal conversions like 3.4. Nothing is broken. Google is saying it deserves a bit less than half the credit for several sales.
Add Meta’s reported sales to Google’s reported sales and you will get a number bigger than your real total. Both platforms are claiming the same customers. This is expected, and it is exactly why blended ROAS across the whole business is more honest than either platform’s own figure.
How big a gap is normal?
From the accounts we run, roughly this.
| Gap between platform and store | What it means | What to do |
|---|---|---|
| Under 20% | Healthy. Attribution windows only. | Nothing. Carry on. |
| 20% to 30% | Normal for UAE stores, especially with heavy iOS traffic. | Nothing. Account for it in your targets. |
| 30% to 50% | Worth a look. | Long consideration cycle, or partial tracking loss. Check event delivery. |
| Above 50% | Something is genuinely broken. | Stop optimising. Fix the setup first. Every decision on this data is wrong. |
The four things that are usually broken
1. No server side tracking. Browser pixels get blocked by iOS, by ad blockers and by Safari’s privacy settings, which cover a large share of UAE traffic. If you are relying on the browser pixel alone you are losing events. The fix is the Conversions API for Meta and enhanced conversions for Google.
If you also sell in a physical shop, you want offline conversion tracking on top of that, so the sale gets reported from your server as well as the browser.
2. No event deduplication. Once you add the Conversions API, the same purchase can be reported twice, once from the browser and once from the server. Both reports must carry the same event ID so Meta knows they are one event. Without it your reported sales inflate and your ROAS looks better than it is. This is the single most common thing we find on new accounts.
3. Comparing the wrong dates. Because Meta backdates to the click, a weekly comparison will never line up. Compare a full 30 day period against the same 30 days, and leave a few days for the data to settle before you judge it.
4. Test orders and refunds. Your own test purchases sit in the data forever unless you clear them. Refunds reduce your Shopify number and usually leave your Ads Manager number untouched.
What we do when a new account has this problem
Same order, every time.
First, fix the tracking. Conversions API in place, event IDs matching, purchase value and currency passing correctly in AED. Until that is right, nothing else is worth doing. It is week one of the 90 day plan we run on every new account, and it is week one for a reason.
Second, pick one number to run the business on. For almost every store that is Shopify total revenue against total ad spend across every platform. That is blended ROAS, and it cannot be double counted because it comes from a single source.

Third, use platform numbers only for decisions inside that platform. Ads Manager is good enough to tell you which ad set is beating the others. It is not the number you use to decide whether the month worked.
On a UAE store we run on Google, the account view for the last 90 days shows AED 213,502 in conversion value on AED 39,372 in spend, 5.1x, 573 conversions. We still check it against the store’s real revenue before making a scaling decision.

On one account we added the Conversions API, saw reported purchases jump by a third, and briefly thought we had found a big win.
We had found a deduplication bug. The pixel and the server were both reporting the same purchases with no shared event ID. Reported revenue was inflated for nine days before we caught it. Now event ID matching gets verified on day one, before anything is switched on properly.
The short version
Shopify tells you what you earned. The ad platforms tell you what influenced it. They will never agree, and they are not supposed to.
Fix your server side tracking, run the business on blended ROAS from your store, and use platform numbers to steer campaigns rather than to judge months. Do that and the gap stops being a crisis and becomes something you simply account for.
Not sure whether your gap is normal or broken?
Send us the two dashboards. We will tell you within a day whether it is attribution doing its job or a tracking fault costing you money, and exactly which of the four causes it is. Or see how we set up conversion tracking and attribution.
Get a free tracking reviewOr see the accounts behind these numbers first.
Frequently asked questions
Why does Meta show more sales than Shopify?
Because Meta counts a sale if the buyer clicked within 7 days or viewed within 1 day, even when the last step before buying was a Google search or a direct visit. It also backdates the sale to the day of the click. Shopify only counts the order on the day the money arrived.
Does the Conversions API fix the gap completely?
No, and anyone who tells you it does is overselling it. It recovers events that browser tracking loses, which usually narrows the gap noticeably. It does not remove the difference caused by attribution windows and backdating, because those are counting rules rather than tracking failures.
Should I use a 7 day or 1 day attribution window in Meta?
Seven day click and one day view is the sensible default for e-commerce. If you want Ads Manager to sit closer to Shopify, switch the reporting view to 7 day click only and drop the view-through. Your reported sales will fall and the number will feel more like reality.
What is blended ROAS and why does it matter more?
Blended ROAS is total store revenue divided by total ad spend across every platform. It cannot be double counted because it uses one revenue source. It tells you whether the whole operation is profitable, which no single platform’s ROAS can ever do.
Can I make Shopify and Ads Manager match exactly?
No. They are structurally different systems of counting. The goal is to get the gap into a range you understand and can predict, not to force two different measurement systems to produce one figure.