Promotions can fill your tablet with orders and still make your month worse.
That is the trap many owner-operators describe: sales look up, cash feels tight. The missing piece is promotion ROI at contribution level, not gross sales screenshots.
Quick Summary
- Promo volume is useful only if contribution stays positive
- Calculate ROI per order first, then scale offers
- Separate organic and promo orders in one scorecard
- Use stop rules before launching any discount campaign
What Platform Data Says
DoorDash says merchants running sponsored listings often see stronger visibility and reports internal performance claims for ad spend efficiency. DoorDash also exposes promotion data fields (merchant-funded vs platform-funded) in integration docs, which is exactly what operators need for clean accounting.
Uber Eats merchant promo tools allow budget caps and audience targeting (new customers vs broader reach), which helps avoid open-ended discount spend.
The operational takeaway: platforms provide knobs, but they do not protect your margin for you.
The Promotion ROI Formula
Use contribution math, not topline sales.
netPayout = menuPrice
- platformFees
- merchantFundedDiscount
contribution = netPayout - foodCost - packaging - channelLabor
promoROI = (incrementalContribution - promoSpend) / promoSpend
Where incrementalContribution is promotion-period contribution minus baseline contribution for comparable days.
Worked Example (Single Item)
Assume one promoted bowl:
- App menu price: $18.00
- Platform effective deductions: 27%
- Merchant-funded promo: 20% off
- Food cost: $5.40
- Packaging: $0.70
- Channel labor: $1.10
Step 1: Net payout
platformFees = 18.00 x 0.27 = 4.86
merchantDiscount = 18.00 x 0.20 = 3.60
netPayout = 18.00 - 4.86 - 3.60 = 9.54
Step 2: Contribution
contribution = 9.54 - 5.40 - 0.70 - 1.10 = $2.34
If your baseline non-promo contribution is $4.20, this promo almost halves unit contribution. You need real incremental volume to justify it.
Break-Even Lift Calculator
requiredIncrementalOrders = promoSpend / baselineContributionPerOrder
If promo spend is $1,200 and baseline contribution per order is $4.00:
requiredIncrementalOrders = 1,200 / 4.00 = 300 orders
If your test cannot produce that lift, stop or redesign the offer.
What Operators Complain About (and How to Prevent It)
In restaurant-owner forums, common complaints are consistent:
- promo orders replace full-price regulars
- fee stack is unclear until payout day
- “sales up, profit down” weeks become normal
Prevent this with a simple control method:
- same weekday comparison (Mon vs Mon)
- same daypart comparison (lunch vs lunch)
- separate tracking for first-time vs repeat promo customers
14-Day Promo Test Playbook
- Pick one item class (do not discount entire menu)
- Set a daily promo budget cap
- Define minimum acceptable contribution per promo order
- Track 4 metrics daily:
- promo orders
- organic orders
- average check
- net contribution dollars
- Stop if contribution per promo order drops below floor for 3 consecutive days
This removes guesswork and emotion from promo decisions.
Promotion Design Rules That Usually Work Better
- Discount add-ons or bundles, not your strongest standalone item
- Prefer limited windows (lunch slump, late-afternoon gap)
- Combine offer with minimum basket threshold
- Raise app menu prices to channel-correct level before discount tests
If the base app price is already underbuilt, no promotion strategy will save margin.
Related Guides
- US Delivery App Pricing Guide
- Uber Eats Merchant Fees & Commission Rates (2026)
- DoorDash Fees Breakdown (2025-2026)
- Uber Eats, DoorDash, and Grubhub Fees (US, 2026)
- Prime Cost Guide
KitchenCost helps you set app-channel price floors before you run promotions, so growth does not hide margin loss.
Try KitchenCost.