If Meta shows more sales than your store records, two forces are at work at the same time: Meta over-attributes (counts sales that would have happened anyway) and also loses signal (misses some real conversions). But the most serious problem is neither of those: it is that even the events Meta does count arrive with incomplete data, which makes its algorithm less effective over time.
Force 1: Meta over-attributes because of how it counts conversions
By default, Meta attributes a sale to an ad if the user:
- Clicked the ad within the last 7 days before purchasing, or
- Viewed the ad (without clicking) within the last 24 hours before purchasing
That means if someone saw your ad in the morning and that afternoon Googled your brand and bought directly, Meta counts that sale as its own. Google Analytics also counts it, and your store registers it once. How many times did it happen? Three platforms each claim credit.
View-through conversions (attribution by impression) are the biggest inflator: Meta includes them by default in the reported total. In a prospecting campaign where many people see the ad but few click, the number can triple compared to click-only attribution. To compare with your store, go to Ads Manager → columns → adjust the attribution window to "click only" and disable view-through.
Force 2: Meta also loses real signal (and that makes it more dangerous)
At the same time it over-attributes in some cases, Meta also loses real conversions because of:
- iOS ATT: since iOS 14.5, users must give explicit permission to be tracked. The vast majority decline. That means Meta cannot follow an iPhone user's session from the ad to the purchase in the browser. The sale happens, but Meta does not see it. We cover this in detail in the iOS ATT impact on Meta Ads article.
- Safari ITP: Safari deletes third-party cookies within 24 hours in most cases. If someone saw your ad on Tuesday and bought on Wednesday from Safari, the pixel may not connect the dots.
- Ad blockers: 20 to 40% of desktop users have an ad blocker installed. The browser pixel simply does not fire.
The result of both forces: Meta can be reporting double the real number in some view-through campaigns, and 70% of the real number in conversion campaigns where traffic is mostly iPhone. Both things can happen in the same account at the same time.
The most serious problem: incomplete data Meta receives on every event
There is a third problem that very few articles mention, and it is the most important for your campaign quality over time.
When the browser pixel fires a purchase event, it normally sends: the transaction price and the order ID. Sometimes it includes the email or phone number — depending on whether the user entered them in a field the pixel can read. On average, browser pixel events only carry 2 or 3 of the 5 matching parameters Meta needs to identify the buyer: email, phone, name, city and postal code.
When that data is missing, Meta cannot tell who bought. The event arrives as "a purchase of $X happened" but with no identity attached. Meta tries to match it against its user base and sometimes succeeds, sometimes does not. EMQ (Event Match Quality) measures exactly this — how well Meta can identify the buyer behind each event. A store without server-side tracking typically has EMQ 3-4 out of 10. With server-side and all 5 parameters, it rises to 7-9.
That is why discrepancies are not just a measurement problem — they are an algorithm quality problem. If Meta does not know who bought, it cannot build good lookalike audiences, cannot optimize toward the most valuable buyers, and your cost per result rises even if your product stays the same. Learn more about what EMQ is and how to improve matching parameters.
Which number should you trust when Meta and your store disagree?
| What you want to know | Right source | Why |
|---|---|---|
| How many real sales I had | Your store (Tiendanube / Shopify) | Records the confirmed order, not the attribution |
| Whether Meta Ads drove those sales | Meta with "click only" window + incrementality test | Standard window inflates; incrementality test measures real impact |
| How much I made on those sales | Neither alone | Need to cross sales + costs + ad spend → profitability tool |
| Whether my campaigns are profitable | Real ROAS (Blended ROAS) | Divide real profit by total ad spend — not Meta's ROAS |
How to improve the quality of data Meta receives
The solution for incomplete events is server-side tracking (CAPI): instead of relying only on the browser pixel (which can be blocked), you also send events from your server. That gives you:
- Events that arrive even if the pixel is blocked by an ad blocker or iOS
- All 5 matching parameters complete (email, phone, name, city, postal code)
- High EMQ → Meta can identify who bought → better lookalikes → lower CPA
The Escalafy Pixel works this way: it runs from your server, sends all 5 matching parameters on every purchase event, and deduplicates automatically so Meta does not count the same event twice. The result is not that Meta "sees more sales" — it is that Meta identifies who bought better and builds more precise audiences with that.
Frequently asked questions
Is it normal for Meta to show more sales than my store?
Yes — it is the most common scenario. Meta attributes with wide windows (7-day click, 1-day view) and also counts conversions from users who only saw the ad. A difference of 20 to 60% above real sales is typical in prospecting campaigns.
Can Meta show fewer sales than my store?
Yes, that also happens. If your traffic is mostly iPhone and the majority declined ATT, or if many users have ad blockers, Meta loses signal and under-reports. In some stores with high mobile traffic, Meta sees only 60-70% of real conversions.
What is EMQ and why does it affect my results?
EMQ (Event Match Quality) measures how well Meta can identify the buyer behind each event. Without email, phone and address, Meta does not know who bought — and cannot build precise lookalike audiences. Low EMQ makes your audiences worse over time, even if you are selling the same volume.
Does server-side tracking fix the discrepancy problem?
It fixes the lost signal problem (events the pixel did not see) and improves data quality (more matching parameters, higher EMQ). It does not eliminate over-attribution from wide windows — that is fixed by adjusting the window in your report. The two corrections are complementary.
Quality data for Meta, real profit for you
The Escalafy Pixel sends events from your server with all 5 matching parameters complete. Meta identifies who bought better, builds better audiences, and your CPAs drop. And since Escalafy already has product cost, commissions and ad spend, you also see the real profit behind each conversion — not just whether Meta saw it or not.
Learn about the Escalafy PixelKeep reading
What Escalafy does for your store
Connect your channels and see the truth behind your numbers. No Excel, in real time.
