Skip to main content
Meta × POS SystemRun this yourself

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

  1. 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.

  2. 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.

  3. 03

    Tips and taxes inside the conversion value

    On food and service businesses tips are substantial and are not your revenue.

  4. 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. 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. 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. 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. 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. 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

15%+ platform higherUsually the wrong event entirely — the channel filter is missing, so counter sales are being counted as advertising conversions.
20%+ platform lowerUsually 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

  1. 01

    Confirm both numbers cover the same period and channel

  2. 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.

  3. 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.

  4. 04

    Tips and taxes inside the conversion value

    On food and service businesses tips are substantial and are not your revenue.

  5. 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

    Get my free conversion tracking audit

    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.

    Free · 30 min

    Found a gap between Meta and your point-of-sale system?

    Free30 minutesNo obligation