Bali & Phuket Delivery Benchmark 2026
1. Market norms: Bali
84 restaurants with a connected dashboard. Median and interquartile range — half the fleet falls inside this corridor.
| Metric | Median | Middle half (p25–p75) |
|---|---|---|
| Average check | Rp 250k | Rp 194k – 296k |
| Ads ROAS | 10.4x | 7.9x – 12.7x |
| Ad spend as share of revenue | 5.6% | 3.9% – 7.3% |
| Cancellations | 0.35% | 0.10% – 1.10% |
| Orders per bad review | 138 | Grab 180 · GoFood 139 |
A useful check: a ROAS below 5x occurs in only 6% of the fleet. If yours is lower, that is not "the market" — it is something broken in the listing, the bidding or the promos.
2. Ads: where diminishing returns begin
We split the fleet by ad spend as a share of revenue and computed the median ROAS in each band. The result is a curve you cannot see from inside a single restaurant.
| Ad share of revenue | Restaurants | Median ROAS |
|---|---|---|
| 0–2% | 7 | 12.1x |
| 2–4% | 16 | 12.8x |
| 4–6% | 26 | 11.8x |
| 6–8% | 19 | 9.6x |
| over 8% | 16 | 6.9x |
The break sits around 6% of revenue: below it the median ROAS holds at 12.1x, above it drops to 8.6x. And 42% of our own fleet is past that line. The conclusion is not "spend less" but "past 6% of revenue, every further unit of budget has to be bought with listing conversion rather than with a bid": raise the budget after conversion improves, not before.
3. Where the revenue actually leaks
We estimate lost revenue from each venue’s own order speed: how many orders it normally takes in that hour, and what it missed while closed or while an item was switched off. For the period in Bali that came to ≈Rp 16.2bn against Rp 64.7bn of revenue — about 25%. The split was the surprise:
| Source of loss | Share of losses |
|---|---|
| Items out of stock | 95% |
| Downtime (restaurant offline) | 3% |
| Cancelled orders | 2% |
So the money is lost not while the restaurant is closed — everyone notices that — but while it is open with half its menu missing. Items get switched off by the kitchen or the till "for now" and stay off forever, because nobody is watching: our sample contains dishes that have been out of stock for over 2,000 hours — 84 days. Individual venues have 40 to 70 items switched off at the same time. Phuket has the same structure (93% of losses are stock-outs) at a smaller scale: 6% of revenue against 25%.
4. Reviews: frequency, distribution, removal
The most useful quality metric in delivery is not the rating but how many orders pass between two bad reviews. A rating averages the whole history; this number reacts to what is happening now.
| Metric | Value |
|---|---|
| Orders per bad review — fleet median | 138 |
| Grab: average / best | 180 / 575 |
| GoFood: average / best | 139 / 236 |
| Removed on appeal, Grab | ≈80% |
The second observation is about the scores themselves. In a 30-day sample of 432 reviews: 51% five-star, 28% one-star and only 3% four-star. Delivery ratings are bimodal — people write either when it was excellent or when it was bad, and the middle barely exists. The practical consequence: a rating moves not by "improving on average" but by cutting the number of one-star reviews; one unfair one-star removed is worth more than several new five-stars.
5. Bali’s areas differ more than you would think
| Area | Venues | Median check | Median ROAS |
|---|---|---|---|
| Canggu | 25 | Rp 196k | 9.5x |
| Kerobokan | 3 | Rp 306k | 13.0x |
| Tibubeneng | 6 | Rp 288k | 12.5x |
| Ubud | 15 | Rp 281k | 11.6x |
| Kuta | 6 | Rp 251k | 9.5x |
| Uluwatu | 8 | Rp 242k | 11.9x |
| Pecatu | 5 | Rp 235k | 12.0x |
| Ungasan | 4 | Rp 212k | 5.0x |
| Jimbaran | 3 | Rp 194k | 8.2x |
Canggu is the island’s biggest delivery market (a quarter of our fleet and a third of its revenue), yet it has one of the lowest median checks and the lowest ROAS. That is the price of saturation: plenty of audience, more competition for it, smaller average orders. A restaurant choosing a delivery location should read this table before opening rather than after.
6. Bali versus Phuket
| Metric | Bali | Phuket |
|---|---|---|
| Median check | ≈$15.2 | ≈$22.5 |
| Median ROAS | 10.4x | 22.8x |
| Ad share of revenue | 5.5% | 2.9% |
| Downtime and stock-out losses | 25% | 6% |
Phuket looks like Bali a few years earlier: checks are almost half as high again, ads cost half as much relative to revenue and pay back twice as well. The difference is not restaurant quality but market saturation — many times more venues compete for the same audience in Bali. For an owner that means one simple thing: numbers that count as normal on one island do not transfer to the other.
Method and caveats
- — Sample: 84 restaurants in Bali and 12 in Phuket managed by Delivery Booster on GrabFood and GoFood; only venues with a connected merchant dashboard are counted.
- — Period: January–August 2026. Revenue, orders, check, ad spend, ROAS and cancellations are actual GrabMerchant and GoBiz dashboard figures.
- — Lost revenue is an estimate by the Delivery Booster method: downtime and stock-outs are computed from each venue’s own order speed; cancellations as count × average check.
- — Reviews: a 30-day sample (432 reviews) for the score distribution; negative frequency and appeal-removal share cover the full period.
- — Data is anonymised: only fleet- and area-level aggregates are published, with no venue names and no individual client figures.
- — This is a sample of agency-managed restaurants, not a random market sample. It is biased toward venues that are being watched: real market stock-out losses are most likely higher than our 25%.
Frequently asked
What GrabAds ROAS is normal in Bali?
Our fleet median is 10.4x, with an interquartile range of 7.9–12.7x. Only 6% of restaurants run below 5x, and that is almost always a sign of something broken rather than of the market. In Phuket the median is much higher — 22.8x.
How much should a restaurant spend on delivery ads?
The fleet median is 5.6% of delivery revenue. The share itself matters more: up to 6% of revenue the median ROAS holds around 12x; past 6% it drops to 8.6x, and for those spending over 8% to 6.9x. That is a diminishing-returns curve, and it arrives earlier than most restaurants notice.
How much does a restaurant lose to stock-outs?
In our Bali sample, losses from downtime, stock-outs and cancellations run at about 25% of actual revenue — roughly one rupiah in five of the potential. 95% of that is not a closed restaurant and not cancellations, but switched-off menu items.
How often do restaurants get bad reviews?
The fleet median is one bad review per 138 orders. On Grab the average is 180 orders, and the best in our fleet is 575. On GoFood the average is 139 and the best 236. If you get a negative more often than one per hundred orders, the cause is almost always packaging or temperature, not the kitchen.
Can an unfair review be removed?
Yes — more often than people assume. Of the appeals we filed on Grab, around 80% end with the review removed. That works under two conditions: file fast, and cite specific facts of the order rather than general disagreement.
Why is the average check higher in Phuket than in Bali?
In our data the median check in Phuket is about $22.5 against $15.2 in Bali — a 48% gap. The Phuket market is less saturated: fewer competitors for the same audience, cheaper ads (2.9% of revenue versus 5.5%) that pay back twice as well.
How we work with these numbers: the Delivery Booster Method · why ads bring no orders · how much time doing it yourself takes
Check your own restaurant
Send your restaurant’s Grab link — we’ll run a free audit of your listing and show where you lose orders.
Get a free audit