What Is a Good ROAS for Restaurant Ads? The Number Depends on Your Margin
A good restaurant ROAS beats break-even on incremental sales: 1 ÷ your contribution-margin rate before media.
A good restaurant ROAS is a conservatively measured incremental-sales ROAS above break-even, where required incremental-sales ROAS = 1 ÷ contribution-margin rate before media. If that rate is 10%, break-even is 10x; that is derived math for the stated margin, not a restaurant-industry benchmark.
ROAS by itself answers only how many sales dollars sit over each media dollar. Full acquisition cost per unique identified first-time guest tells you whether those dollars came with a new guest and a settled check.
“If I'm spending X amount, what's my ROAS, and is that a good use of my ad spend?”
Source: An independent pizzeria owner
Break-even comes from the dollars left before media
Use the contribution-margin rate from the same campaign, restaurant, and reporting window as the ROAS. Write the percentage as a decimal in the formula, so 10% becomes 0.10 and 1 ÷ 0.10 becomes 10x.
For this calculation:
Contribution-margin rate before media = (conservatively estimated incremental sales − every applicable non-media campaign cost) ÷ conservatively estimated incremental sales.
Non-media campaign costs include food, incremental labor, discounts or rewards not already reflected in sales, processing or ordering fees, fulfillment, allocated software or management, and production or food-influencer costs when they belong to the campaign. Calculate all of them over the same window and do not subtract any charge twice.
Every row here is derived from 1 ÷ margin rate. These are mathematical break-even points, not observed restaurant results, platform averages, or promises for a cuisine or restaurant size.
| Contribution-margin rate before media | Dollars available for media from each incremental sales dollar | Break-even incremental-sales ROAS |
|---|---|---|
| `5%` | `$0.05` | `20x` |
| `10%` | `$0.10` | `10x` |
| `15%` | `$0.15` | `6.67x` |
| `20%` | `$0.20` | `5x` |
| `25%` | `$0.25` | `4x` |
| `30%` | `$0.30` | `3.33x` |
| `40%` | `$0.40` | `2.5x` |
The table does not say restaurants with a certain margin normally achieve the return shown. It says what incremental-sales ROAS would be required for media to use all contribution available before media, leaving campaign contribution at zero.
Call the numerator what it really is
ROAS means sales in the numerator divided by media spend in the denominator. The result changes meaning when “sales” changes from platform-attributed to directly matched, observed, or incremental.
| Term | Plain restaurant meaning | What it can support |
|---|---|---|
| **Ad spend (media spend)** | Dollars charged by the ad platform for the campaign and window | The ROAS denominator; software, management, and production are separate unless explicitly included in another return calculation |
| **Gross sales** | Sales attached to checks before food, labor, fees, and other cost deductions | Revenue, not contribution or profit; state how discounts, refunds, taxes, and tips are handled |
| **Directly matched sales** | An identified campaign response and completed visit connect to a settled POS check | A recorded connection, not proof that the ad caused the sale |
| **Platform-attributed sales** | A platform credits sales under its identity rules, lookback window, and calculation | A platform result that depends on those rules, not causal incremental sales |
| **Observed lift** | Sales, covers, or completed visits differ from a written baseline or comparison | A measured difference that can still include seasonality, events, pricing, or operating changes |
| **Incremental sales** | Sales that would not have happened without the campaign | The numerator needed for a causal break-even decision; it requires a defensible comparison, not just a match |
| **Contribution margin before media** | Incremental sales left after the applicable non-media costs in the equation above | The amount available to repay media |
| **Profit** | Sales left after all costs included in the business's accounting definition | A separate accounting result; neither ROAS nor campaign contribution is automatically net profit |
“The furthest tracking I've seen is reservations from ads. But never final sale.”
Source: A restaurant agency owner
That distinction matters because a reservation is intent. It is not a completed visit, a settled check, or incremental sales.
A high reported ROAS can still lose money
A high gross-sales ROAS can lose money when the numerator includes sales that are not incremental or when the margin calculation leaves out costs. Discounts can raise response while lowering the dollars left on each check, and a production or management bill can consume the apparent win even when media looks efficient.
Calculate the result in this order:
- Start with conservatively estimated incremental settled sales, excluding pass-through taxes and tips and treating refunds consistently.
- Subtract food and beverage cost, incremental labor, and payment, ordering, or delivery fees.
- Subtract discounts and rewards only if the sales field has not already done so.
- Subtract campaign-specific fulfillment, software or management, production, food-influencer, and usage-permission costs.
- The amount left is contribution before media. Subtract media spend to get estimated campaign contribution after media.
Estimated campaign contribution after media = conservatively estimated incremental sales × contribution-margin rate before media − media spend.
Positive campaign contribution is not automatically restaurant net profit because your accounting definition may also allocate fixed overhead and taxes. Negative campaign contribution means the ad did not repay the costs in this calculation, regardless of the headline gross-sales ROAS.
A lower observed-lift or directly matched ROAS than the platform report can still deserve more investigation when check matching is incomplete or operating conditions changed; it is not proof of profit. It cannot be padded with assumed word of mouth, anonymous visits, future repeats, or lifetime value. A large return reported on tiny spend may also change as spending increases.
Move from platform credit to a defensible incremental estimate
Use each level of evidence for the claim it can carry, then stop before the next unsupported conclusion. An estimated result remains an estimate, even when the dashboard prints it beside a dollar sign.
| Evidence level | ROAS numerator | Safe reading |
|---|---|---|
| Platform-reported | Sales the platform attributes under its rules | Useful for delivery decisions inside that platform; not a settled-check match or causal result |
| Directly matched | Settled sales connected from campaign response to identified guest to completed visit to POS check | Stronger proof of a recorded path; still not proof the ad created the sale |
| Observed lift | Change in sales, completed visits, or covers against a documented comparison | Directional when outside factors differ; stronger when the comparison holds them constant |
| Defensible incremental estimate | Conservative sales difference attributable to the campaign under a stated test or comparison | The numerator that belongs in the break-even formula, with its assumptions visible |
Check covers and per-person spend separately. One restaurant record showed covers falling while per-person spend rose, which is why a sales change alone can hide what happened to guest traffic.
Two ordinary payment situations can break the directly matched step:
- Cash: A cash check can be matched if the campaign or guest identifier is attached before tender. If the process does not preserve that link, count the visit and leave the check unmatched.
- A different person pays: The person who claims or reserves may arrive with a companion who pays. Keep the claimant attached to the visit and check when your system permits it; otherwise record the visit, covers, and unmatched check separately rather than assigning a guessed sale.
Neither gap licenses a “halo” multiplier. It tells you where match coverage is incomplete and where an observed-lift comparison may add context without becoming proof by itself.
Put acquisition cost per unique identified first-time guest beside ROAS
ROAS grades sales against media; acquisition cost per unique identified first-time guest grades total acquisition cost against identified new guests who completed a verified visit with a matched settled check. Read both because a campaign can find inexpensive existing customers while doing little new-customer work.
Use these definitions:
Total acquisition cost = media + applicable food, offer, or reward cost + incremental visit labor + variable processing, ordering, delivery, and fulfillment fees + campaign-specific creative, production, food-influencer, and usage-permission costs + allocated software, platform, management, and agency costs.
Count each cost once. For an incentive, choose one treatment and label it: an actual-cost treatment uses the incremental food and fulfillment cost of providing the reward, while a face-value treatment uses the menu-price reduction or stated reward value. Do not combine those treatments for the same incentive. If the food or fulfillment lines already include the reward's actual cost, do not add a separate reward amount; if you use face value, do not also add that reward's food and fulfillment cost. If a platform, management, or agency fee already includes creative, software, or usage rights, do not list the included charge a second time.
For this denominator, a completed first visit is a unique identified first-time guest with a verified in-person completed-visit record and a matched settled POS check. An in-person redemption can verify the visit when the record also confirms arrival; a pickup, delivery, or other non-arrival redemption is a matched first purchase, not a completed visit. A real arrival with no settled-check match belongs in the visit and match-coverage records, but not in this denominator.
Full acquisition cost per unique identified first-time guest with a verified completed visit and matched settled check = total acquisition cost ÷ unique identified first-time guests with both a verified in-person completed visit and a matched settled POS check.
Responses, claims, and reservations remain earlier steps. Close their outcomes before using them as visits, and keep reservation value separate from check value.
Do not put assumed repeat behavior into the first-visit return. After a fixed observation window has elapsed, calculate:
Repeat-visit rate = the subset of the exact denominator who completed another verified in-person visit inside the fixed window ÷ unique eligible identified first-time guests who completed the initial verified in-person visit with their own matched paid, non-voided settled check, whose full fixed return window elapsed, and whose return outcome was reconciled and known.
Keep early returns out until the rest of their cohort has received the same full return window. Report open, immature, ineligible, and unresolved return records as separate counts outside the rate.
Only observed repeat visits and their contribution belong in a later lifetime-value view. Unmeasured loyalty, word of mouth, and “they probably came back” do not repair a losing acquisition result.
Continue, repair, or stop against your break-even number
Use your calculated break-even ROAS as the decision line, not a universal target by cuisine, size, or platform. Capacity and tracking quality determine whether a mathematically positive campaign is ready for more spend.
- Continue when the guest-to-check records are intact, conservatively estimated incremental-sales ROAS clears your break-even number, estimated campaign contribution after media is positive, and the restaurant can serve more completed visits.
- Repair when platform-attributed sales do not reconcile with matched checks, match coverage is weak, reservations fail to become visits, or an applicable cost is missing. Repair the first broken step before changing the target.
- Stop when a prewritten cash limit or decision date arrives and the campaign still cannot produce trustworthy records, or when a defensible incremental estimate remains below break-even after every included cost.
The break-even number tells you the economic limit, not how large the test should be. Build the cash cap, visit target, and decision window separately.
Audit whether acquisition or retention is holding you back
ROAS alone cannot tell you whether the bigger constraint is acquiring new guests or getting first-time guests to return. Feast's restaurant marketing audit constructs your restaurant's retention curve to help answer that question. The current limited-time offer is $27 one time; regular access is presented as $47 per month.
Get your restaurant's retention curve audited for a one-time $27 limited-time price.