From kick-off to stockout: why event demand needs a better forecast

S Evans
July 3, 2026

Sold out at 1am? Your forecast should have seen it coming

A 1am World Cup knockout match is not normal demand.

It changes opening hours. It changes footfall. It changes delivery demand. It changes the basket. It changes staff planning, supplier pressure, stock risk and the shape of the trading day.

England’s World Cup match against Mexico kicks off at 1am UK time on Monday 6 July. Pubs across England and Wales have been allowed to stay open until 5am, with more than 1,000 pubs expected to open for the match. Co-op is also extending online delivery until 4am in selected stores to support late-night demand around snacks, drinks and essentials.

That is not a normal Sunday night.

So why would any serious operator forecast it like one?

The problem with normal forecasting

Most forecasting models still start with the same basic question:

“What did we sell last time?”

That is useful, but it is not enough.

Last year’s sales do not know England are playing at 1am. They do not know 300 people have booked into a pub screening. They do not know a local store has extended delivery hours. They do not know a supplier has limited availability. They do not know a head office promotion is about to change the mix. They do not know a store manager has added an event that will double demand for specific lines.

Modern demand is conditional.

It is shaped by what is happening now, what is about to happen next, and what the operation is actually capable of fulfilling.

For restaurants, pubs, convenience stores and supermarkets, the World Cup is a clean example of a wider problem.

Average demand is not enough when the trading environment has changed.

Demand is no longer just historical sales

A better model does not treat demand as a fixed curve. It treats demand as a living signal.

For store s, item i, and time window t, the model should not simply ask what the average demand was. It should estimate demand based on the state of the operation at that moment.

$$ \begin{aligned} \hat{D}_{s,i,t} = f\big( &H_{s,i,t}, I_{s,i,t}, F_{s,t}, W_{s,t}, E_{s,t}, \\ &P_{s,i,t}, C_{s,t}, R_{s,t}, L_{i,t}, A_{i,t}, M_{s,i,t} \big) \end{aligned} $$
Where:

\(\hat{D}_{s,i,t}\) is forecast demand for store \(s\), item \(i\), and time window \(t\)

\(H_{s,i,t}\) is historical demand and seasonality

\(I_{s,i,t}\) is current inventory, inbound stock and recent stockout history

\(F_{s,t}\) is footfall and catchment activity

\(W_{s,t}\) is weather and local conditions

\(E_{s,t}\) is event pressure, such as fixtures, screenings, concerts or local activity

\(P_{s,i,t}\) is promotion and pricing context

\(C_{s,t}\) is customer feedback, complaints, ratings and sentiment

\(R_{s,t}\) is real-time channel mix, including delivery, kiosk, app and in-store demand

\(L_{i,t}\) is supplier lead time and delivery reliability

\(A_{i,t}\) is supplier availability and allocation constraint

\(M_{s,i,t}\) is manual adjustment from head office or store teams

The important point is not the complexity of the formula.

The important point is that demand is not one signal. It is many signals moving together.

A sold-out pub screening at 1am is not a rounding error. It is a state change.

The event uplift problem

Events do not just increase demand evenly.

They distort it.

A major football fixture might increase demand for beer, soft drinks, crisps, pizza, breakfast items, coffee, delivery orders and cleaning supplies. It might reduce demand for normal lunch items the next day. It might push ordering earlier because supplier cut-offs do not move just because the fixture changed.

That means event uplift needs to be modelled as more than a simple multiplier.

$$ \begin{aligned} \log(\lambda_{s,i,t}) = &\ \alpha_{s,i} \\ &+ f_{cal}(t) \\ &+ f_{hist}(H_{s,i,t}) \\ &+ f_{footfall}(F_{s,t}) \\ &+ f_{weather}(W_{s,t}) \\ &+ f_{event}(E_{s,t}, V_{s,t}, K_t) \\ &+ f_{promo}(P_{s,i,t}) \\ &+ f_{channel}(R_{s,t}) \\ &+ f_{feedback}(C_{s,t}) \\ &+ f_{supply}(L_{i,t}, A_{i,t}) \end{aligned} $$
Where:

\(\lambda_{s,i,t}\) is the expected demand rate

