Read the cookie policy

GUIDE 01 / 09

Restaurant sales forecasting: the method, service by service

Restaurant sales forecasting means estimating, before each service, how many covers a restaurant will serve and which products it will sell, early enough to adjust orders, production and the staff rota. The method starts from the same service the previous week, corrects it for the calendar and the weather, then measures its error against that baseline. This guide is written by the Enskel team; the method works just as well with a spreadsheet.

Start from the right unit: covers, transactions or products

Each decision has its own unit. Orders and production are calculated in products: portions of each dish, pieces in each batch. The staff rota is calculated from footfall per time slot: covers in the dining room, transactions at the counter. Revenue then follows from the volumes; a price rise pushes it up without changing either the orders or the rota.

The calculation

Forecast revenue = forecast covers × average spend excl. VAT

Forecast by service, not by day: an average day can hide a full lunch and a quiet dinner. In quick service, the useful time step is often half an hour; in a bakery, the batch. The horizon follows the decision: the day before for fresh produce, a few days ahead for the week’s rota.

The example followed through this guide: a brasserie with a terrace forecasts its Tuesday lunch covers every Monday morning, to order its fresh produce and adjust the team.

Sample figures, made up for the calculation and carried over from section to section.

An honest baseline: the previous week, then the average

Start from a reference everyone understands: the same service, on the same day, the previous week. This is the seasonal naïve method, which the textbook by Hyndman and Athanasopoulos lists among the benchmark methods: a more elaborate method is only worth using if it does better.

Its weakness: it copies the exception. If the previous Tuesday was a public holiday or a rainy day, the forecast inherits it. Averaging several comparable services smooths out these accidents.

The calculations

Previous-week baseline = sales of the same service the previous week

Average baseline = sum of sales over the last four comparable services ÷ 4

Comparable means the same day and the same service, with no closure, stock-out or special day. A closed day comes out of the calculation: it does not count as zero. A stock-out does not measure demand: sales show what was left, not what would have sold. Note these services as they happen.

For Tuesday 13 October, the previous-week baseline gives 116 covers. The average of the last four Tuesdays gives (132 + 104 + 122 + 116) ÷ 4 = 118.5, dragged down by 22 September, the only rainy Tuesday. The average of the last four dry Tuesdays gives (126 + 132 + 122 + 116) ÷ 4 = 124 covers: the baseline for an ordinary Tuesday.

Correct for the calendar: public holidays, school holidays, events

The calendar is known in advance: these are the safest corrections. France has eleven public holidays in the general case; Alsace-Moselle adds two, and each overseas department commemorates the abolition of slavery on its own date. Easter Monday, Ascension Day and Whit Monday move every year: Ascension Day fell on 14 May in 2026 and will fall on 6 May in 2027. Compare each holiday with its previous occurrence, not with the same date.

The common trap is the previous-week baseline: Tuesday 14 July 2026 was a public holiday, and copying it for Tuesday 21 July means forecasting a working day as if it were a holiday.

The calculations

Special-day coefficient = sales on that day last time ÷ average baseline at the time

Special-day forecast = current average baseline × coefficient

If the restaurant served 60 covers on Ascension Day 2026, when an ordinary Thursday brought in 100, the day’s coefficient is 0.6; with a current baseline of 110, forecast 110 × 0.6 = 66 covers for 2027.

No regulation governs bridge days, the working days taken off between a public holiday and the weekend: they are up to each company. The All Saints’, Christmas and summer holidays are the same in all three school zones; the winter holidays run from 6 February to 8 March 2027 depending on the zone, the spring holidays from 3 April to 3 May. Note each site’s zone.

That leaves local events: a match, a concert, a trade fair, a market, roadworks outside the door. Keep a calendar for each site, filled in ahead of time, and note the effect observed. Hyndman and Athanasopoulos recommend flagging them with a dedicated variable rather than deleting them: take them out of the baseline, keep them in the history.

The weather and the terrace

The weather matters most where customers have a choice: a terrace, takeaway, a seasonal menu. Measure its effect on your services, rainy against dry, same day, same season. A single comparison is still only a hypothesis.

On rainy Tuesday 22 September, the brasserie served 104 covers: 20 fewer than the baseline for a dry Tuesday. On Monday 12 October, rain is forecast for Tuesday lunch: the forecast drops from 124 to 124 − 20 = 104 covers.

The calculation

Forecast = average baseline × day coefficient + weather correction

Use the most recent weather forecast. Météo-France reports 84% accuracy for the next day and 80% at three days; from four days ahead, when reliability falls below 80%, its website adds a confidence index from 1 to 5. Adjust the week’s rota with caution, and the day-before order with more confidence.

