AURA

Guest Retention and Repeat Rate in a Restaurant

Repeat rate measures only the guests you are able to recognise a second time. This page gives four formulas, the identification rate that sits under all of them, the window-length trap, and the boundary beyond which the number sees nothing at all.

Published
19 min read3762 words
Aura editorialAuthor

Key takeaways

  • Without the identification rate, repeat rate describes your recording habits rather than your guests: 780 of 2,400 checks in the worked example, or 32.5 %.
  • Repeat guest rate and retention rate are two different formulas with two different denominators — confusing them breaks the whole report.
  • A longer window inflates repeat visits mechanically: the same data give 21.0 % over 30 days and 35.1 % over 90.
  • Visit frequency is visits per guest, not a percentage — 780 ÷ 610 = 1.28 visits per guest.
  • There is no industry benchmark: neither the Polish statistical office nor Eurostat publishes guest repeat visits for hospitality, so you compare against your own previous window.
  • Identified guests are not a miniature of the room — in the worked example they leave 1.101 times more per check than the average.

Restaurant repeat rate is the share of identified guests who came at least twice inside one observation window. Every number of this family rests on the identification rate — the share of checks tied to a known guest — and means nothing without it. Windows of different length are not comparable: a longer window raises repeat rate on its own.

What decides this whole page: whom you can recognise a second time

A shop knows its customer because the customer logs in. A restaurant mostly does not. Someone sits down, eats, pays cash or taps a card, and leaves. Nothing in that sequence tells your till that the same person was here eleven days ago.

So before you calculate anything about returning guests, you have to answer a harder thing: on how many checks are you physically able to link two visits to one person? Not "how many guests love us", but how many checks carry an identifier that survives until the next evening.

Identified guest — a guest whose two visits can be linked by the same identifier: a booking, a loyalty account, a delivery address, a card token.

If you skip this step you will still get a number. It will look like a metric and behave like one. But it will describe the behaviour of the people who happen to book, order delivery or join a loyalty scheme — a minority that selected itself — and you will read it as if it described the room.

That is the practical trap. A venue with a strong booking culture and weak walk-in traffic will show a high repeat rate not because guests return more often, but because the guests it can see are of the returning kind.

Identification rate: the first number, without which the rest mean nothing

Identification rate — share of checks linked to a known guest out of all checks in the period.

Identification rate % = Checks linked to a known guest ÷ All checks in the period × 100

  • Checks linked to a known guest — closed checks you managed to tie to a known guest by any identifier: booking name and phone, loyalty card number, delivery address, saved card token, count;
  • All checks in the period — every closed check in the same period, count;
  • the result is a percentage: count divided by count.

Take an arbitrary month that serves as the worked example on this page. All checks in the window: 2,400. Checks linked to a known guest: 780.

32.5%
Then the identification rate is 780 ÷ 2,400 × 100 = 32.5 %.
32.5%
Check it backwards: 2,400 × 32.5 % = 780.

Read that as a sentence, not as a score: roughly two checks in three are anonymous, so any statement about returning guests covers the remaining third and nobody beyond it. Print the identification rate next to the repeat rate, always, on the same line of the same report. A repeat rate without it is not a weak number — it is a number without a label.

Where an identifier actually comes from

SourceWhat it linksShare of checks it can coverWhat this source cannot see
Table bookingPhone or e-mail to the visitOnly bookable seatingsWalk-ins, the bar, takeaway
Delivery or pickup orderAddress and phone to the orderOnly the delivery channelEverything eaten in the room
Loyalty accountA voluntary identifier to the checkOnly those who joinedGuests who never join
Card token from the terminalThe same card to several checksOnly card paymentsCash, split bills, one card paying for four people
Guest Wi-Fi loginA device to the venueOnly guests who log inWhether that guest paid at all

Fill the third column with your own data, not with a figure taken on trust. There is no official statistic for it: the Polish household budget survey measures how much a household spends on restaurants and hotels — 98.92 PLN per person per month in 2024 (GUS, Household Budget Survey in 2024, table 9, published 2025, opened 26.08.2026) — and says nothing about how often a person returns to the same venue. That figure is Polish and it is a sum of spending, not a count of visits.

Repeat guest rate: the formula and its honest denominator

Repeat guest rate — share of identified guests with two or more visits inside one observation window.

Observation window — the fixed period inside which visits are counted. Its length is part of the metric, not a setting: two windows of different length produce two different metrics.

