How to reconcile Meta Ads against your store's order table
This is the check we run first on every account, written out so you can run it without us. It takes about thirty minutes and needs two numbers: what Meta says it produced, and what your store's order table actually shows. The gap between them is the only honest measure of whether your tracking works — and if it comes back small, you do not need us.
Free30 minutesNo obligation
Specific to Meta × Ecommerce Orders
Meta purchases vs your order table: expect overlap, not parity
Send the order ID as the event_id on both the Pixel and Conversions API purchase, then compare Ads Manager purchases for a closed month against paid online orders. Meta reports aggregates, so the join is a total, not a per-order list. Meta claiming more than its click-driven share is normal under 1-day view; exceeding total online orders is breakage.
Meta never hands back a list of the orders it counted, so the order ID does a different job here: it is the event_id that lets Meta merge the browser and server copies of one purchase. Use the same form of the ID on both paths. A store that sends the short order number from the Pixel and the long internal order ID from the server produces two purchases per order, and nothing in Ads Manager labels them as duplicates.
The 1-day view part of the default setting credits orders from people who saw an ad in their feed and bought the next day through email, Google or a direct visit. Those orders are real, and Google and your email tool are claiming them too, so Meta's number is not meant to add up with the others. Ads Manager also places a purchase on the day of the impression or click rather than the order date; check whether your reporting view can switch to conversion time before comparing a month.
Pull Purchases and Purchase conversion value from Ads Manager for the closed month, with the attribution setting column visible, and check whether the value you send includes shipping and tax while your order total does not. Meta well above its click-only share is the view-through overlap. Meta above your total online orders, or Events Manager showing purchases that are not being deduplicated, is the common fault: mismatched event_id between Pixel and server.
Meta × Ecommerce Orders · what breaks
Why Meta and your store's order table disagree
- 01
Refunds never subtracted
The most common cause and the easiest to check. Sum refunds for the same period — if the platform figure is roughly your gross and your own figure is net, that difference is the whole gap.
- 02
Purchase event firing on page refresh
A confirmation page that re-fires on reload counts one order several times. Compare distinct order IDs against total conversions.
- 03
Point-of-sale orders in the same table
If you have a physical shop, counter sales sit in the same order table and will be counted as advertising conversions unless the channel is filtered.
- 04
Post-purchase upsells arriving late
If the conversion fires at checkout and an upsell adds revenue afterwards, the platform is under-reporting by the upsell take rate.
Meta × Ecommerce Orders · the fix
What you get from this — Meta × Ecommerce Orders
A number instead of a suspicion
The likely cause, narrowed
A basis for deciding
Meta × Ecommerce Orders · architecture
What each side is actually counting — Meta × Ecommerce Orders
- 1
What Meta counts
event_name from the standard set with exact casing, event_time in seconds, a shared event_id, an action_source, and hashed user_data that was normalized before hashing. Purchase additionally requires value and currency.
- 2
How Meta attributes it
fbclid arrives on the landing URL and is normally written into the _fbc cookie. If it isn't captured on landing, _fbc never exists — and _fbc is the strongest click signal Meta has, so its absence caps your match quality regardless of what else you send. Forward _fbp too, from the browser rather than regenerating it server-side.
- 3
The window it uses
Meta's default attribution is a 7-day click and 1-day view. View-through is included by default, which is a large part of why Meta claims more conversions than your other platforms — that overlap is expected rather than a fault.
- 4
What your store's order table counts
Paid orders with their totals, found in Shopify Admin → Orders, WooCommerce → Orders, or a direct query against the orders table.
- 5
The filter that makes them comparable
Financial status is paid, and the sales channel is online rather than point of sale.
Meta × Ecommerce Orders · events
Reading the gap — Meta × Ecommerce Orders
| What you see | What it usually means |
|---|---|
| 15%+ platform higher | Usually the wrong event entirely — the platform is claiming more than you took. usually refunds, duplicate firing, or a second channel bleeding into the same conversion action. |
| 20%+ platform lower | Usually structural — the platform is seeing fewer orders than you actually took. usually consent, ad blocking, or an identifier that never reached the order. |
Meta × Ecommerce Orders · diagnose
Diagnostic order
- 01
Confirm both numbers cover the same period and channel
- 02
Refunds never subtracted
The most common cause and the easiest to check. Sum refunds for the same period — if the platform figure is roughly your gross and your own figure is net, that difference is the whole gap.
- 03
Purchase event firing on page refresh
A confirmation page that re-fires on reload counts one order several times. Compare distinct order IDs against total conversions.
- 04
Point-of-sale orders in the same table
If you have a physical shop, counter sales sit in the same order table and will be counted as advertising conversions unless the channel is filtered.
- 05
Read the Deduplicated indicator and the per-event match quality score, both read over seven days
Match quality is where most Meta accounts lose attribution, and it's almost always normalization rather than coverage. An email hashed with a capital letter, or a phone hashed with brackets, produces a perfectly valid hash that matches nobody and errors nowhere. Normalize first, then hash, and read the score per event rather than overall.
Meta × Ecommerce Orders · prove
How to know you did it right — Meta × Ecommerce Orders
Source of truth
your store's order table — orders for a fully closed month
Meta × Ecommerce Orders · free audit
What we check in the free audit
- Confirm both numbers cover the same period and channel
- Refunds never subtracted
- Purchase event firing on page refresh
- Point-of-sale orders in the same table
- Read the Deduplicated indicator and the per-event match quality score, both read over seven days
Checked against
your store's order table — orders for a fully closed month
Free30 minutesNo obligation
Meta × Ecommerce Orders · when not to buy
When the answer is that you do not need us — Meta × Ecommerce Orders
- If almost all of your orders come from a channel with no click behind it, no tracking work will reach them — and knowing that is worth more than a build.
- If you're advertising a business type Meta restricts data collection for — health being the obvious one — the parameters you can legitimately send are narrower, and that constraint should shape the build rather than be worked around.
Meta × Ecommerce Orders · what we deliver
The method, step by step — Meta × Ecommerce Orders
Pull what Meta reports
The deduplicated indicator and the per-event match quality score, both read over seven days.
Pull what your store's order table shows
Export orders for a fully closed calendar month, filtered to paid and online. Count them, and sum the total after discounts and before shipping and tax.
Filter both to the same thing
Financial status is paid, and the sales channel is online rather than point of sale.
Compare per record, not on totals
FAQ
Meta × Ecommerce Orders questions, answered
For the comparison, view a 7-day click result alongside the default rather than changing what campaigns optimize toward. Check whether your Ads Manager offers the side-by-side attribution comparison.
No. Ads Manager reports totals; to check individual orders, keep your own log of the event_id values you sent and compare that log with your order table.
Because you should know the size of the problem before anyone quotes you for it. If the gap is small, you have saved yourself a purchase. If it is large, you now know what you are buying rather than taking our word for it.
No. Both numbers come from systems you already own and neither leaves them. There is no tool to sign up for and nothing to upload.
Then compare totals for a closed period and treat the result as directional rather than exact. The deduplicated indicator and the per-event match quality score, both read over seven days is still the right place to read the platform's side.
Under five percent is working. Five to fifteen usually means reversals are missing. Above twenty is normally the wrong event being counted, not a broken tag — which is why debugging tags first wastes so much time.
Then fix the filter before drawing any conclusion. Financial status is paid, and the sales channel is online rather than point of sale. A mismatch in scope produces a gap that looks like a tracking fault and is not one.
Book the free thirty-minute call and bring both numbers. We will tell you which of the causes above it is, and whether it is something you can fix yourself — which it sometimes is.
More on Meta × Ecommerce Orders
- Google Ads × Ecommerce OrdersHow to reconcile Google Ads against your store's order table
- TikTok × Ecommerce OrdersHow to reconcile TikTok Ads against your store's order table
- Microsoft × Ecommerce OrdersHow to reconcile Microsoft Ads against your store's order table
RELATED GUIDES
Systems of record beside ecommerce orders, and the funnels it settles
- Meta × Enrolment SystemHow to reconcile Meta Ads against your application or enrolment system
- Meta × Invoicing SystemHow to reconcile Meta Ads against your invoicing system
- Meta · Quiz → segmented offerHow to track quiz completion to segmented offer for Meta Ads
- Meta · App install → purchaseHow to track app install to in-app purchase for Meta Ads
- Meta · Animal sheltersMeta Ads conversion tracking for animal shelters and rescues
- Meta · NonprofitsMeta Ads conversion tracking for nonprofits
- Splitit → MetaConnecting Splitit to Meta Conversions API
- Helcim → MetaConnecting Helcim to Meta Conversions API
Free · 30 min
Found a gap between Meta and your store's order table?
Free30 minutesNo obligation