To test a correction on past data, use the weather forecast known on that day, not the weather that actually happened. Hyndman and Athanasopoulos call the first an ex ante forecast; the second, ex post, is not a real forecast, since it wipes out the error in the weather forecast.

Measure the error, and compare it with the baseline

After each service, compare the forecast made at the time of the decision with the actual result, in the same unit.

The calculations

Error = forecast − actual

Mean absolute error = sum of errors without their sign ÷ number of services

Percentage error = sum of errors without their sign ÷ sum of actual sales × 100

Bias = sum of errors with their sign ÷ number of services

Index against the baseline = mean absolute error of the forecast ÷ mean absolute error of the baseline

Example: six Tuesday lunches, previous-week baseline and corrected forecast
Tuesday lunchActualBaseline (previous Tuesday)Baseline errorForecastingForecast error
8 Sep126121−5122−4
15 Sep132126−6139+7
22 Sep104132+28113+9
29 Sep122104−18117−5
6 Oct116122+6124+8
13 Oct107116+9104−3

The forecast is off by 36 ÷ 6 = 6 covers on average, the baseline by 72 ÷ 6 = 12. Relative to the 707 covers served: 36 ÷ 707 = 5.1% error, against 72 ÷ 707 = 10.2%.

The bias is (−4 + 7 + 9 − 5 + 8 − 3) ÷ 6 = +2 covers: the forecast runs slightly high, but only a little compared with its average error. If it persists over several weeks, subtract it from each forecast.

The index is 6 ÷ 12 = 0.5: half the error of the baseline, which on 22 September copied a dry Tuesday onto a rainy one. Six services give an indication, not proof.

Example: figures invented for the calculation.

Calculate the percentage on the totals, not as an average of percentages per service: Hyndman and Athanasopoulos point out that a percentage error becomes infinite or undefined when the actual value is zero, and extreme when it gets close to zero. For a dessert sold three times, one unit of error is already 33%. The same textbook also scales the error against that of a naïve method, in the spirit of the index above.

Before you rely on a method, replay it over past weeks, in order, with each forecast using only the sales before its date: the textbook calls this evaluation on a rolling forecasting origin. Then compare service by service: a good average can hide a Saturday dinner that is badly forecast every week.

From the forecast to orders and the rota

To order and produce, convert covers into products.

The calculation

Forecast portions of a dish = forecast covers × the dish’s share on comparable services

The dish of the day is ordered by 30% of Tuesday lunch covers: for 104 covers, 104 × 0.30 = 31.2, so 31 portions. Recipe cards turn them into ingredients, which stock management matches against stock and deliveries.

The measured error sets the margin: an average error of 6 covers comes to roughly two portions of the dish of the day. It is this error, not a margin set by guesswork, that determines the safety stock.

For the rota, split the service by time slot, using each slot’s share on the same days: it is the 12:30 peak that has to be covered. The staff scheduling guide turns this into hours, role by role.

In a bakery, morning sales, compared with the forecast, adjust the following batches.

Common mistakes

Forecasting the day, not the service. Neither orders nor the rota can use it.

Copying an exceptional week. A public holiday, a downpour or a match goes straight into the baseline.

Counting a closed day or a stock-out as zero sales. The average falls without demand having fallen.

Correcting without noting why. A correction that is never recorded cannot be measured.

Testing with the weather that actually happened. Observed weather wipes out the error in the weather forecast: the result looks better than it will be.

Forgetting the baseline. A 5% error means nothing if copying the previous week does just as well.

Frequently asked questions

How do you forecast a restaurant’s revenue? Forecast the covers or transactions for each service, then multiply them by the average spend excl. VAT of comparable services. Keeping the two apart shows what is moving, footfall or spend per customer, and stops you ordering more just because prices have gone up.

How much history do you need to start? A few weeks are enough for the previous-week baseline and the four-week average. To measure the effect of public holidays, school holidays or summer, you need to have been through each of these periods once: a year covers them all. A short, clean history is better than a long one full of gaps.

How do you forecast footfall for a new restaurant? Start from a written assumption: number of seats, expected table turns per service, comparison with a nearby site if you have one. Measure from the first week and replace the assumption with your sales: after a month, you have a previous-week baseline and a four-week average.

What error is acceptable? No threshold applies everywhere: the error depends on volume, unit and horizon. A service’s total can be forecast more precisely than a dessert sold five times, and the day before more accurately than a week ahead. The right benchmark is relative: being wrong by clearly less than the previous-week baseline.

Spreadsheet or software? For one site and a short menu, a spreadsheet is enough, as long as it is updated every day. When products run into dozens, sites multiply or the forecast has to feed orders and the rota, sales forecasting software connected to the POS saves re-keying.