Repeat guest rate % = Identified guests with ≥ 2 visits in the window ÷ Identified guests in the window × 100

  • Identified guests with ≥ 2 visits in the window — distinct known guests seen twice or more inside one window, people;
  • Identified guests in the window — every distinct known guest seen at least once inside the same window, people;
  • both sets are counted over the same window, and the result is a percentage.
21.0%
In the worked month: 610 identified guests, of whom 128 came twice or more. 128 ÷ 610 × 100 = 21.0 %.

The honest sentence goes like this: twenty-one per cent of the guests we were able to recognise came back within thirty days — not twenty-one per cent of our guests.

The edge of the window eats your numerator

A guest who appears for the first time on the last day of the window lands in the denominator and has no way of landing in the numerator. There was no time left to come back. This is not an error to be fixed but a property of the metric — and one of the reasons two windows of different length give different answers on identical data.

Retention over a period: a different formula and a different measured quantity

These two are not synonyms, and confusing them is the most common way this whole family of numbers breaks.

Retention rate — share of guests present at the start of a period who are still present at its end, with newly acquired guests removed from the numerator.

Retention rate % = (Identified guests at the end − Newly identified during the period) ÷ Identified guests at the start × 100

  • Identified guests at the end — known guests active at the closing boundary of the period, people;
  • Newly identified during the period — guests recognised for the first time inside the period, people; they are removed because they were never at risk of leaving;
  • Identified guests at the start — known guests active at the opening boundary of the period, people.
75.6%
Worked quarter: 900 identified guests at the start, 1,060 at the end, 380 newly identified inside the quarter. (1,060 − 380) ÷ 900 × 100 = 75.6 %.

The degenerate case is printed rather than hidden: the formula is undefined when the denominator is zero. A venue in its first period has no guests at the start, so it has no retention rate at all — not a low one, none. Writing zero there would be a lie of arithmetic.

MetricWhat it answersDenominatorWhen it misleads
Identification rateHow much of the room can I even see?All checks in the periodWhen the channel mix shifts and you read it as guest behaviour
Repeat guest rateHow many of the guests I see came twice?Identified guests in the windowWhen the window length changed between two reports
Retention rateHow many of the guests I had are still here?Identified guests at the startWhen new guests stay in the numerator
Visit frequencyHow often does the one who comes, come?Identified guests in the windowWhen it is printed with a per cent sign

Visit frequency: how often the one who comes at all, comes

Visit frequency — visits in the window divided by the identified guests who made them.

Visit frequency = Visits in the window ÷ Identified guests in the window

  • Visits in the window — visits of identified guests inside the window, count;
  • Identified guests in the window — the distinct guests who made them, people;
  • the result is visits per guest — a ratio with a unit, not a share.

Worked month: 780 visits ÷ 610 identified guests = 1.28 visits per guest.

This metric has a degenerate case of its own and it is a formatting one: visit frequency is not a percentage.

1.28%
Printing "1.28 %" turns a rate of return into a hundredth of itself, and for a whole quarter nobody notices.

If your dashboard formats every metric as a per cent by default, this is exactly the field that will be wrong.

Frequency and repeat rate move in the same direction but are not interchangeable. The rate says how many guests came back; the frequency says how hard the ones who came back leaned on the venue. You can raise the second without moving the first by a hair — that is precisely what a good Tuesday offer does for regulars.

The window trap: why a longer window mechanically inflates repeat visits

Take the same guests and the same till, and count them over ninety days instead of thirty. Identified guests: 1,340. Of those with two or more visits: 470.

35.1%
Repeat rate: 470 ÷ 1,340 × 100 = 35.1 %.

Nothing improved. Nobody changed a habit.

21.0%
The number rose from 21.0 % to 35.1 % because every guest got three times as long to come a second time.

This is arithmetic, not marketing.

Two rules follow, and both are cheap to keep:

  • write the window into the name of the metric — "repeat rate, 30 days" — so the number cannot travel without it;
  • never compare your result with somebody else's until you know their window. If it is not stated, the comparison is not weak, it is void.

That is also why this page names no industry benchmark. There is none to name. A sweep of the Eurostat dissemination catalogue finds datasets on same-day visits in tourism and on visits to a doctor, and nothing on how often a guest returns to the same restaurant. Where no official figure exists, the honest substitute is your own previous window, measured the same way.

Whom to call lapsed when a restaurant is not a subscription

