How to Track Restaurant Marketing ROI: Every Method From Clicks to Settled Checks
Track restaurant marketing ROI from clicks and reservations to completed visits, settled checks, incremental contribution, and profit.
Restaurant marketing ROI is incremental campaign profit ÷ full marketing investment × 100%, where campaign profit is incremental contribution before marketing minus that investment. Use that formula only when you can estimate what marketing added; until then, report the strongest result you can prove—activity, response, reservation, completed visit, matched settled sales, or observed lift—without renaming it ROI.
That distinction is the measurement layer inside a complete restaurant marketing system. The practical goal is not one perfect dashboard. It is an honest chain from a campaign to a paid, non-voided check, plus a credible comparison for what would have happened without the campaign.
Start by naming the result you need
One restaurant owner put the priority plainly: “I just care the ROI... I just want customer coming in the door.” The problem is that “ROI” often gets attached to numbers that answer different questions.
- Attention: Did someone see, watch, or click?
- Response: Did a unique person submit a form, scan a code, call, claim an offer, or take another trackable action?
- Reservation: Did that response become a booking?
- Completed first visit: Did the identified person arrive for a verified in-person visit?
- Settled sales: Did that visit connect to a paid, non-voided check?
- Repeat behavior: Did an eligible guest return during the full follow-up window?
- Contribution: What remained from sales after the costs required to serve the business?
- Incrementality: How much of the result probably would not have happened without marketing?
- Profit: What remained after every applicable campaign cost was counted once?
Clicks answer the first question. A reservation answers a later one, but it is not a visit until arrival is verified. Matched settled sales go further, but they do not prove that marketing caused the sale. A control or credible comparison is what moves the analysis from attribution toward incrementality.
This is why one restaurant marketer’s complaint rings true: “Every month I can deliver stats like clicks from Meta and Google ads for my clients, but it doesn't tell them the full story of how that turns into revenue.” When a report says “estimated,” ask what was observed, what was modeled, and what could not be matched. An estimate is a disclosure, not a settled check.
Every tracking method stops at a different point
Choose the method that reaches the strongest defensible result for that channel. Document its setup, unit, exclusions, and blind spot before launch.
| Method | Setup and useful channels | Numerator ÷ denominator | Main blind spot | Strongest supported claim |
|---|---|---|---|---|
| Platform activity | Keep each paid or organic campaign distinct inside its platform. | Clicks ÷ impressions, or another platform-defined event ÷ its stated base | Activity can happen without an identified guest or visit. | The platform recorded activity under its own rules. |
| Tagged links and UTMs | Give paid ads, email, SMS, social, PR, or food influencers a unique destination tag. | When a recipient-level join exists: the subset of unique eligible reached recipients in the denominator who completed a tagged response inside the fixed response window ÷ those same recipients whose full window elapsed and whose response outcome was reconciled and known | Links are shared, stripped, ignored, or used on another device. | A tagged response occurred; not that a visit occurred. |
| QR or direct-mail codes | Assign a unique code to each mailer, table insert, poster, or event. | Directional response events ÷ delivered pieces or documented exposures; when a recipient-level join exists: the subset of unique eligible recipients in the denominator who responded inside the fixed response window ÷ those same recipients whose full window elapsed and whose response outcome was reconciled and known | A scan can stop before a visit; codes can be shared. | The physical placement or mail piece produced recorded responses. |
| Forms or wallet claims | Capture an identifier and campaign ID from ads, email, SMS, or social. | When a recipient-level join exists: the subset of unique eligible reached recipients in the denominator who submitted a valid claim inside the fixed response window ÷ those same recipients whose full window elapsed and whose response outcome was reconciled and known | Claims may expire unused; duplicate submissions inflate totals. | Identified people claimed or requested the offer. |
| Call tracking | Give ads, mail, listings, or events a campaign number or source field. | Unique qualified calls ÷ unique tracked calls | Shared callers, missed calls, and offline booking can break the path. | A campaign produced recorded calls or qualified calls. |
| Promo codes or POS buttons | Give ads, email, SMS, or in-store offers one staff-applied code or button. | The subset of the denominator's eligible claimants with a paid qualifying redemption ÷ unique eligible claimants whose claim window elapsed and whose redemption outcome was reconciled and known | Staff miscoding and shared codes weaken identity and source. | The code appeared on paid, non-voided checks. |
| Reservation source | Preserve the source from ads, social, email, or PR through booking and arrival. | The subset of the denominator's eligible campaign reservations with verified arrival ÷ unique eligible campaign reservations whose arrival window elapsed and whose arrival outcome was reconciled and known | No-shows are not visits; the booker may not pay. | Campaign reservations arrived when check-in is verified. |
| Guest survey | After arrival from any discovery channel, ask one neutral source question. | Unique named-source answers ÷ unique completed responses | Recall, self-reporting, and forced choices introduce error. | Respondents said a source influenced discovery or the visit. |
| Matched POS checks | Join an identified response from any channel, or a written device/card rule, to checks. | The subset of the denominator's verified visits matched to a paid, non-voided settled check ÷ unique eligible verified visits whose reconciliation window elapsed and whose check-match outcome was reconciled and known | Cash, a different payer, split checks, and missing identity remain. | Recorded guests were linked to settled sales under the written rule. |
| Like-for-like time series | Compare periods for any channel, accounting for holidays, events, hours, and capacity. | Observed change ÷ comparable baseline level | Weather, operations, seasonality, and other marketing can move both periods. | The restaurant observed movement during the campaign period. |
| Holdout, geography, or staggered test | Withhold or delay ads, mail, email, SMS, or another treatment for a comparable group. | Treated outcome ÷ eligible treated units, compared with control outcome ÷ eligible control units | Spillover, weak balance, small samples, and inconsistent execution can bias the estimate. | The design supports an estimate of incremental change, with stated limits. |
The numerator and denominator must share a unit. Do not divide reservations by impressions and call the result visit conversion. Do not divide sales dollars by guests and label it ROAS. For every recipient-level response rate, keep open, immature, ineligible, and unresolved response records outside the rate and report them separately. A response from a shared link or code cannot enter a reached-recipient numerator unless the same recipient-level join proves that person belongs to the denominator. If that join or denominator is not available, report the response count and say the recipient conversion rate is unknown.
Match each channel to a response that can reach a check
A channel is measurable only as far as its records remain connected. The route should be written before money goes out.
| Channel | Strongest practical path | What still needs proof |
|---|---|---|
| Paid ads | Platform activity → tagged response or identified claim → verified arrival → settled check | Whether the sale was incremental rather than merely attributed |
| Organic social, influencer, or PR | Unique link, code, keyword, or neutral survey → identified guest → arrival → check | Untracked viewers, code sharing, and people exposed more than once |
| Email or SMS | Unique delivered recipient → click, reply, or claim → arrival → check | Delivery is not a human read; another person may pay |
| Promotion or event | Unique campaign code, ticket, or guest record → attendance → qualifying check | Walk-ins and group checks may lack a clean identity join |
| Calls | Campaign number or retained source → qualified call → booking or walk-in record → check | A call is not a visit, and a caller may not be the payer |
| Reservations | Retained campaign source → booking → verified check-in → settled check | No-shows, cancellations, party size, and payer identity |
| Direct mail or QR | Unique code or tagged scan → claim → verified arrival → check | Household sharing and unattributed walk-ins |
| Delivery | Channel order report → paid, non-refunded order → net channel sales | Delivery orders should not be reported as dining-room visits |
For a paid-social implementation, use the full ad-to-settled-check setup. If the response is a booking, track reservations from ads and keep the booking, arrival, and check as three separate records. Before assigning an economic value, define what a reservation is actually worth using arrived parties and settled checks, not leads.
Reconcile the response to the settled check
Most attribution breaks in the middle, not at the ad. Build one row per unique campaign person and keep each event separate:
- Response: campaign ID, response ID, channel, timestamp, and permitted guest identifier.
- Visit: verified arrival timestamp, location, first-time or known-guest status, and party record if relevant.
- Check: paid timestamp, check ID, net sales, discount, tax and tip treatment, void/refund status, and match rule.
- Follow-up: eligibility date, complete observation window, later paid visits, and later settled sales.
Write the identity and credit rules before launch. Decide how to handle a shared phone, a guest who responds twice, two campaign codes on one check, split checks, a claimed offer with no arrival, a walk-in without a response, cash, and a guest whose friend pays. A phone or email match is evidence only for the checks it actually joins. It does not recover the unmatched visits hiding in those cases.
Run an acceptance test before the real message or ad is sent. Use a permitted test identity to complete the exact response, booking or claim, and check-in steps; pay a test check; confirm the report shows the correct campaign, guest, check ID, amount, and paid non-voided status; then void or refund that transaction and confirm it disappears from settled sales. If any join fails, tracking is not ready.
Report each loss in the chain instead of silently dropping it:
- Response-to-visit rate = the subset of the denominator's responders who completed a verified campaign visit ÷ unique eligible identified responders whose full visit window elapsed and whose visit outcome was reconciled and known.
- Arrival rate = the subset of the denominator's reservations with a verified arrival ÷ unique eligible campaign reservations whose arrival window elapsed and whose arrival outcome was reconciled and known.
- Visit-to-check match rate = the subset of the denominator's visits matched to a paid, non-voided settled check ÷ unique eligible verified visits whose reconciliation window elapsed and whose check-match outcome was reconciled and known.
- Directly matched sales = net sales from qualifying paid, non-voided checks, after refunds and duplicate matches are removed.
Report open, immature, ineligible, and unresolved records separately from each rate. These definitions also make a skeptical owner’s question—“How do you track it?”—answerable without pretending every guest can be identified.
Put every cost beside the sales it produced
Revenue is not profit. Build two dollar ledgers for the same campaign, location, and date range.
The serving-cost ledger starts with net sales after discounts and refunds, then records food and beverage cost on paid items, packaging, incremental labor, payment processing, and fulfillment. The marketing-investment ledger records media, the actual incremental food, packaging, labor, or fulfillment cost of reward units, creative production, food influencer compensation, paid-usage rights, allocated software, management or agency cost, and any other marketing-specific expense.
Count each cost once. If a discount already reduces net sales, do not subtract its face value again. Keep reward-unit food, labor, and fulfillment in the marketing-investment ledger and exclude those same dollars from the serving-cost ledger. Document how shared software and management cost are allocated.
Use exact labels for the calculations:
Full acquisition campaign cost = full marketing investment.
Full acquisition cost per unique identified first-time guest with a verified completed visit = full acquisition campaign cost ÷ unique identified first-time guests with a verified completed visit.
Directly matched sales ROAS = directly matched net sales ÷ media spend. This is a sales-to-ad-spend ratio, not profit and not proof of incrementality.
Observed contribution before marketing = directly matched net sales − serving-cost ledger. This describes recorded matched business; it still does not prove what the campaign added.
Incremental contribution before marketing = controlled incremental net sales − serving-cost ledger for those incremental sales.
Incremental campaign profit = incremental contribution before marketing − full marketing investment.
Restaurant marketing ROI = incremental campaign profit ÷ full marketing investment × 100%.
This is campaign-level profit, not the restaurant’s accounting net profit.
The last formula requires a credible incremental-sales estimate. If you do not have one, leave restaurant marketing ROI blank. Report full acquisition cost per unique identified first-time guest with a verified completed visit and matched sales instead. That is more useful than a confident-looking fiction. The deeper checks are cost per visit and break-even restaurant ROAS, each using its own stated numerator and denominator.
Matched sales show who paid; a comparison estimates what marketing added
Direct matching gives attribution under a rule. Incrementality asks what would have happened without the marketing. Those are different jobs.
Use the strongest comparison the restaurant can execute:
- Like-for-like baseline: Compare the same location, daypart, weekday, hours, and comparable seasonal period. Log holidays, closures, local events, major menu changes, staffing trouble, and capacity limits. Call the difference observed, not caused.
- Guest holdout: Randomly withhold the campaign from an eligible group and compare outcomes after every guest has the same observation window.
- Geographic holdout: Compare treated and untreated areas only when trade areas, media spillover, and starting performance are reasonably comparable.
- Staggered launch: Start comparable locations or groups at different times, retaining the same outcome rules across each wave.
For each design, state cohort dates, eligibility, exclusions, sample sizes, baseline balance, treatment dates, and the exact outcome. Small or contaminated controls can produce a model, but not a strong conclusion. A spectacular attributed-sales ratio on tiny spend deserves the same discipline; a reported 10x can rest on a very small base.
Platform metrics can help diagnose the top of the path, but they do not replace it. Click-through rate can be wrong about restaurant results, and modeled store-visit reporting needs its own evidence boundary.
Check retention, average check, and operations before crediting acquisition
Restaurant growth has several moving parts: acquisition creates first visits, intent-to-visit conversion gets responders through the door, retention produces later visits, average order value changes revenue per check, and operations determine whether demand can be served. Missing data can imitate a failure in any one of them.
For acquisition, count unique identified first-time guests with verified completed visits. For average order value, divide qualifying net settled sales by qualifying paid checks. Also measure covers alongside revenue; sales can rise while guest count falls, or fall while spend per guest rises.
For retention, create restaurant-specific cohorts of identified guests by completed visit count. For visit N to N+1, the denominator is unique eligible identified guests who completed visit N, whose full return window elapsed, and whose next-visit outcome was reconciled and known. The numerator is the subset of that same group who completed visit N+1. Keep early returns out of the rate until the rest of their cohort has had the same full window to return, and report open, immature, ineligible, and unresolved records separately. State the cohort dates, identity coverage, exclusions, and window. This describes observed return behavior, not the causal effect of the original campaign.
Then inspect capacity and service. A full dining room, reduced hours, slow ticket times, stockouts, or a poor guest experience can cap visits or suppress returns. Marketing cannot repair those conditions by changing the audience alone. If the evidence is missing, the diagnosis is “unknown,” not “ads failed.”
Use one scorecard to decide what happens next
Keep one row per campaign and one written definition for every field:
| Scorecard field | Exact unit or calculation |
|---|---|
| Spend and cost | Dollars by ledger category, plus total cost without duplicates |
| Response | Unique valid responders; when a recipient-level join exists, the subset of unique eligible reached recipients in the denominator who completed the named response inside the fixed response window ÷ those same recipients whose full window elapsed and whose response outcome was reconciled and known |
| Response-outcome status counts | Open, immature, ineligible, unresolved, shared, and otherwise unattributable response records, each reported separately and excluded from the recipient conversion rate |
| Completed first visits | Unique identified first-time guests with verified arrival |
| Response-to-visit rate | The subset of the denominator's responders who completed a verified campaign visit ÷ unique eligible identified responders whose full visit window elapsed and whose visit outcome was reconciled and known |
| Visit-outcome status counts | Open, immature, ineligible, and unresolved visit records, each reported separately and excluded from the rate |
| Arrival rate | The subset of the denominator's reservations with a verified arrival ÷ unique eligible campaign reservations whose arrival window elapsed and whose arrival outcome was reconciled and known |
| Arrival-outcome status counts | Open, immature, ineligible, and unresolved reservation-arrival records, each reported separately and excluded from the rate |
| Full acquisition cost per unique identified first-time guest with a verified completed visit | Full acquisition campaign cost ÷ unique identified first-time guests with a verified completed visit |
| Matched settled sales | Net paid, non-voided settled sales less recorded refunds, with duplicate matches removed |
| Match rate | The subset of the denominator's visits matched to a paid, non-voided settled check ÷ unique eligible verified visits whose reconciliation window elapsed and whose check-match outcome was reconciled and known |
| Check-match status counts | Open, immature, ineligible, and unresolved check-match records, each reported separately and excluded from the rate |
| Average order value | Qualifying net settled sales ÷ qualifying paid checks |
| Repeat rate | The subset of the denominator's initial visitors with a verified return ÷ unique eligible identified initial visitors whose full return window elapsed and whose return outcome was reconciled and known |
| Return-outcome status counts | Open, immature, ineligible, and unresolved return records, each reported separately and excluded from the rate |
| Directly matched sales ROAS | Directly matched net sales ÷ media spend; a sales-to-ad-spend ratio, not profit or proof of incrementality |
| Observed contribution before marketing | Directly matched net sales minus the serving-cost ledger for those matched checks; descriptive, not incremental |
| Incremental contribution before marketing | Controlled incremental net sales minus its serving-cost ledger |
| Marketing investment | Media; creative production; food influencer compensation; paid-usage rights; allocated software; management or agency cost; and the actual incremental food, packaging, applicable paid-labor, and fulfillment cost of reward units, with every cost counted once |
| Incremental campaign profit | Incremental contribution before marketing minus full marketing investment |
| Restaurant marketing ROI | Incremental campaign profit ÷ full marketing investment × 100% |
| Decision | Keep, repair, stop, or retest, with a dated reason |
Set the economic threshold and minimum evidence needed before launch. Do not invent a universal ROAS, budget, duration, or conversion rate for every restaurant.
- Keep when the downstream result clears the restaurant’s written economics and the joins pass.
- Repair when response exists but a specific response-to-visit, visit-to-check, offer, message, or operating step is weak.
- Stop when a clean, sufficiently observed test misses the prewritten economics and the tracking chain worked.
- Retest when measurement failed, the observation window is incomplete, a major confounder changed the period, or the first test could not answer the question.
For a campaign diagnosis, use the complete restaurant-ad scorecard. It preserves the order: validate the data, find the broken step, calculate the economics, then make the decision.
When reconciliation is the bottleneck
The strongest report is often a careful join across campaign records, guest identity, visits, checks, costs, and a comparison period. When that work is still split between exports and spreadsheets, an audit can locate the missing link before you spend more.
Get your restaurant’s acquisition and retention evidence audited. The current limited-time price is $27 one time; regular access is presented as $47 per month. The audit includes a completed analysis, ongoing dashboard access under the current offer, a Restaurant Marketing Strategy Session, and a restaurant-specific retention curve. It can show where recorded acquisition or return behavior breaks; it cannot show that marketing caused a result when the test design cannot do that.