Blog · How-to guides · Hospitality
Restaurant marketing analytics connects campaign spend with orders and contribution by location. Compare POS and marketing exports, reconcile the totals, and separate attributed sales from incremental demand.
Restaurant marketing analytics compares campaign costs with orders, net sales and contribution at each restaurant location. The useful question is whether the recorded business covers the costs of serving those orders and running the campaign. A sales total alone cannot answer that question.
Use a location, campaign and reporting period as the comparison unit. A neighborhood email offer and a paid delivery promotion can produce similar sales while leaving very different amounts for rent and other fixed costs.
Keep this work separate from distributor demand planning. Marketing analysis starts with guest orders and campaign costs; menu-driven demand starts with dishes served and the ingredients those dishes require. Recipe quantities may help estimate food costs here, but purchasing forecasts are a different decision.
Write down the attribution rule before grouping the orders. For example, assign each completed order to its redeemed campaign code, and place orders without a qualifying code in an unassigned group. If you instead use a recorded referral source, keep that rule consistent. An order belongs in only one campaign for this comparison.
The POS export needs order ID, location, order date, campaign code, gross item sales, discounts, refunds and order status. Keep tax and tips in separate fields. Add order-level food cost and variable costs such as delivery commissions, payment charges and genuinely additional labor.
The marketing export needs campaign ID, location, cost period and spend. Include production or agency costs when they belong to the campaign, using a documented allocation for shared work. Do not assign the full invoice to every participating restaurant.
Use net sales after customer reductions. The IRS explains that sales returns and allowances reduce gross sales when calculating net sales. This article uses an operating contribution measure, rather than a tax calculation: net sales less the costs assigned to fulfilling the campaign orders.
Food cost should represent ingredients consumed in the orders. A bulk purchase arriving during the promotion does not mean that the entire purchase was consumed by campaign guests. Have finance approve the cost basis and identify estimates.
Consider a fictional US restaurant group running email and paid promotions during September. The following amounts are illustrative USD inputs. All orders are completed, each appears once, and the expense fields exclude costs already recorded elsewhere in the table.
| Location and campaign | Orders | Gross sales (USD) | Discounts (USD) | Refunds (USD) | Food cost (USD) | Other variable cost (USD) | Campaign spend (USD) |
|---|---|---|---|---|---|---|---|
| River, email | 120 | 3,600 | 360 | 90 | 945 | 315 | 300 |
| River, paid | 160 | 4,800 | 720 | 180 | 1,365 | 585 | 900 |
| Lake, email | 100 | 3,000 | 300 | 0 | 810 | 270 | 250 |
| Lake, paid | 180 | 5,400 | 1,080 | 120 | 1,680 | 630 | 1,000 |
| Total | 560 | 16,800 | 2,460 | 390 | 4,800 | 1,800 | 2,450 |
Calculate the results in this order:
Net sales = Gross sales − Discounts − Refunds
Order contribution = Net sales − Food cost − Other variable cost
Contribution after campaign spend = Order contribution − Campaign spend
| Location and campaign | Net sales (USD) | Order contribution (USD) | Contribution after spend (USD) | Net sales / spend |
|---|---|---|---|---|
| River, email | 3,150 | 1,890 | 1,590 | 10.50 |
| River, paid | 3,900 | 1,950 | 1,050 | 4.33 |
| Lake, email | 2,700 | 1,620 | 1,370 | 10.80 |
| Lake, paid | 4,200 | 1,890 | 890 | 4.20 |
| Total | 13,950 | 7,350 | 4,900 | 5.69 |
Dollar amounts are exact for these inputs; sales-to-spend ratios are rounded to two decimals. River email leaves 3,150 − 945 − 315 − 300 = $1,590 after campaign spend. Lake paid records the highest net sales, $4,200, yet leaves the least contribution after spend, $890.
The total proof is 16,800 − 2,460 − 390 = $13,950 of net sales, then 13,950 − 4,800 − 1,800 − 2,450 = $4,900 after the listed costs. The total sales-to-spend ratio is 13,950 / 2,450 = 5.69, using unrounded inputs. Never average the campaign ratios to obtain the group figure.
The results give the team a specific question for Lake paid: are discounts, food mix or fulfillment costs consuming the value of its sales? Operations can inspect the underlying orders before marketing changes the offer. A low contribution result may reflect the promoted dishes or delivery channel, rather than the creative message.
Marketing can compare campaigns within the same location before moving money between restaurants. Local demand, seating capacity and opening hours matter. A location already serving a full dining room may have little ability to accept more campaign orders without additional costs or displaced regular business.
For the detailed return calculation, use restaurant marketing ROI; for the distinction between a revenue multiple and a contribution return, see marketing ROI versus ROAS. Neither revenue nor contribution here is proof of incremental demand.
Email may reach loyal guests who would have ordered anyway. Paid promotion may reach first-time guests, but the campaign label alone cannot establish that either. Do not call attributed orders new customers without checking prior purchase history; customer acquisition cost has its own customer denominator.
A planned randomized holdout can compare guests eligible for the offer with comparable guests assigned to receive no offer. NIST describes random assignment as a defining feature of a completely randomized design. Restaurant tests also need a suitable unit of assignment, controls against offer sharing and an agreed observation period.
The export comparison remains useful without that test. Label it as attributed campaign performance and use it to select a question for further investigation. For evidence about guest preferences rather than campaign accounting, use marketing research analytics.
Finance should reconcile the POS totals to the sales report and campaign spend to the approved expense records. Marketing owns campaign coding; location managers resolve canceled, transferred or incorrectly assigned orders. Publish unmatched rows with the comparison so a neat total does not conceal missing activity.
Bring a sample of your own POS transactions, campaign spending and food-cost records to Covirage. Covirage maps the columns, its tools compute and check the figures, and the external AI model explains the results with every figure traced to its rows. Create a free Covirage account; account creation takes about a minute, then you set up your business and bring your files.
See Covirage for hospitality for the supporting industry context.
Review campaign spend, completed orders, net sales and contribution after variable costs. Compare the same dates and locations, and show unmatched orders separately. Add new-customer counts only when customer identifiers support a consistent definition of a first purchase.
A promotion code connects an order with an offer under your reporting rule. It does not prove the guest would have stayed away without the offer. Existing customers can redeem codes on purchases they already intended to make.
Marketing should maintain campaign definitions and spending records, operations should verify location and order details, and finance should approve cost treatment and reconciliations. One named reporting owner should resolve unmatched rows and publish a consistent comparison each period.