A subscription business knows exactly when a customer leaves: the customer cancels. A restaurant guest cancels nothing. They simply stop appearing, and there is no day on which that becomes a fact.

So "lapsed" is not something you observe. It is a threshold you choose, and the only wrong way to choose it is silently.

Lapse threshold (days) = k × Median days between consecutive visits of identified guests

  • Median days between consecutive visits — the middle value of the gaps between consecutive visits of your identified guests, days;
  • k — the multiplier you pick yourself, dimensionless; there is no official value for it and this page invents none;
  • the result is in days, because days multiplied by a dimensionless number stay days.

Worked example with k = 3 and a median gap of 34 days: 3 × 34 = 102 days without a visit before a guest counts as lapsed.

The threshold is a decision and it has to be written down

Write down the value of k you chose and the date you chose it. When somebody next quarter wonders why the lapsed count jumped, the first thing to check is whether the threshold moved, and the second is whether the median gap moved under a fixed threshold. Those are two entirely different stories and on a chart they look identical.

Repeat visits by channel: delivery recognises the guest, the dining room almost never

Before you act on any number from this page, split it by channel, because the identification rate is wildly uneven between them.

Delivery and pickup carry an address and a phone by construction — that channel is close to fully identified. A table booking carries a name and a phone, but only for the seatings that were actually booked. A Friday walk-in at the bar carries nothing at all.

The consequence is uncomfortable and worth saying plainly: a blended repeat rate across all channels mostly measures the mix of your channels. Move ten per cent of turnover from the room to delivery and the repeat rate will rise without a single extra returning guest.

That is also where the practical work sits. If you want the number to describe the room rather than the delivery app, the room has to acquire an identifier — a booking placed on your own page, a returning-guest note in the card, a message thread that persists. The tooling is ordinary: a guest card and history in a CRM, your own booking flow, a message channel that keeps one thread with the same person and a follow-up that has somewhere to be recorded. Which layer of the system this belongs in is a separate decision, and it is settled in CRM or ERP: which system layer to add next.

And since every one of these identifiers is personal data, the storage side is not optional reading: where your customers' data physically lands deals with exactly that.

The skew: identified guests are not a miniature of all guests

32.5%
Suppose your identification rate is 32.5 %.

The tempting next step is to treat that third as a sample of the whole and multiply upwards. Do not, until you have checked whether it behaves like the whole.

The cheapest test is the average check.

Skew index = Average check of identified checks ÷ Average check of all checks

  • Average check of identified checks — turnover on identified checks divided by their count, PLN per check;
  • Average check of all checks — turnover on all checks divided by their count, PLN per check;
  • the result is dimensionless: PLN per check divided by PLN per check.

Worked example: 78.40 PLN ÷ 71.20 PLN = 1.101. Your identified guests leave about ten per cent more on a check than the average of the room. That does not invalidate the repeat rate — it tells you which way the error tilts, which is far more useful than pretending there is no error.

A one-line check you can run this week

Run the same ratio for the weekday mix and for party size. If identified checks fall on the same days and carry the same number of covers as all checks, the skew is mild and extrapolating upwards is defensible with a caveat. If they cluster on Friday and Saturday evenings, your identified population is a weekend population, and the repeat rate you are quoting is a weekend repeat rate.

What these numbers cannot show: the guest came back, but not to you

Every metric on this page is measured inside your own four walls. None of them sees the rest of the guest's month.

A guest who was with you twice in thirty days looks like a loyal regular in your report. If in those same thirty days they ate out twelve times, you hold one sixth of their restaurant spending, and "loyal" is the wrong word for what you are looking at. Your repeat rate went up; your share of that person went down. The two are perfectly compatible and your dashboard will never say so.

There is no honest internal patch for this, and the dishonest ones are worse than the gap itself. What you can do is stop reading a rising repeat rate as proof that anything improved, and set it against the numbers that would have to move with it: covers, turnover and the frequency above. If the repeat rate rises while the count of identified guests falls, you did not win loyalty — you lost the occasional visitors, and those who stayed now form a larger share of a smaller denominator.

Where this metric sits in the wider set of restaurant numbers is laid out in the restaurant KPI guide, and what to do with visit frequency once you trust it is the subject of guest lifetime value. Splitting identified guests into groups is RFM segmentation; paying to recognise them is the economics of a loyalty programme; and the other half of the same arithmetic — what a new guest costs — is guest acquisition cost.

Where this is plain arithmetic and where a system does the work

