Meta Ads conversion tracking for restaurants
A restaurant's conversions are scattered across systems it mostly doesn't own: reservations through a booking platform, delivery orders through a marketplace, and a large share of bookings still arriving by phone. What Meta Ads adds on top of that is a mechanical requirement: fbclid and _fbc have to reach the record that holds the money, because Meta can only credit a conversion it can tie back to a click it recognizes. This page covers both halves — what a conversion is in restaurants, and what Meta specifically needs to accept it.
Free30 minutesNo obligation
Specific to Meta × Restaurants
Meta for restaurants: Schedule for bookings, Purchase for orders
On Meta, a restaurant should send Schedule for a reservation honored and Purchase for an online order, both through the Conversions API from the reservation and ordering systems, matched on fbc, fbp and hashed email or phone. Use the booking or order reference as event_id. Marketplace orders get no event at all.
Meta's job for a restaurant is mostly local awareness and repeat visits, and its click-to-booking path is short: someone sees a reel of the dining room on Thursday and books for Saturday. That fits the 7-day click window well, but the 1-day view window will also credit diners who were already coming. Compare Meta's Schedule count against covers seated from the same ZIP codes before deciding the channel is working.
The common break is Meta's in-app browser. A diner taps an ad inside Instagram, the reservation widget loads on the platform's own domain, and fbclid never reaches the booking. Capture fbclid on your landing page, pass it into the widget as a parameter where supported, and write the reservation's email and phone to your server so CAPI can match on hashed user data when the click ID is lost.
Send the booking as Schedule at the moment it is made only if you also send the seated outcome; otherwise Meta optimizes for no-shows. For online ordering, send Purchase from your own ordering system with the order total as value and the order number as event_id. If drinks feature in creative, Meta's alcohol policy requires age and location targeting that meets local law.
Meta · Restaurants · what breaks
Why Meta under-reports for restaurants
- 01
Reservations on a third-party platform
Off-domain, unattributed.
- 02
Delivery marketplace orders invisible
A large revenue channel with no ad attribution.
- 03
Phone bookings untracked
Still a major channel for most restaurants.
- 04
Fbclid and _fbc never reaches the record
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.
Meta · Restaurants · the fix
What working looks like — Meta · Restaurants
Each booking path measured separately
Web, platform, phone.
Cover value rather than booking count
A table of two and a table of ten differ.
Calls attributed to campaigns
The channel most restaurants ignore.
Meta · Restaurants · architecture
How Meta and restaurants actually connect
- 1
The conversion in restaurants
Reservation made, reservation honoured, order placed, order value. No-show rates in hospitality make the second stage matter as much as the first.
- 2
Meta Ads needs a click to match
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.
- 3
The identifier: fbclid and _fbc
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.
- 4
Where it gets sent from
your reservation and ordering systems' records.
- 5
Deduplication and window
This is the mechanism that decides whether adding CAPI helps or doubles your conversions. Both the Pixel and the server event must carry the same event_id — the order or booking reference works best, because both sides can produce it without coordinating. A case difference in the event name alone produces two events even with a matching ID. Read the Deduplicated indicator in Events Manager over a full week, not one session. 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.
Meta · Restaurants · events
The conversion map for restaurants
Four stages spread across systems you mostly don't own.
| Event | What it means here |
|---|---|
| Reservation made | Server-side from the reservation platform where it exposes a webhook. |
| Reservation honoured | Server-side. Covers seated is the real conversion. |
| Phone booking | Call tracking plus the reservation system's record. |
| Online order | Server-side from your own ordering system, with order value. |
| Marketplace order | Reported separately. Usually not attributable to your ads at all. |
Meta · Restaurants · diagnose
Diagnostic order — Meta · Restaurants
- 01
Count records carrying fbclid and _fbc
- 02
Reservation platform on another domain
The click ID doesn't cross unless carried, so bookings look like direct traffic.
- 03
No-shows counted as conversions
Restaurant no-show rates make booked-only reporting optimistic.
- 04
Phone bookings untracked
Hard-coded numbers, and no click-to-call event on mobile.
- 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 · Restaurants · prove
How it gets proven — Meta · Restaurants
Source of truth
your reservation and ordering systems' records
- Click ID confirmed reaching the reservation platform, or the limitation documented.
- Number insertion and click-to-call confirmed on a real mobile device.
- Covers seated reconciled against the reservation system for a closed month.
- Marketplace orders reported separately and explicitly.
- The Deduplicated indicator and the per-event match quality score, both read over seven days read directly, not inferred from an upload succeeding.
Meta · Restaurants · free audit
What we check in the free audit
- Count records carrying fbclid and _fbc
- Reservation platform on another domain
- No-shows counted as conversions
- Phone bookings untracked
- Read the Deduplicated indicator and the per-event match quality score, both read over seven days
Checked against
your reservation and ordering systems' records
Free30 minutesNo obligation
Meta · Restaurants · when not to buy
When you don't need this — Meta · Restaurants
- If Meta already reports conversions that reconcile against your reservation and ordering systems' records within a few percent, this is working and there is nothing to buy.
- Measure identifier coverage yourself first — pull your last hundred records and count how many carry fbclid and _fbc.
- 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 · Restaurants · what we deliver
What gets built — Meta · Restaurants
Click ID carried into the reservation platform
Where it supports parameters.
Call tracking with number insertion
On every template and the sticky mobile bar.
Reservation system as the source of truth
Covers seated, not bookings made.
Delivery marketplace reported as its own channel
Honestly, including what can't be attributed.
Dispatch via the Conversions API
Server events go through CAPI with an action_source describing where the conversion happened. Offline outcomes flow through the same API rather than a separate product. Verify current field names against Meta's documentation before building — this surface changes.
Written guarantee
95%+ tracking accuracy
Measured against your reservation and ordering systems' records. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Meta · Restaurants questions, answered
Schedule is the closest standard event for a reservation. Send it with the reservation reference as event_id, and add a separate event or value update for the cover actually seated rather than counting every booking as a win.
Not through your pixel or CAPI, because the order happens on the marketplace's checkout. Some marketplaces offer their own ad products and reporting; treat those numbers as marketplace data rather than something your Meta account can claim.
Where the platform supports link parameters or a webhook, yes. Where it doesn't, we say so rather than reporting a number we can't stand behind.
Seated covers. No-show rates are high enough that booking-only reporting will consistently overstate what your ads produced.
Report them, don't claim them. The marketplace owns that customer journey and attributing it to your ads corrupts every other number in the report.
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.
Server events go through CAPI with an action_source describing where the conversion happened. Offline outcomes flow through the same API rather than a separate product. Verify current field names against Meta's documentation before building — this surface changes.
By reading the Deduplicated indicator and the per-event match quality score, both read over seven days and reconciling against your reservation and ordering systems' records. An upload that succeeds is not an upload that matched.
More on Meta · Restaurants
- Meta CAPIA one-click CAPI integration sends thin events. That's why your Event Match Qual…
- Missing Meta purchasesEvents Manager shows fewer purchases than your store
- Meta CAPI deduplication not workingWhy is my Meta CAPI deduplication not working?
RELATED GUIDES
More for restaurants: other angles on the same outcome
- RestaurantsConversion tracking for restaurants, across reservations, orders and calls
- Meta · Tattoo studiosMeta Ads conversion tracking for tattoo studios
- Meta · Powersports and RVMeta Ads conversion tracking for powersports and RV dealers
- Meta · Reactivation → repeat purchaseHow to track lapsed customer reactivation to repeat purchase for Meta Ads
- Meta × POS SystemHow to reconcile Meta Ads against your point-of-sale system
- TheFork → MetaConnecting TheFork to Meta Conversions API
- TableinConversion tracking for Tablein reservations
- Meta · Auto repairMeta Ads conversion tracking for auto repair and collision shops
Free · 30 min
Get Meta reporting what restaurants actually earn
Free30 minutesNo obligation
