From the blog
How we measure restaurant ads in guests, not clicks
An ad report that says “42,000 impressions, 3.1% click-through rate” tells a restaurant owner nothing they can act on. Rent is paid in guests. So that's the unit we report in, and this is how we get there without pretending attribution is cleaner than it is.
Why measure restaurant ads in guests instead of clicks?
Because a restaurant's economics are per guest: food cost, labour and margin all scale with seats filled. Clicks and impressions are steps on the way to a guest, not the thing itself, and optimizing for them produces busy dashboards and empty rooms.
There's a second reason. Meta and Google will happily optimize for whatever you ask them to. Ask for clicks and you'll get cheap clicks from people who never book. Ask for bookings, and give the platform a way to see bookings, and it starts finding people who actually show up. Measurement isn't just reporting; it's what the campaign learns from.
Rent is paid in guests.
How do you know a reservation came from an ad?
Four layers, stacked: a trackable booking link per campaign, offer codes for the visits a link can't capture, the reservation platform's own source report, and a before and after baseline for everything else. No single layer is complete; together they're honest.
Layer 1: a trackable booking link per campaign
Every ad points at a booking or ordering link tagged with the campaign it came from. When someone books through that link, the reservation carries the tag. This is the cleanest signal and it's what the ad platform optimizes toward.
What it misses: people who see the ad, then walk in or phone. That's a lot of restaurant traffic, which is why we don't stop here.
Layer 2: offer codes and mentions
For campaigns with an offer (“mention SUNDAY for a complimentary dessert,” a code on an online order), the offer itself is the tracker. Staff log the mentions; the POS logs the codes. It's low-tech and it catches the walk-ins the link can't.
Layer 3: the reservation platform's source report
Most reservation systems record where a booking originated: your website, Instagram, Google, a direct link. We pull that report monthly and compare the campaign period against the previous one. A jump in “Instagram” and “Google” bookings during a campaign, with everything else flat, is strong evidence even without a tag.
Layer 4: the baseline
Before a campaign starts we record the restaurant's normal guests by day of week for the prior four to eight weeks, from the POS or reservation system. During and after the campaign we compare against that baseline, day by day. If Tuesday guests are up and the only thing that changed was a Tuesday-targeted campaign, we count the lift, and we say plainly that it's an estimate.
What goes in the monthly report?
Reservations and guests attributed to each campaign, cost per reservation, ad spend, the baseline comparison, and what we're changing next month. One page. Platform metrics are in the appendix, not the headline.
Concretely, a client sees:
| Line | What it means |
|---|---|
| Tracked reservations | Bookings made through campaign links or codes |
| Estimated additional guests | Lift against the baseline, labelled as an estimate |
| Ad spend | Paid to Meta directly; we never hold it |
| Cost per tracked reservation | Ad spend ÷ tracked reservations |
| Reservation source shift | The platform's own source report, this month against last |
| Next month | What we're cutting, scaling, or shooting |
Reach, impressions and click-through rate are included further down because they help us diagnose creative. They are not the result.
What's a good cost per reservation?
There isn't a universal number. It depends on the average cheque, the margin, and how often a new guest comes back, so we calculate a target for each restaurant and judge the campaign against that.
The method is in our post on how much a restaurant should spend on Instagram ads: work out the contribution per guest, allow for a return visit, and set the target at a fraction of that. A campaign that beats the target gets more budget. One that can't reach it after a month gets new creative or a new offer, not more money.
Where does measurement break, and what do we do about it?
We'd rather tell you the holes than hide them:
- Phone bookings and walk-ins are only visible through offer codes and the baseline. That's why every campaign carries an offer where it makes sense, and why we set the baseline before launch, not after.
- Cross-platform overlap. Someone sees a Meta ad, searches your name, books through a Google ad. Both platforms claim it. We de-duplicate against the reservation system's record rather than trusting either platform's count.
- Multi-location restaurants need per-location links and codes, or the lift gets smeared across sites.
- Third-party delivery apps rarely pass source data. If delivery is a big share of your revenue, a POS-connected website gives you both the margin and the measurement back.
What you should ask any agency about reporting
If you're comparing agencies, these questions separate the ones measuring guests from the ones measuring themselves:
- What unit is the headline number in: guests, reservations, or impressions?
- How is a reservation attributed to a campaign, and what does that miss?
- Do you set a baseline before launch?
- Who holds the ad budget, and is it marked up?
- What did you change last month because of the numbers?
Any agency worth hiring will have short, specific answers. Ours are above.