How to reconcile Meta Ads against your point-of-sale system
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 point-of-sale system 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 × POS System
Meta vs in-store sales: hashed receipt emails, not fbclid
Match Meta to in-store sales by sending POS transactions with hashed email or phone as offline events through the Conversions API, timestamped at the sale. Compare a closed month. Expect Meta to claim more in-store buyers than any click could explain, because view-through is included by default; match only on customers who left contact details at the till.
fbclid and the _fbc cookie live in a browser, so they never reach a card reader. The workable key is the customer's hashed email or phone, collected through a digital receipt, loyalty program or account lookup at checkout, and sent as offline events with the order ID as event_id. Check whether your POS has a native Meta connection before building one; several do, and the settings decide which transactions get sent.
Meta's default 7-day click and 1-day view window matters more against a till than anywhere else. Anyone who scrolled past an ad yesterday and bought coffee today can be credited, so in-store matches lean heavily on view-through. Ads Manager also reports conversions against the day the ad was delivered, not the sale date. Break the offline results down by attribution setting and compare click-only against your matched transactions.
A matched count that covers only customers who gave contact details, well below total in-person transactions, is normal. A Meta in-store figure close to your total footfall means the channel filter is missing or view-through is doing almost all the work. The usual culprit is a POS integration that uploads every transaction, including anonymous cash and card sales, and lets Meta model the rest.
Meta × POS System · what breaks
Why Meta and your point-of-sale system disagree
- 01
Counter sales flowing into online conversions
Where the POS and the online store share an order table, the default integration sends everything. Reported return then climbs with footfall.
- 02
Store visits treated as attributable
Platform-reported store visits are modelled estimates, not counted events. Read them as directional and never sum them with online conversions.
- 03
Tips and taxes inside the conversion value
On food and service businesses tips are substantial and are not your revenue.
- 04
Offer codes never used
Without a code or a distinct landing path, there is no mechanism at all to connect in-store revenue to advertising.
Meta × POS System · the fix
What you get from this — Meta × POS System
A number instead of a suspicion
The likely cause, narrowed
A basis for deciding
Meta × POS System · architecture
What each side is actually counting — Meta × POS System
- 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 point-of-sale system counts
Transactions taken in person, which advertising cannot attribute to a click, found in Square, Lightspeed, Toast, Clover or whatever runs the till.
- 5
The filter that makes them comparable
In-person channel only, separated from any online orders in the same system.
Meta × POS System · events
Reading the gap — Meta × POS System
| What you see | What it usually means |
|---|---|
| 15%+ platform higher | Usually the wrong event entirely — the channel filter is missing, so counter sales are being counted as advertising conversions. |
| 20%+ platform lower | Usually structural — almost always correct rather than a fault. in-store revenue mostly cannot be attributed, and a small reported figure is the honest one. |
Meta × POS System · diagnose
Diagnostic order — Meta × POS System
- 01
Confirm both numbers cover the same period and channel
- 02
Counter sales flowing into online conversions
Where the POS and the online store share an order table, the default integration sends everything. Reported return then climbs with footfall.
- 03
Store visits treated as attributable
Platform-reported store visits are modelled estimates, not counted events. Read them as directional and never sum them with online conversions.
- 04
Tips and taxes inside the conversion value
On food and service businesses tips are substantial and are not your revenue.
- 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 × POS System · prove
How to know you did it right — Meta × POS System
Source of truth
your point-of-sale system — in-store transactions for a fully closed month
Meta × POS System · free audit
What we check in the free audit
- Confirm both numbers cover the same period and channel
- Counter sales flowing into online conversions
- Store visits treated as attributable
- Tips and taxes inside the conversion value
- Read the Deduplicated indicator and the per-event match quality score, both read over seven days
Checked against
your point-of-sale system — in-store transactions for a fully closed month
Free30 minutesNo obligation
Meta × POS System · when not to buy
When the answer is that you do not need us — Meta × POS System
- If almost all of your in-store transactions 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 × POS System · what we deliver
The method, step by step — Meta × POS System
Pull what Meta reports
The deduplicated indicator and the per-event match quality score, both read over seven days.
Pull what your point-of-sale system shows
Export transactions by business date for a closed month, split by sales channel, and note the in-person share of total revenue.
Filter both to the same thing
In-person channel only, separated from any online orders in the same system.
Compare per record, not on totals
FAQ
Meta × POS System questions, answered
Report them separately from click matches. A view-only in-store match shows that a customer was exposed to an ad, not that the ad caused the visit, and a geo holdout is the way to test that.
Ads Manager can date a conversion to when the ad was delivered rather than when the sale happened, so a weekend impression can carry a Monday purchase.
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. In-person channel only, separated from any online orders in the same system. 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 × POS System
- Google Ads × POS SystemHow to reconcile Google Ads against your point-of-sale system
- TikTok × POS SystemHow to reconcile TikTok Ads against your point-of-sale system
- Microsoft × POS SystemHow to reconcile Microsoft Ads against your point-of-sale system
RELATED GUIDES
Systems of record beside pos in store, and the funnels it settles
- Meta × Enrolment SystemHow to reconcile Meta Ads against your application or enrolment system
- Meta × Job SystemHow to reconcile Meta Ads against your job management system
- Meta · Reactivation → repeat purchaseHow to track lapsed customer reactivation to repeat purchase for Meta Ads
- Meta · Online → in-storeHow to track online research to in-store purchase for Meta Ads
- Meta · TowingMeta Ads conversion tracking for towing companies
- Meta · Tattoo studiosMeta Ads conversion tracking for tattoo studios
- Toast → MetaConnecting Toast to Meta Conversions API
- Zenoti → MetaConnecting Zenoti to Meta Conversions API
Free · 30 min
Found a gap between Meta and your point-of-sale system?
Free30 minutesNo obligation
