How to Measure Restaurant Marketing ROI Using Booking Data
Impressions and follower counts are the wrong denominator for a restaurant. Here are the four numbers that decide a marketing budget, how to work out what a cover is really worth, and the traps that make good campaigns look bad.
Marketing reports for restaurants are usually written in a currency restaurants cannot spend. Reach, impressions, engagement rate, follower growth. All of it describes attention, none of it describes covers, and a dining room is a fixed number of seats turning a fixed number of times a night. You cannot serve an impression.
This is the strategic companion to the practical guide. If you want the mechanics of entering spend and reading the report, Measure booking ROI in Marketing Insights covers the buttons. This is about what the numbers mean and which of them should change a decision.
Why attention metrics are the wrong denominator
An e-commerce shop can, in principle, sell to everyone who sees an ad. A restaurant cannot. Your addressable market is people who will physically travel to one address, on a night you are open, when they happen to want to eat out. Reaching fifty thousand people is not fifty times better than reaching a thousand of the right ones — it is usually worse, because you paid for the difference.
There is also a ceiling that no other business type has quite so hard. If Saturday at eight is already full, a campaign that produces more Saturday-at-eight demand has produced nothing. The covers you should be buying are the ones on a Tuesday, in the early sitting, in February. Marketing that ignores where your empty seats actually are will look busy and change nothing on the bank statement.
The only honest denominator is a booking
Every metric in this guide divides by confirmed bookings, completed bookings, or covers. If a number in your marketing report has none of those in it, it is describing activity rather than results.
The four numbers that decide a budget
You need four figures and no more. Everything else on a dashboard is diagnostic detail that explains these.
The gap between the first two numbers is the most diagnostic thing in the report. A channel with a low cost per confirmed booking and a high cost per completed booking is producing people who book and do not arrive. That is not a marketing win with a no-show problem attached; it is a marketing loss that a confirmed-bookings report is hiding from you.
What a cover is actually worth to you
Most operators, asked what a cover is worth, quote the average bill. That is the number to compare against your marketing spend only if food arrives free and staff work for nothing.
What you can afford to spend to win a guest is the contribution margin: what is left from their bill after the costs that only exist because they came. Food and drink cost, obviously. Variable labour, if an extra sitting means an extra shift or extra hours — and if it does not, if the same brigade is standing there either way, then it does not belong in the calculation. Card fees and any commission on the booking. Rent, insurance, salaried management and the loan on the coffee machine are not in it, because they are paid whether the table sits empty or not.
Those figures are an example, not a benchmark — put your own in. But the logic holds: a party of two is worth roughly forty-one pounds of contribution here, and any acquisition cost below that adds money to the business, even if the ROAS on the headline bill looks unimpressive. Above it, you are buying covers at a loss no matter how good the campaign looks.
Set a ceiling before you launch, not after
Write down the most you will pay for a completed booking, based on your own contribution margin, before you spend anything. It converts an argument about whether a campaign "felt worth it" into a number you already agreed on.
Attributed revenue is not incremental revenue
This is the distinction that separates operators who make good budget decisions from operators who make confident ones.
Attributed revenue is the value of bookings that carried your tracking link. Incremental revenue is the value of bookings that would not have happened without the campaign. They are never the same figure, and the gap is largest exactly where you are most likely to overspend.
Bid on your own restaurant name and you will see a spectacular ROAS. Most of those people were going to book anyway; they typed your name in. You bought a click for a guest you already had. Meanwhile a campaign introducing you to people three neighbourhoods away shows a mediocre ROAS while producing almost entirely new demand. Judged on attributed revenue alone, you would cut the second and double the first, which is precisely backwards.
You cannot separate the two perfectly without proper testing, but you can get close enough to decide. Turn a channel off for two weeks and watch total covers, not attributed covers. If total volume barely moves, the channel was mostly reallocating demand you already had. If it drops, it was creating it. Run that test in a stable period, never over a holiday.
Never compare ROAS across channels with different attribution coverage
A channel where nine bookings in ten carry a tracking link and a channel where four in ten do are not measured on the same scale. The second will always look worse, regardless of how it actually performs. Fix the tagging before you compare, or compare only channels tagged to the same standard.
What to do about the Direct/Unknown pile
Every restaurant that starts measuring discovers that most of its bookings have no source attached. This is normal and it is not a broken report. Phone bookings, walk-ins entered by a manager, regulars who go straight to your site, and everyone who booked before you started tagging all live there.
The task is to shrink it deliberately rather than to be alarmed by it.
- Tag the placements you control, in order of likely volume: your Google listing, your website, your social profiles, your emails. Create marketing tracking links covers the mechanics.
- Give print and offline placements a QR code with its own campaign, so table talkers, menus and local press stop being invisible.
- Ask on the phone. One question — "how did you hear about us" — recorded in the booking note turns a chunk of the pile into data no link can capture.
- Accept the remainder. A steady Direct/Unknown share of thirty to fifty per cent for an established restaurant is a sign of a loyal base, not a measurement failure.
Watch the share rather than the count. If Direct/Unknown grows as a proportion while your tagged channels are flat, a link has broken somewhere and it is worth an hour to find out where.
A worked example, end to end
Round numbers, invented for illustration, using the £20.60 contribution margin from earlier and an average party of two.
Read it in that order and the decisions write themselves. The listing costs nothing and produces the most, so the work there is protective: keep it accurate, keep the link live. Email is absurdly efficient and under-used at twenty-nine bookings a month, so send more of it. The local-radius campaign clears its cost per completed booking against a £41 contribution per party, so it stays.
The discount campaign is the interesting one. It has the better cost per confirmed booking of the two paid campaigns and looks like the winner on a surface reading. But twenty-seven of its sixty-one bookings never arrived, and the guests who did arrive spent below the £38 average because the discount came off their bill. On contribution rather than volume, it is the weakest paid line on the page, and it is the one to cut first.
A monthly review that takes twenty minutes
Do this on the same day every month, in a quiet hour, with last month closed and no campaign launched in the past fortnight.
- Update your average spend per guest from the till, and recheck your contribution margin if food costs have moved.
- Enter the actual spend for each channel, including anything paid outside the ad platforms.
- Sort channels by cost per completed booking, not by bookings or by ROAS.
- Check the completion rate on every channel. Anything below your house average is producing weaker demand than the volume suggests.
- Compare each channel against your contribution margin per party, and move budget from the worst line to the best one.
- Write down the one change you made and why, in a sentence. Next month you will want to know.
One change a month, held to for a month, beats continuous dashboard-watching. Restaurant demand is seasonal and noisy, and reacting weekly means reacting to weather.
The traps that ruin good numbers
- Judging a campaign the morning after it ends. With a 30-day attribution window, a campaign keeps earning credit for weeks. Wait a full month after the last day of spend before you call it.
- Treating a confirmed booking as revenue. Only completed covers pay for anything. Any channel comparison that stops at confirmed bookings will flatter your discount campaigns and your least committed audiences.
- Comparing estimated revenue with actual as if they were the same. Estimated figures come from the averages you configured, so an optimistic average makes everything look profitable. Keep the average conservative and check which label a figure carries.
- Buying demand for slots that were already full. Before spending, look at where your empty seats actually are by day and by sitting, and point the campaign at those.
- Ignoring the cost of no-shows in the acquisition maths. A campaign with a fifteen-point worse completion rate needs a proportionally lower cost per booking just to break even with a better one.
None of this works without clean data underneath it, which means every booking arriving through one system that records where it came from. If your bookings are still spread across an inbox, a phone pad and a marketplace, start with How to Organise Phone, Walk-In and Website Reservations and come back to the ROI question once the book is in one place.
Related articles
- How to Track Restaurant Bookings from Instagram and FacebookSocial sends real bookings and reports almost none of them back. Here is how to tag the four placements that matter, carry tracking through a link-in-bio page, and judge content by covers instead of likes.Updated 9 June 2026Read More
- How to Track Reservations from Google Business ProfileYour Google listing is probably the single biggest source of bookings you have, and almost certainly the least measured. Here is how to tag every placement on the profile so you can tell Maps apart from Search apart from a post.Updated 26 May 2026Read More
