43% of Restaurant Offer Tests Reached at Least 2x ROAS. So Run Three, Not One.
In Feast data, 21 of 49 eligible restaurant offer tests reached at least 2x tracked gross ROAS. Learn how to run three clean tests.
In a Feast historical analysis dated July 12, 2026, 21 of 49 eligible restaurant offer campaigns—43%—reached at least 2x Feast-tracked gross ROAS. This is not an industry benchmark or a promise that three tests will find a winner; it is evidence that one result is a poor verdict on restaurant promotions, while three separate tests give you a practical way to learn and make the next decision.
The 43% is a historical Feast result, not your break-even number
The 43% answers one narrow question: among the campaigns that passed the study's rules, how many produced at least twice as much Feast-attributed gross, non-voided order total as mapped Facebook spend? It does not say that 2x covers your restaurant's food, labor, offer, software, or other costs.
Only restaurants with a Toast connection that made those order records available were eligible.
| Part of the calculation | Exact definition |
|---|---|
| Result | 21 of 49 eligible campaigns, or 43%, had ROAS greater than or equal to 2.0. |
| Spend filter | Feast campaigns with at least $100 in mapped Facebook spend. The $100 was an inclusion filter, not a recommended test budget. |
| POS eligibility | Only restaurants with Feast connected to Toast were eligible. |
| Revenue numerator | Gross, non-voided order total attributed to the Feast campaign. |
| POS source | Those order records came through the Toast connection. |
| Ad-spend denominator | Mapped Facebook ad spend for that campaign. |
| Data cleanup | Internal test organizations were excluded. Twenty-five Facebook campaign duplicates across shared ad accounts were removed before the campaigns were counted. |
| What it cannot prove | Full-cost profit, causal lift, what an industry-wide restaurant campaign normally returns, or what your next offer will do. It is also a Feast result, not a Remy result. |
All eight rows come from the same frozen aggregate and calculation. Restaurants without Toast-linked attribution were outside the eligible population because the study could not observe their revenue outcome using this method.
“If I'm spending X amount, what's my ROAS, and is that a good use of my ad spend?”
Restaurant owner
That question needs two answers, not one. The historical figure tells you what happened in this Feast dataset. Your own cost ledger tells you whether the result cleared the line your restaurant needs.
Three tests give you three chances to learn, not guaranteed odds of a winner
Run three because each finished test can tell you what to keep or change next—not because 43% can be turned into a promise about your odds. Campaigns are not independent coin flips: the same restaurant, season, audience, service, offer terms, and tracking problems can affect all three.
In the historical group, 49% of eligible campaigns finished below 1x Feast-tracked gross ROAS and 20% recorded no attributed orders. A first miss was common in this specific dataset, but that does not make a loss acceptable or tell you how much to spend before stopping.
The useful plan is three sequential tests with a written cost limit and enough time for each test's outcome window to close. If the first test breaks at the response page, repair that before the second. If people respond but do not arrive, the next test should address that gap. If visits reach paid checks but still lose money after costs, a fourth creative will not fix the economics.
Run one offer at a time so you know what the next test should change
A clean sequence holds the restaurant problem, main audience, and response-to-check path steady while changing one material part at a time. Give each test its own campaign ID, offer terms, dates, Facebook spend, full cost ledger, outcome window, and final decision.
Start with one problem you can see in your records, such as too few first-time Tuesday dinner guests. Then write one offer idea as a prediction: “This complete family-dinner offer will give nearby parents a reason to choose Tuesday.” Choose one main audience and one trackable response, such as a campaign claim tied to an identified guest. Do not launch the next test until every eligible response in the first test has had the full arrival window and has a reconciled known arrival outcome. Give every eligible verified visitor the full check-reconciliation window too; report open, immature, ineligible, and unresolved records separately.
Before you spend, run a live acceptance test. Submit the response, confirm that the campaign ID and guest ID remain attached, verify the identified person at arrival, and confirm that the correct paid, non-voided settled check appears once with the right amount. Then void or refund that test check and confirm that reporting removes or updates it.
Three offers running at once do not create three useful tests if they share IDs, overlap audiences, or compete for the same guest. The one-offer, one-pixel example shows why a single response path can be valuable; the rule here is stricter because you also need separate spend, costs, visits, and checks for every offer.
If you need an offer idea, use prior results to form a question rather than copy a supposed winner. The 25 campaigns that reached at least 3x can suggest patterns, the new-entree launch shows an item-specific test, and the second-offer analysis shows why overlapping offers deserve their own scrutiny. None can set your terms or guarantee your result.
Cafe Alyce missed twice before its third offer reached the mark
Cafe Alyce gives the three-test plan a concrete shape: two offers missed the 2x tracked-gross line used on this page, then the third crossed it. These are individual campaign records, not proof that every restaurant should sell the same dish or expect the same order of results.
| Test | Recorded offer and result | What the record supports |
|---|---|---|
| 1 | $500 ad spend and $800 tracked revenue | Derived gross tracked ROAS: 1.6x. It missed the 2x line. |
| 2 | Half off any appetizer with dinner; $295 ad spend and about $100 tracked revenue | Derived gross tracked ROAS: about 0.34x. It missed the line again. |
| 3 | “The best steak in Jersey City isn't in a steakhouse”; a $50 ribeye offered for $30; $674 ad spend and $5,000 tracked revenue | Derived gross tracked ROAS: about 7.4x. The campaign later recorded $27,000 in tracked revenue, but the source does not provide a new spend denominator for that later total. |
The calculations in the table divide the recorded tracked revenue by recorded ad spend. The source calls the sales tracked revenue; it does not call them profit or causal lift. The useful lesson is the sequence: after two misses, the restaurant changed the offer and learned from a third result instead of turning the first miss into a verdict on all ads. Read the full Cafe Alyce three-offer case before borrowing any part of its test.
Count every cost once before you decide an offer worked
Your restaurant's pass line comes from contribution after applicable costs, not from the study's 2x gross-sales threshold. Write the ledger before launch so a promising report cannot quietly leave out the expensive parts.
Campaign costs include Facebook media, creative production, influencer compensation when applicable, commercial usage rights when applicable, allocated software or agency fees, incremental campaign labor, and the offer's actual incremental food and fulfillment cost. Give every shared monthly charge one written allocation rule, such as campaign days or spend share, and use it for all three tests.
Check-variable costs include the normal food and beverage, packaging, processing, fulfillment, and incremental service labor required to produce the matched checks. Exclude any offer food or labor already counted in campaign costs.
Use one consistent incentive treatment. Matched net settled sales already reflect a discount, so do not subtract the discount's face value again. Put the incentive's actual incremental food, labor, and fulfillment cost in the campaign-cost ledger once, and exclude that same cost from the check-variable ledger. Do not bury creative, rights, or shared software in an “other” line.
Then calculate two different answers:
- Historical-style gross ROAS = the study's Feast-attributed gross non-voided order total ÷ mapped Facebook spend. This matches the 43% study, but it does not answer whether your campaign made money.
- Directly matched contribution before fixed overhead = matched net settled sales after refunds − check-variable costs − campaign costs. This is not profit because rent, salaried labor, utilities, and other fixed overhead remain; it is not causal lift without a defensible comparison or controlled test.
The restaurant marketing ROI guide shows the wider set of proof levels and costs. Keep those definitions beside the numbers rather than using “ROI” for clicks, responses, visits, sales, and profit at once.
Follow one guest from the ad response to a paid settled check
Judge each test by the first step that broke: platform activity, response, completed visit, matched settled check, observed change, controlled lift, or contribution. Each step needs its own count and can support only the next narrow claim.
| Scorecard row | Numerator and denominator | What you may conclude |
|---|---|---|
| Platform activity | Meta-reported impressions, views, clicks, and spend | The ad was shown or acted on in the platform; not that anyone visited or bought. |
| Response rate | Unique eligible people who completed the named response ÷ unique eligible landing-page visitors or message recipients, using one declared source | The response path converted within that measured population; not that responses became visits. |
| Visit conversion | Unique eligible responders whose full arrival window elapsed, whose arrival outcome was reconciled and known, and whose outcome was a verified in-person completed visit ÷ all unique eligible responders whose full arrival window elapsed and whose arrival outcome was reconciled and known | The numerator is a subset of the exact denominator cohort. The response became a verified visit under your rule. Report open, immature, ineligible, and unknown records separately. |
| Matched-check rate | Unique eligible verified visitors whose full check-reconciliation window elapsed, whose check outcome was reconciled and known, and whose outcome included one linked paid, non-voided settled check ÷ all unique eligible verified visitors whose full check-reconciliation window elapsed and whose check outcome was reconciled and known | The numerator is a subset of the exact denominator cohort. The visit connected to a qualifying check; not that the ad caused the sale. Report immature, ineligible, and unresolved check records separately. |
| Directly matched sales | Sum of matched settled checks after voids and refunds | Campaign-linked sales under your written identity and time rules; not profit or incrementality. |
| Observed comparison | Change in completed checks, covers, first-time guests, average check, or sales against equal like-for-like periods | What moved during the test; not why it moved. |
| Controlled estimate | Difference between comparable eligible groups when a credible holdout is possible | A stronger estimate of incremental effect, still bounded by the test design. |
| Contribution | Declared sales basis minus the two non-overlapping cost ledgers above | What remained before fixed overhead, with the same attribution or causal limit as the sales basis. |
Do not count a click, claim, message, or reservation as a completed visit. Do not count a check alone as an in-person visit unless the same record also verifies arrival. If you want a diagnosis after the numbers mature, use the restaurant-ad decision guide.
Repair the first broken step instead of changing everything
The next test should change the earliest weak step and leave the working parts alone. That is how three tests become a learning sequence instead of three unrelated bets.
“Although we do social media and digital marketing, we can't figure out why it's not working.”
Restaurant owner
- Weak response: change one of the offer, message, audience, or creative. Keep the campaign-to-check IDs intact.
- Responses but few verified visits: inspect expiration, exclusions, booking friction, timing, reminders, capacity, and staff readiness.
- Verified visits but missing matched checks: repair the host, server, POS code, guest identity, or refund handling before buying more traffic.
- Matched sales but weak contribution: change price, offer cost, item mix, check size, media cost, or fulfillment cost. More responses can make a losing offer lose faster.
- Too little mature data: wait. Do not move an open response into the loss column simply because the weekly meeting arrived.
- Good contribution but poor service or no capacity: cap the campaign until the restaurant can serve the demand well.
Only one change belongs in the next test unless the first version was so broken that it never produced a readable result. Record what stayed fixed; otherwise you will not know which change mattered.
Copy this three-test planning card before spending
Write one card for each offer, and do not open the next card until the current test has a mature decision or a written safety reason to stop early.
text TEST [1 / 2 / 3] Restaurant problem: [one location + daypart + measured shortfall] Offer prediction: [guest + complete terms + expected action + why] One changed variable: [offer / message / audience / creative / visit step / economics] Held fixed: [problem, IDs, main response path, service conditions, other inputs] Campaign ID and dates: [unique ID + start + stop] Eligible audience: [who is included and excluded] Response event: [one unique-person event + guest ID] Arrival window: [last response date + full time allowed] Verified visit: [in-person proof + who records it] Settled check: [POS join + paid/non-voided rule + refund treatment + full reconciliation window] Prelaunch test: [response → ID → arrival → check → void/refund exclusion] Budget or stop rule: [restaurant-set limit; not the study's $100 filter] Campaign-cost ledger: [media + creative + influencer + rights + allocated software/agency + campaign labor + actual incremental incentive food/labor/ fulfillment cost counted once; no discount face value] Check-variable ledger: [food/beverage + packaging + processing + fulfillment + incremental service labor, excluding incentive costs already counted] Mature visit denominator: [eligible responders + full arrival window elapsed + reconciled known arrival outcome] Mature check denominator: [eligible verified visitors + full check-reconciliation window elapsed + reconciled known check outcome] Open/immature/ineligible/unknown counts: [reported separately for both] Result: [activity / response / visit / matched sales / observed change / controlled estimate / contribution, each labeled] First broken step: [one row] Decision: [keep / repair / stop / wait / retest] Next action: [one change + what stays fixed]
Success is not “test three finished.” Success is a retained campaign record that tells you what happened, what it cost, what the evidence can prove, and what the next test should change.
Feast matters when joining the campaign, guest, visit, check, and cost becomes the job
Feast is built for the part that spreadsheets usually lose: a campaign page captures a guest's phone number, supported POS matching connects the same identity to campaign sales, and reporting keeps sales by campaign. Feast's public pricing page says the full package also includes food influencer sourcing and compensation, editing, SMS follow-up, ad management, and campaign pages; the restaurant's media spend remains separate. POS-linked campaign sales are attributed sales, not profit or causal lift.
You still set the offer, cost limit, service capacity, and decision rule. If you want the campaign-to-check work managed in one restaurant growth system, Book a demo of Feast.