Feast AnalyticsHow to Track Restaurant Marketing ROI: Every Method From Clicks to Settled Checks

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.

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.

MethodSetup and useful channelsNumerator ÷ denominatorMain blind spotStrongest supported claim
Platform activityKeep each paid or organic campaign distinct inside its platform.Clicks ÷ impressions, or another platform-defined event ÷ its stated baseActivity can happen without an identified guest or visit.The platform recorded activity under its own rules.
Tagged links and UTMsGive 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 knownLinks are shared, stripped, ignored, or used on another device.A tagged response occurred; not that a visit occurred.
QR or direct-mail codesAssign 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 knownA scan can stop before a visit; codes can be shared.The physical placement or mail piece produced recorded responses.
Forms or wallet claimsCapture 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 knownClaims may expire unused; duplicate submissions inflate totals.Identified people claimed or requested the offer.
Call trackingGive ads, mail, listings, or events a campaign number or source field.Unique qualified calls ÷ unique tracked callsShared callers, missed calls, and offline booking can break the path.A campaign produced recorded calls or qualified calls.
Promo codes or POS buttonsGive 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 knownStaff miscoding and shared codes weaken identity and source.The code appeared on paid, non-voided checks.
Reservation sourcePreserve 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 knownNo-shows are not visits; the booker may not pay.Campaign reservations arrived when check-in is verified.
Guest surveyAfter arrival from any discovery channel, ask one neutral source question.Unique named-source answers ÷ unique completed responsesRecall, self-reporting, and forced choices introduce error.Respondents said a source influenced discovery or the visit.
Matched POS checksJoin 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 knownCash, a different payer, split checks, and missing identity remain.Recorded guests were linked to settled sales under the written rule.
Like-for-like time seriesCompare periods for any channel, accounting for holidays, events, hours, and capacity.Observed change ÷ comparable baseline levelWeather, operations, seasonality, and other marketing can move both periods.The restaurant observed movement during the campaign period.
Holdout, geography, or staggered testWithhold or delay ads, mail, email, SMS, or another treatment for a comparable group.Treated outcome ÷ eligible treated units, compared with control outcome ÷ eligible control unitsSpillover, 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.

ChannelStrongest practical pathWhat still needs proof
Paid adsPlatform activity → tagged response or identified claim → verified arrival → settled checkWhether the sale was incremental rather than merely attributed
Organic social, influencer, or PRUnique link, code, keyword, or neutral survey → identified guest → arrival → checkUntracked viewers, code sharing, and people exposed more than once
Email or SMSUnique delivered recipient → click, reply, or claim → arrival → checkDelivery is not a human read; another person may pay
Promotion or eventUnique campaign code, ticket, or guest record → attendance → qualifying checkWalk-ins and group checks may lack a clean identity join
CallsCampaign number or retained source → qualified call → booking or walk-in record → checkA call is not a visit, and a caller may not be the payer
ReservationsRetained campaign source → booking → verified check-in → settled checkNo-shows, cancellations, party size, and payer identity
Direct mail or QRUnique code or tagged scan → claim → verified arrival → checkHousehold sharing and unattributed walk-ins
DeliveryChannel order report → paid, non-refunded order → net channel salesDelivery 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:

  1. Response: campaign ID, response ID, channel, timestamp, and permitted guest identifier.
  2. Visit: verified arrival timestamp, location, first-time or known-guest status, and party record if relevant.
  3. Check: paid timestamp, check ID, net sales, discount, tax and tip treatment, void/refund status, and match rule.
  4. 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:

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:

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 fieldExact unit or calculation
Spend and costDollars by ledger category, plus total cost without duplicates
ResponseUnique 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 countsOpen, immature, ineligible, unresolved, shared, and otherwise unattributable response records, each reported separately and excluded from the recipient conversion rate
Completed first visitsUnique identified first-time guests with verified arrival
Response-to-visit rateThe 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 countsOpen, immature, ineligible, and unresolved visit records, each reported separately and excluded from the rate
Arrival rateThe 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 countsOpen, 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 visitFull acquisition campaign cost ÷ unique identified first-time guests with a verified completed visit
Matched settled salesNet paid, non-voided settled sales less recorded refunds, with duplicate matches removed
Match rateThe 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 countsOpen, immature, ineligible, and unresolved check-match records, each reported separately and excluded from the rate
Average order valueQualifying net settled sales ÷ qualifying paid checks
Repeat rateThe 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 countsOpen, immature, ineligible, and unresolved return records, each reported separately and excluded from the rate
Directly matched sales ROASDirectly matched net sales ÷ media spend; a sales-to-ad-spend ratio, not profit or proof of incrementality
Observed contribution before marketingDirectly matched net sales minus the serving-cost ledger for those matched checks; descriptive, not incremental
Incremental contribution before marketingControlled incremental net sales minus its serving-cost ledger
Marketing investmentMedia; 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 profitIncremental contribution before marketing minus full marketing investment
Restaurant marketing ROIIncremental campaign profit ÷ full marketing investment × 100%
DecisionKeep, 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.

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.