A restaurant in Almaty launched a lunch-delivery promotion. Its kitchen normally gets 18 identical orders an hour and can cook 20. The ads added another 10: 28 came in, and the kitchen still cooked 20. With no queue at the start of the hour, 8 orders are still waiting for the cook at the end of it. The marketer is pleased with the orders, while Arailym, the administrator, explains to customers why lunch has not arrived yet.
The numbers in this lesson are made up, and the orders in it are identical. In real life dishes take different times to cook, and couriers have limits of their own. So before raising the budget, tie the offer to how much the kitchen can cook, pack and send out. The business needs a completed order, the money left after it, and a customer who got their food on time.
Incoming orders and kitchen capacity
| Metric | Orders |
|---|---|
| Normally arrive | 18 |
| Added by advertising | 10 |
| Total arrived | 28 |
| Prepared in the hour | 20 |
| Waiting at the end of the hour | 8 |
There was no initial queue. Real orders differ in content and time; couriers have their own constraints.
Choose the occasion and ordering time
Office lunch, coffee on the way and dinner at a restaurant need different promises. Lunch is about contents, price and delivery before the break. Coffee is about a spot on the way and a quick handover. Dinner is about the menu, the atmosphere and a free table at the right time. An ad about everything at once leaves the choice to the customer, and they go away to think it over.
Our restaurant's goal might be to fill the kitchen's idle hours with lunches for nearby offices. But first Bauyrzhan, the manager, decides at which hours and on which routes the team can keep that promise. A circle on the map shows distance; real time also depends on cooking, the road and whether a courier is free.
Walk through ordering with Arailym: open the menu, choose an address, look at the final price and the promised window. If the delivery time can only be given after confirmation, the customer should learn that before paying. Fit the ad schedule and geography to those conditions.
If customers come to the restaurant itself, walk the same path from the ad to the door. A sign, the next entrance along, parking or a locked door may matter more than another food photo. After that walk, Bauyrzhan has a clear task list and you have a list of fixes for the restaurant's listing.
Prepare the listing and tracking method
The address, entrance, opening hours, menu, prices and ways to order in the listing should match what happens in the restaurant. In Almaty that means both the 2GIS listing and the Google profile. Photos of the real dishes help customers see what they will get. If the menu changes, name who updates the listings: ads keep bringing people even after a dish has run out.
Google's explanation of local ranking names relevance, distance and prominence. A complete profile helps describe the offer, but the restaurant does not control every condition of the results. Plan advertising around real calls, directions requests and orders.
Record listing views, menu opens, directions requests and orders as different actions. Only the till or the ordering system confirms a purchase. If a visit to the restaurant could not be linked to the ads, the report keeps an unknown source. Do not turn every directions request into a paid visit to make the report look good: people who later changed their minds request directions too.
During reconciliation, look at the status: an order that was created may be cancelled, refunded or fulfilled with compensation. Compare campaign spend with order outcomes after the chosen observation period. Take fulfilment statuses from the operations team; the ad account does not have them.
Compare the same order across two channels
Take an order of 5,000 ₸ after discounts. Every cost in the table is for one completed order, and there are no refunds in the calculation. The delivery aggregator's commission is made up for the example and already includes delivery, payment processing and acquisition. A real aggregator has its own rate and set of services, which you find in the agreement.
| Item | Aggregator | Own channel |
|---|---|---|
| Revenue after discounts | 5,000 ₸ | 5,000 ₸ |
| Ingredients | 2,000 ₸ | 2,000 ₸ |
| Packaging | 200 ₸ | 200 ₸ |
| Commission including the stated services | 1,500 ₸ | None |
| Courier | Included in commission | 1,000 ₸ |
| Payment processing | Included in commission | 150 ₸ |
| Acquisition | Included in commission | 700 ₸ |
| Contribution after listed costs | 1,300 ₸ | 950 ₸ |
Through the aggregator, costs are 2,000 + 200 + 1,500 = 3,700 ₸, leaving 5,000 - 3,700 = 1,300 ₸. For a direct order, costs are 2,000 + 200 + 1,000 + 150 + 700 = 4,050 ₸, so contribution is 5,000 - 4,050 = 950 ₸. There is no commission, but the restaurant paid for the courier, payment processing and ads itself. For a real comparison, take the service breakdown from the aggregator agreement and the order reports.
If the customer orders directly a second time and no new ad money is needed, contribution with everything else unchanged is 950 + 700 = 1,650 ₸. If you paid for that repeat, say for a mailing or a bonus, subtract that money. Future repeats go into a forecast based on how your customers actually come back; they are not added automatically to every first order.
All three figures are contribution before rent, part of the wages and other costs that are not in the table. Write-offs and refunds also go into the full calculation. And do not subtract the discount twice: it has already reduced revenue, and adding it to costs as well would understate the result.
Limit the promotion to what the kitchen can cook
With capacity of 20 and normal demand of 18 orders an hour, there is room for 2 more such orders. The extra 10 created a queue of 8. Take that number to the kitchen and change the offer together: cap orders per slot, offer another time, or pick dishes that are simpler to cook.
The cap has to work at the moment the order is accepted. If the ad promises the discount to everyone and Arailym learns about the overload only after payment, the customer has to put up with a delay after their money is gone. An agreed number of slots and a clear confirmation narrow that gap.
A new dish meant to raise the average order also loads the kitchen. A side dish may take exactly the station where the queue already is. Bauyrzhan looks at cooking, packing and handover together, and you choose the offer with what he tells you in mind.
After launch, track the share of orders delivered within the promised window, the longest delays, cancellations and complaint reasons. Average delivery time can look fine while some customers wait much longer. If reviews keep saying "the food arrived cold", that is a packaging and routing task, and new ad copy will not solve it for the operations team.
Measure repeat orders over equal periods
Count repeat orders over the same window, such as 30 or 60 days after the first order. A customer who ordered yesterday simply has not had time to come back, while last month's customer had a whole month. That is why retention measurement compares customer groups at the same age.
An invitation to come back takes the last order into account. If a complaint is unresolved, pass it to the person responsible first, and then write to the customer the way they prefer. Keep purchases and messages apart in the report: some customers would have come back without a WhatsApp reminder. To learn how many orders the reminder added, you need a comparison group that did not get it.
Exercise: calculate the discount and workload
The restaurant wants to cut the price of the direct order in the table by 500 ₸. In this exercise all costs, including payment processing, stay the same. Calculate the new contribution and how many orders it takes to reach the total contribution that 100 orders used to bring. Then do the same calculation for an offer in your own project and write down where the kitchen or delivery will hit its limit.
Revenue falls to 4,500 ₸ and contribution from 950 to 450 ₸. The old 100 orders brought 95,000 ₸. To get the same amount you now need 95,000 / 450 ≈ 211.11 orders, which rounds up to 212 completed orders bringing 95,400 ₸. The ratio 950 / 450 ≈ 2.11 shows how many times volume has to grow before rounding.
A 500 ₸ discount looks modest, yet it needs more than twice the orders. If the kitchen is already nearly full, growth like that means spreading orders across other hours or changing how the kitchen works. A good solution for your own project ties together the discount, the volume and who will fulfil those orders and when. Until demand and capacity are confirmed, it is too early to promise that the promotion will pay off.