Get your Missing Meta purchases tracking to 95%+ accuracy guaranteed in writing.
Your store's order count and your Events Manager purchase count don't agree, and the difference isn't small. Those missing orders are real, paid for, and already shipping — Meta just never received the event. I find where the Purchase event dies, move it to your server so a browser can't kill it, and reconcile the result against your order export.
Free30 minutesNo obligation
Missing Meta purchases · what breaks
Here's where Purchase events usually die
- 01
The Pixel never runs for a large slice of your buyers
Safari's tracking prevention, content blockers and privacy browsers stop the browser Pixel before Purchase ever fires. The order lands in your store as normal. Meta simply isn't told about it.
- 02
Wallet checkouts skip the page the Pixel sits on
Shop Pay, PayPal and Klarna hand the customer back to a confirmation page that plenty of people close before it finishes loading. If Purchase only exists on that page, those orders are silently absent.
- 03
Purchase isn't priority one in Aggregated Event Measurement
You get eight ranked events per verified domain. If Purchase sits below ViewContent and AddToCart in the priority list, opted-out iOS traffic reports the higher-priority event instead and your purchase count quietly shrinks.
- 04
A partner CAPI feed is sending thin, unmatchable events
App-store integrations often post Purchase with a value and nothing else — no hashed email, no phone, no fbp, no fbc. The event arrives and counts, but Meta can't tie it to the person who saw the ad, so it never reaches your ad set reporting.
Missing Meta purchases · the fix
What changes after Purchase moves to your server
Every paid order produces exactly one Purchase event
Fired from your order webhook, not from a page load. A closed tab, a blocked script or a slow redirect no longer decides whether Meta hears about a sale.
Match Quality climbs because the identifiers are complete
Hashed email, phone, name, city, plus fbp and fbc carried from the browser and stored server-side. That's the difference between an event that counts and an event that gets attributed.
Ad set reporting stops under-counting your best audiences
When only half your purchases match, the audiences that convert quietly look mediocre. Complete matching lets the reporting show which ad sets actually produced the orders you already have.
Your Events Manager total ties back to your order export
You can open both files and see the same number. That's the point at which you can start trusting a Meta ROAS figure enough to move budget on it.
Missing Meta purchases · normal or broken
Which number are you comparing? That decides everything.
Half the "missing purchases" I get called about are Ads Manager attributed purchases being compared to total store orders, which are supposed to differ. The real test is Events Manager against your order export.
Normal, not a fault
Ads Manager shows fewer purchases than your store
Ads Manager only claims orders it can tie to an ad within the attribution window — 7-day click, 1-day view by default. Your organic, email and direct orders aren't missing. They were never Meta's to report.
Events Manager is higher than Ads Manager
Events Manager counts every event received, attributed or not. Ads Manager counts only the attributable subset. Those two panels answering different questions is the system working correctly.
Yesterday's ROAS keeps improving for two more days
Meta backfills conversions to the day of the ad interaction, so recent days are always understated when you look at them. Judge a week only after it has closed.
Some purchases arrive with no fbc parameter
A buyer who came from email or typed your URL never had a click ID to carry. Missing fbc on non-ad traffic is correct behavior, not a broken Pixel. It matters only on ad-driven sessions.
Actually broken
Events Manager is materially below your paid order count
Events Manager should approximate every order, not the attributed subset. If it's short of your store's own total, events aren't being received, and no attribution setting explains it.
The missing orders are concentrated on iOS and Safari
Segment the gap by browser in your store export. If Safari and iOS buyers are the ones absent, the browser Pixel is being blocked or its cookie has expired, and only a server-sent event recovers them.
Shop Pay, PayPal and Apple Pay orders never appear
Wallet checkouts complete on the provider's flow and can skip the page the Pixel sits on. Those orders systematically never fire, which is why the gap tracks your wallet payment share almost exactly.
The purchase count fell off a cliff on one date
A theme deploy, an app update, or a new consent banner. Attribution changes are gradual; a step change on a calendar day is a technical event you can trace to a release.
Missing Meta purchases · diagnose
Six checks that tell you how big the real gap is — Missing Meta purchases
Two of these are free fixes you can ship this afternoon; the rest tell you whether the remaining gap justifies a rebuild.
- 01
Count the true gap against Events Manager
Export paid orders for a closed seven-day window. Compare that count to the Purchase event count in Events Manager for the same days — not to Ads Manager attributed purchases. That comparison is the whole diagnosis.
- 02
Place a test order with Pixel Helper open
Run a real checkout with the Meta Pixel Helper extension running. Confirm Purchase fires exactly once and carries value, currency and content_ids, and note whether an event_id is present.
- 03
Segment the misses by browser and payment method
Take the orders that never appeared and group them by browser and by payment type. If iOS, Safari, or wallet checkouts dominate, you've found your failure mode without touching a line of code.
- 04
Check the AEM priority list for Purchase
Events Manager, then Aggregated Event Measurement, on your verified domain. If Purchase isn't first in the priority list, opted-out iOS traffic reports something lower instead. Reordering it takes two minutes.
- 05
Read connection method and Match Quality
Events Manager shows Browser, Server or Both per event, which customer parameters actually arrive, and the Event Match Quality score. A thin server feed with no email, phone, fbp or fbc is visible here immediately.
- 06
Hunt for a second pixel ID or dataset
A native channel app plus a hardcoded pixel means part of your volume lands in a dataset your ad account doesn't read from. Search the page source for "fbq('init'" and compare every ID you find.
Missing Meta purchases · prove
Order by order against your export, then Match Quality — Missing Meta purchases
Two things get verified: that every paid order produced exactly one Purchase event, and that those events carry enough identity to actually attribute.
Source of truth
Your store's paid order export — Shopify orders or successful Stripe charges
- Take a closed seven-day window and export order ID, timestamp, value, currency and payment method.
- Pull the same window from Events Manager by event received, not from Ads Manager attributed results.
- Match order to event on event_id, which we derive from your order ID, so every miss has a name.
- Confirm each matched order produced one Purchase after deduplication, never a browser and server pair.
- Check Event Match Quality on Purchase holds at 8+ across the window, which is the written guarantee.
- Sign-off is 95%+ of paid orders present in Events Manager, verified against your own order export.
Missing Meta purchases · free audit
What we check in the free audit
- Count the true gap against Events Manager
- Place a test order with Pixel Helper open
- Segment the misses by browser and payment method
- Check the AEM priority list for Purchase
- Read connection method and Match Quality
- Hunt for a second pixel ID or dataset
Checked against
Your store's paid order export — Shopify orders or successful Stripe charges
Free30 minutesNo obligation
Missing Meta purchases · when not to buy
Four reasons not to buy this — Missing Meta purchases
Meta tracking work is worth money at a certain spend and a certain gap size. Below either, it isn't.
- Events Manager is already within a few percent of your order count. What's left is attribution, and a rebuild won't move it.
- You've been comparing Ads Manager attributed purchases to total store orders. Those numbers are supposed to differ — re-check first.
- You spend under about a thousand a month on Meta, or Meta isn't a channel you plan to scale this year.
- You already run a Conversions API feed with Match Quality in the eights and Purchase top of the AEM list. Buy an audit, not a rebuild.
Missing Meta purchases · what we deliver
What you get on a Meta Purchase rebuild
Purchase fired server-side from your order webhook
The event leaves your backend when the order is genuinely confirmed and paid, carrying currency, value, contents and the order ID.
event_id set to the order ID on both browser and server
The same deterministic ID on both hits so Meta collapses them into one event instead of counting the same sale twice.
Advanced matching with hashed email, phone, fbp and fbc
Normalized and SHA-256 hashed in the server container, with fbc reconstructed from the fbclid captured at landing when the cookie has been trimmed.
AEM event priority reset with Purchase at the top
Your eight event slots re-ranked so the money event outranks upper-funnel events, and unused events cleared out of the list.
Domain verification and dataset ownership confirmed
Domain verified in Business Manager, the right dataset connected to the right ad account, and any duplicate or orphaned pixel IDs identified and retired.
A seven-day order-by-order reconciliation
Your store's order export matched against Events Manager row by row, with every unmatched order accounted for rather than rounded away.
Written guarantee
95%+ tracking accuracy
Measured against Your store's paid order export — Shopify orders or successful Stripe charges. Miss it and we keep working at no cost.
FAQ
Missing Meta purchases questions, answered
Partly, and some of it is genuinely easy. Open Events Manager, check your Aggregated Event Measurement priority list and move Purchase to the top — that's a two-minute change that helps immediately. Verify your domain if it isn't. Check you don't have two pixel IDs firing. Where DIY runs out is the browser-block problem: no setting inside Meta fixes an event that never left the customer's device. That needs the Purchase event to originate from your server, and that's a build.
If you're spending under about a thousand dollars a month on Meta, or you're not using Meta at all as a scaling channel, the gap costs you less than the fix. Same if your store already runs a properly configured Conversions API feed with Match Quality in the eights — check before you buy anything. The case for a rebuild gets strong when Meta is a real budget line and you're making scaling decisions from a purchase count you know is short.
It sends something, and it's better than nothing. In practice the native channel and third-party apps often ship a limited event set with thin customer parameters, and they own the dataset connection in ways that make debugging awkward. I audit what yours is actually sending before replacing anything — if it's already good, I'll say so.
No. The orders are complete and the revenue is in your account. What you lost is the attribution — Meta can't connect those purchases to the ads that drove them, so its optimization is learning from a partial picture and your reported ROAS is understated. Fixing tracking doesn't create revenue. It lets you see where the revenue you already have came from.
Not if it's built correctly. Both the browser Pixel and the server event carry the same event_name and the same event_id derived from your order ID, and Meta collapses the pair. Duplicates happen when the server event has no ID, uses a random one, or arrives outside Meta's roughly 48-hour deduplication window. That last one is why batch-style CRM uploads so often double-count.
Those never touch a browser at all, so a Pixel was never going to see them. Once Purchase originates from your backend, a renewal charge or a manually keyed order can fire the same event with the same structure. For most subscription brands that's the single biggest chunk of the missing volume.
It's a written guarantee, not a projection. Match Quality is Meta's score for how confidently it can tie your event to a real person. Below about five, events arrive and count in Events Manager but frequently don't reach attribution. Eight or above means the identifiers are complete enough that the purchase gets credited to the ad that earned it.
More on Missing Meta purchases
- GuideShopify Purchases Missing in Meta Events Manager? Run This Checklist
- GuideMeta Conversions API Errors Explained: Invalid Parameters, Missing Data, Rejected Events
- GuideEvent Match Quality Is Low: Why Your Meta EMQ Score Sucks and How to Raise It
- Meta purchases don't match ShopifyWhy don't my Meta purchases match Shopify?
- Meta purchase event missingWhy is my Meta purchase event missing?
- Meta server events missing user dataWhy are my Meta server events missing user data?
Free · 30 min
Let's count exactly how many purchases Meta is missing
Free30 minutesNo obligation