Nothing above needs artificial intelligence. Every formula on this page is a division, and you can run all of them in a spreadsheet on an export from your till.

A system does something else and duller: it keeps the identifier alive between visits. Matching a booking to a check, holding one thread with one guest across a phone call and a message, storing history so that the second visit knows about the first — that is data plumbing, not intelligence, and that is where the identification rate actually rises.

Machine work genuinely helps further along: sifting through threads, drafting the message back to the guest, flagging the one whose gap has crossed your lapse threshold. That is what reporting and analytics and follow-up automation: what happens to an enquiry after the first conversation are about. We are describing our own work here, not promising a number.

Frequently asked questions

What is a good repeat guest rate for a restaurant?

There is no published figure to compare yourself with, and this page will not invent one. Neither Eurostat nor the Polish statistical office publishes guest repeat visits or visit frequency for hospitality — the household budget survey measures sums of spending, not visits. The comparison that does work is your own previous window measured the same way, with the same identification rate and the same window length written next to it.

How do I count repeat guests when most of them pay cash and leave?

You do not count them, and the first honest step is to say so. Count the guests you can recognise, publish the identification rate beside the result, and treat the number as a statement about that subset. Then get to work on the identification rate itself — bookings, delivery, a loyalty account, a message thread — because that is the only lever that widens what the metric can see at all.

Why does a longer observation window raise the repeat rate?

Because every guest gets more time to come a second time and nothing else changes. In the example on this page the same restaurant shows 21.0 % over thirty days and 35.1 % over ninety. Both figures are correct and they are not comparable. That is why the window belongs in the name of the metric.

Is retention rate the same thing as repeat rate?

No. Repeat rate looks at one window and asks how many identified guests appeared in it twice. Retention rate looks at the two boundaries of a period and asks how many of the guests you had at the start are still there at the end, with guests acquired in between removed from the numerator. They answer different things and in the same quarter they can move in opposite directions.

How do I know whether identified guests behave like everyone else?

Compare them on something measurable for both. Divide the average check of identified checks by the average check of all checks: in the example 78.40 PLN ÷ 71.20 PLN = 1.101, so identified guests leave about ten per cent more. Repeat the same comparison for the weekday mix and party size. A large gap does not forbid you to use the metric; it tells you which way it tilts.

When should a restaurant treat a guest as lapsed?

When the gap since their last visit exceeds a threshold you chose deliberately and wrote down. A workable method is a multiple of the median gap between consecutive visits of your identified guests — with a median of 34 days and a multiplier of 3 that gives 102 days. The multiplier is your decision, there is no official value for it, and changing it silently strips the lapsed count of meaning.

Does a rising repeat rate always mean things are better?

No, and it is worth checking the opposite reading first. If the count of identified guests fell while the share rose, the occasional visitors left and the regulars now form a larger part of a smaller base. Set the repeat rate against covers, turnover and visit frequency before you read it as good news — and remember that it cannot see how often the same guest ate somewhere else.

How long an observation window should I use?

There is no correct length and this page assigns none: the length of the window is part of the metric, not a setting. The thing to anchor it to is your own median gap between consecutive visits — the same median the lapse threshold is built on: a window shorter than that gives almost nobody time to come back, while a window stretched for a nicer number simply raises it mechanically — 21.0 % over thirty days and 35.1 % over ninety on the same guests. Once you have chosen a length, write it into the name of the metric and keep it steady between reports, or there will be nothing to compare with.

Start with the identification rate, not with a loyalty programme. If you recognise only a third of your checks, every repeat figure you publish describes your recording habits rather than your guests — and that is cheaper to fix than loyalty. The whole set of restaurant economics pages lives in the restaurant section, and the wider view of what automation changes in a venue is in restaurant automation: bookings, suppliers and reviews and in the no-show confirmation chain, where the booking that identifies a guest either holds or does not.

Related services

In this section

Let us look at your numbers

Tell us how enquiries are handled today — how many there are, who picks them up, where they get lost. Aura walks the process with you and shows what can be taken off a person, and what is better left alone.

Talk to Aura

The home page with Aura opens. Give a company name — she looks at it in public data and shows what a client sees. No promises of a result.

Prefer to write? marketing@auraglobal-merchants.com

Next step

Let us check whether Aura fits your place

We do not take everyone: first we look at your processes, sales and current systems and tell you honestly whether it makes sense for us to come in. A few questions, about five minutes.

Take the assessment →