\(\alpha_{s,i}\) is the store-item baseline

\(f_{cal}(t)\) captures time, day, seasonality, holidays and pay cycles

\(f_{hist}(H_{s,i,t})\) captures recent sales, lagged sales and rolling trends

\(f_{footfall}(F_{s,t})\) captures local movement and store traffic

\(f_{weather}(W_{s,t})\) captures weather-driven demand changes

\(f_{event}(E_{s,t}, V_{s,t}, K_t)\) captures event type, venue or store relevance, and kick-off time

\(f_{promo}(P_{s,i,t})\) captures promotions, bundles and price changes

\(f_{channel}(R_{s,t})\) captures in-store, app, delivery and kiosk mix

\(f_{feedback}(C_{s,t})\) captures customer sentiment and service pressure

\(f_{supply}(L_{i,t}, A_{i,t})\) captures supplier lead times, reliability and available stock

That is the level of model needed when demand is shaped by external events and operational constraints.

A 1am World Cup match is not just “more demand”.

It is a different demand state.

Sales are not always true demand

There is another problem.

Sales data only tells you what a store sold. It does not always tell you what customers wanted.

If a store runs out of stock, observed sales are capped by availability. The real demand may have been much higher.

$$ \begin{aligned} Y_{obs,s,i,t} = \min\big( D_{true,s,i,t}, A_{s,i,t} \big) \end{aligned} $$
Where:

\(Y_{obs,s,i,t}\) is observed sales

\(D_{true,s,i,t}\) is true customer demand

\(A_{s,i,t}\) is available stock or fulfilment capacity

This matters because major events are exactly when stockouts are most likely.

If a store sells every case of a key line by half-time, the sales number may look strong. But it is still incomplete. The system has not seen the lost sales after the stockout.

A weak forecast learns from the capped sales number and underestimates the next spike.

A stronger model recognises stockout conditions and estimates the demand that was missed.

Forecasting is only useful if teams can act on it

A forecast is not the end point.

The decision is the end point.

What should each store order?

What should head office adjust?

Which suppliers can fulfil?

Where does fair allocation need to apply?

Which stores need extra stock, and which stores should not receive more than they can realistically sell?

That is where forecasting has to connect directly into ordering.

$$ \begin{aligned} Q^*_{s,i} = \arg\min_Q \mathbb{E} \Big[ &c_o(Q - D)^+ \\ &+ c_u(D - Q)^+ \\ &+ c_w W(Q, age, t) \\ &+ c_a A(Q, supplier) \Big] \end{aligned} $$
Where:

\(Q^*_{s,i}\) is the optimal order quantity for store \(s\) and item \(i\)

\(D\) is uncertain future demand

\(c_o\) is the cost of over-ordering

\(c_u\) is the cost of under-ordering or lost sales

\(c_w\) is the cost of waste, expiry or shrink

\(W(Q, age, t)\) is the waste risk from ordering quantity \(Q\)

\(c_a\) is the operational cost of supplier constraint or allocation

\(A(Q, supplier)\) is the supplier availability and fulfilment constraint

This is where static planning breaks down.

It is not enough to know demand is likely to rise.

The system also needs to know whether the supplier can deliver, whether the store already has stock, whether stock is already on order, whether a case size constraint applies, and whether head office needs to allocate limited supply fairly.

Ordering needs constraints, not just suggestions

In real operations, the recommended order cannot ignore the supply chain.

A more practical ordering rule needs to combine demand, inventory, inbound stock, safety stock, waste risk and supplier constraints.

$$ \begin{aligned} Q_{s,i} = \max\Big( 0,\ &\hat{D}_{s,i,t:t+L_i} + SS_{s,i} + B_{s,i,t} \\ &- SOH_{s,i} - OO_{s,i} - RCV_{s,i} \Big) \end{aligned} $$
Subject to:

$$ \begin{aligned} Q_{s,i} \leq A_i \cdot \rho_s \end{aligned} $$
$$ \begin{aligned} Q_{s,i} \in Pack_i \end{aligned} $$
Where:

\(Q_{s,i}\) is the recommended order quantity

\(\hat{D}_{s,i,t:t+L_i}\) is forecast demand over the supplier lead-time window

