Bringing guests back: how a restaurant loyalty program actually works
Can you bring a guest back without discounting? The model that works, how to build a guest database, and the numbers that tell you whether it pays off.
Winning a new guest costs money: ads, influencers, opening promotions. Bringing back someone who has already visited costs almost nothing — they already know you. That is the entire point of a loyalty program: turning a one-off visitor into a regular.
The trouble is that in many venues "loyalty" means nothing more than a discount card. And a discount is the most expensive and least effective form there is.
Three models and how they differ
Discount
The guest always gets −10%. That cuts your profit immediately and gives no reason to return: the discount is granted today, and tomorrow's visit is optional. Discounts are also habit-forming — removing one later is close to impossible.
Points
A percentage of every check accrues as points, spendable on the next visit. Already better: if the guest never returns, the points never cost you anything. You pay the discount only to a returning guest.
Cashback
Technically the same as points, but the guest reads it as money — "I have 24,000 UZS on my account". Psychologically it pulls harder.
Rule of thumb: a discount is an expense against today's profit; points are an investment in the next visit.
How much to give
Start with simple arithmetic: whatever you hand back as points comes out of your margin. If food cost runs at 32%, what is left of the dish has to cover rent, wages and profit. That is why most venues begin somewhere between 3% and 7% and adjust from there.
What matters is the economics, not the percentage:
- A guest used to come once a month and now comes twice — 5% is cheap
- A guest still comes once a month but now gets 5% — that is a straight loss
How to build the guest database
The hardest part of a loyalty program is not the discount, it is the data. No database, no program.
- Phone number, captured at checkout. This is the natural moment: the guest is paying, and "shall we collect points?" fits the conversation.
- One field is enough. Name, birthday and email can be added later. A long sign-up destroys consent.
- Give the cashier an argument. "Your number, please" means nothing to the guest. "That is 15,000 UZS off next time" means something.
- Do not forget delivery and takeaway. The phone number is already there — leaving those contacts out of the database throws away half your reach.
How to measure the result
This step is usually skipped, which is why programs get shut down as "not working". Three numbers are enough:
- Return rate — how many guests in the database came back within the last 30 days
- Visit frequency — how many times a month a single guest comes
- Identified-guest share — what portion of daily checks is linked to the database
The third grows fastest and shows the program is actually being applied at the till. The first shows whether it pays.
Common mistakes
Complicated rules
"Three tiers, a different rate on each, double points on Mondays" — neither the cashier nor the guest will remember that. Start with one rule.
Points never get spent
If the guest does not know the balance exists, the program does nothing. At checkout the cashier should say: "you have 24,000 UZS — shall we use it?". That single sentence is half the program.
A database nobody uses
Two thousand numbers collected and never contacted. The simplest steps that work: a birthday greeting with a small offer, and a win-back message to guests who have not visited in 60 days.
A separate database per branch
A guest earns points downtown and cannot spend them at your other location — that is not a program, that is friction. The database must be shared at restaurant level.
Where to start
- Pick one model — cashback is the simplest, say 5%
- Ask only for the phone number, and only at checkout
- Train cashiers on two sentences: asking, and reminding about the balance
- For the first month, track how fast the database grows
- From the second month, start measuring return rate
All of it rests on one condition: the guest must be attached to the check, and the point balance must be visible at the till in real time. That is why loyalty normally lives inside the POS rather than in a separate app — in VKassa the guest database, point balance and visit history open directly in the payment window.