Restaurant win-back campaign ROI: how to tell if it actually made money
Almost every report you will be shown counts guests who were coming back anyway. Here is the one decision that separates the two, and the arithmetic that goes with it.
A win-back campaign's return rate is not its result. Some of the guests who came back would have come back on their own. The number that means anything is incremental revenue: the visits that would not have happened without the campaign. You measure it by deliberately leaving a random slice of the lapsed list uncontacted and comparing the two groups over the same window. If nobody offers you that holdout, the figure you are being shown is inflated, and nobody can tell you by how much.
The number you get shown
A typical end-of-campaign report reads something like this. We contacted 1,200 lapsed guests. Ninety-four of them came back. At your average check, that is several thousand dollars of recovered revenue.
Every figure in that sentence can be true and the conclusion still be wrong, because of the question it does not ask: how many of those ninety-four were walking in anyway?
Lapsed does not mean gone. A restaurant's lapsed list is not a graveyard, it is a queue. People were travelling, or busy, or had a stretch of cooking at home, and some proportion of them drift back every month with no prompting at all. That drift is invisible unless you measure it. And when it is invisible, it gets billed to the campaign.
This is not a small correction. It is the difference between a campaign that pays for itself and one that quietly does not, and the report looks identical either way.
The fix is one decision, made before you send
Take the lapsed list and set aside a random slice before anything goes out. Ten to twenty percent is the usual range. Those people receive nothing. Then, over the same window, compare how many came back in each group.
The gap between the two rates is what the campaign caused. Everything below it was going to happen anyway.
| Contacted | Held out | |
|---|---|---|
| Guests in the group | 1,000 | 200 |
| Came back in the window | 78 | 9 |
| Return rate | 7.8% | 4.5% |
| Lift caused by the campaign | 3.3 points | |
| Visits the campaign actually caused | 33, not 78 | |
Seventy-eight guests came back. Thirty-three of them came back because of the campaign. The other forty-five were the queue moving on its own, and a report without a holdout would have counted all seventy-eight.
Then finish the arithmetic honestly. From those thirty-three visits, subtract what the offer gave away and what the sending cost. What survives is the campaign's real contribution, and it is the only figure worth putting next to what you paid for it.
Two things that make a holdout honest
It has to be random
Not the guests without a phone number. Not the ones whose email bounced last time. Not the oldest slice of the list. Any of those choices makes the held-out group different from the contacted one in a way that has nothing to do with the campaign, and then the comparison measures that difference instead.
The window has to be fixed before the send
Both groups get counted over the same dates, and those dates get decided in advance. Choosing the window after seeing the numbers is the most common way a flat result turns into a good one, and it is rarely done dishonestly. It just feels reasonable to wait another two weeks when the figure is disappointing.
Why opens and clicks are not the answer
Open and click rates tell you whether a message was seen. They cannot tell you whether it changed a decision, and a campaign is only worth anything if it changed a decision.
They are worth watching for what they are good at: catching a technical failure. If opens collapse, something is broken, and that is useful. But a healthy open rate next to an unmeasured return rate is a comfortable number standing in for the uncomfortable one.
Five questions to ask whoever runs your campaigns
- Was a group held out, and how many people were in it? The raw count matters more than the percentage.
- How were they chosen? The answer should be some version of "at random". Anything else needs explaining.
- What was the return rate in each group? Two numbers, not one.
- Over what window, and was it the same for both? And was it set before the send.
- Does the revenue figure subtract the offer and the cost of sending? Recovered revenue and contribution are not the same number.
A provider who runs campaigns properly will have all five answers ready, because they had to decide each one before pressing send. If the answers arrive as estimates after the fact, that tells you the measurement was not designed, it was reconstructed.
When you genuinely cannot hold a group out
Below roughly two hundred contacts, a holdout stops being informative. Split a small list and each group ends up so small that two or three extra walk-ins swing the rate by several points, which means the comparison is noise wearing the clothes of a result.
If that is your situation, the honest version is a before-and-after comparison over matched calendar periods, stated with its limitation attached: it cannot separate the campaign from the season, the weather, or anything else that happened at the same time. It is directional, not proof, and it should be described that way rather than dressed up.
And the more useful conclusion is usually the one nobody wants to hear. With a list that small, the bottleneck is not the campaign. It is that the restaurant is not capturing who walks in, and fixing capture is cheaper than any campaign you could run against the list you have.
Questions owners actually ask
How big should the holdout group be?
Large enough that a handful of visits either way does not swing the result, and small enough that you are not withholding the offer from a meaningful part of the list. Ten to twenty percent of the lapsed list is the usual range. What matters more than the percentage is the raw count: if the holdout is thirty people, two extra walk-ins move the rate by seven points and the comparison tells you nothing.
Does holding people back cost me money?
It costs you whatever the campaign would have earned from that slice, which is the price of knowing whether the campaign earns anything at all. You are buying the answer once. And the holdout is not permanent: once you know the lift, you contact them too, and you can stop holding out on campaigns you have already measured.
How long should the measurement window be?
Long enough to cover the way people actually decide to eat out, which for most restaurants means several weeks rather than several days. The window has to be identical for both groups and it has to be fixed before the send. Choosing the window after you have seen the numbers is how a flat result becomes a good one.
What if a guest is in two campaigns at once?
Then neither campaign can claim them cleanly, and both usually do. Keep the holdout at the level of the guest, not the campaign: a guest held out of the test is held out of everything for that window. Otherwise the birthday email lands on your control group and quietly erases the difference you were trying to measure.
Can I measure this with a small guest list?
Below roughly two hundred contacts a holdout stops being informative, because the groups are too small for the difference between them to mean anything. That is worth knowing rather than papering over: with a list that size the honest move is to fix capture first, and to treat any campaign result as directional rather than proven.
Where this fits
Betancur Studio builds automated retention systems for independent restaurants in the United States, using the guest data a restaurant already has. The system holds back a random ten percent of the guests who reach their win-back point, sends them nothing for thirty days, and compares the two groups over that same window. It can only see a return once the restaurant's newer visit records have been loaded, and below the sizes on this page the comparison is reported as inconclusive rather than as a result.
The other half of this problem is when to contact somebody at all, which has its own page: when a restaurant guest is actually lapsed. Contacting people too early is what inflates a return rate in the first place.
And if the bigger question is how a restaurant grows at all without paying for every visit, that is how to increase restaurant sales without advertising.
If you want the mechanics of the campaigns themselves, that is on the email marketing page. If you want a straight answer on whether your guest list can bring people back before buying anything, the free fit check is yours to keep either way.
Get my free fit checkNo card, no call required.