\(SS_{s,i}\) is safety stock

\(B_{s,i,t}\) is event buffer or trading confidence adjustment

\(SOH_{s,i}\) is stock on hand

\(OO_{s,i}\) is stock already on order

\(RCV_{s,i}\) is expected receipt before the demand window

\(A_i\) is total available supplier stock

\(\rho_s\) is the fair allocation ratio for store \(s\)

\(Pack_i\) is the valid supplier pack size or order unit

That is the difference between a forecast and an operational plan.

A forecast says demand might rise.

An operational plan says how much to order, by store, by product, inside supplier constraints, before the cut-off.

Bulk ordering and event amends matter

This is why Orderly supports bulk ordering and amendments.

Head office can model an event across a group of stores and push recommended changes at scale. Store managers can also add local context where the model needs it.

Examples include:

  • A sold-out World Cup screening
  • Extended opening hours
  • A late-night delivery window
  • A local fan zone
  • A school event
  • A stadium fixture
  • A supplier delay
  • A hot weather spike
  • A local promotion
  • A planned sampling event
  • A known issue with availability or waste

That local context can then feed the model.

The system can adjust demand, recommend order changes, check supplier lead times, apply pack sizes, respect allocation rules and flag exceptions before they become store-level problems.

So when a store says:

“We are showing the England game at 1am and we are fully booked.”

The answer should not be:

“Good luck.”

It should be:

“No worries. The forecast has been updated, the suggested order has changed, supplier constraints have been checked, and anything requiring approval has been flagged.”

The best model learns from the outcome

The work does not stop when the order is placed.

After the event, the system should compare forecast, order, receipt, sales, waste, stockouts and customer feedback.

$$ \begin{aligned} \Delta_{s,i,t} = D_{actual,s,i,t} - \hat{D}_{s,i,t} \end{aligned} $$
And the next forecast should learn from it.

$$ \begin{aligned} \theta_{t+1} = \theta_t + \eta \nabla_{\theta} \mathcal{L} \Big( D_{actual}, \hat{D}_{\theta}, X_t \Big) \end{aligned} $$
Where:

\(\Delta_{s,i,t}\) is the forecast error

\(D_{actual,s,i,t}\) is actual demand or recovered demand

\(\hat{D}_{s,i,t}\) is forecast demand

\(\theta_t\) is the current model state

\(\eta\) is the learning rate

\(\mathcal{L}\) is the loss function used to train the model

\(X_t\) is the full state vector of demand signals at the time

This is what separates a living demand model from a spreadsheet.

The system should learn which stores over-indexed, which categories moved, which suppliers struggled, which promotions worked, and which manual adjustments improved the outcome.

Why this matters beyond the World Cup

The World Cup is a useful example because everyone understands the demand spike.

But the same logic applies every week.

A transport strike changes footfall.

A heatwave changes product mix.

A supplier issue changes availability.

A local competitor promotion changes demand.

A social trend changes product interest.

A new delivery radius changes the catchment.

A head office campaign changes ordering pressure.

A store manager knows something the central model does not.

Demand planning needs to handle all of it.

Not in separate dashboards.

Not in disconnected spreadsheets.

Not through a weekly guess that becomes stale by Tuesday.

It needs to be one joined-up model that connects demand signals, supplier constraints, store context and ordering decisions.

Final point

Orderly does this.

Orderly uses a multiple-source data model that brings together internal and external signals, including sales history, footfall, supplier deliveries, supplier lead times, promotions, customer feedback, social intent, local events, inventory, delivery demand and fair allocation rules.

That demand signal can then flow into ordering, amendments and operational workflows.

So when the trading pattern changes, the plan can change with it.

Planning for demand spikes should not be a spreadsheet scramble

Major events move fast. Fixtures change. Stores sell out. Suppliers hit capacity. Head office needs control. Store teams need confidence.

Orderly helps operators forecast demand, amend orders at scale, manage supplier constraints and keep stores trading when normal patterns no longer apply.

If your teams are still planning events in spreadsheets, it is time to see what an intelligent ordering model can do.

Book a demo of Orderly

Sold out 1am football match?

No worries. Orderly has already adjusted the plan