The problem with judging discounts and ads separately
Every promo window ends the same way. Marketing reports the ad campaign’s tracked sales. A win. The promotions team reports the discount’s lift. A win. But both are counting the same orders. The customer who clicked the ad is the customer who used the code.
Add the two reports together. They claim more orders than the window really produced. Worse, each report counts only its own cost. The ad report ignores the discount. The discount report ignores the ads. Both costs are real. And both came out of the same order.
The mistake underneath: treating discounts and ads as two separate levers with two separate scorecards. They are two ways of spending the same money, the pool of profit dollars inside each order. Spend that pool twice and the order flips to a loss. While two dashboards keep smiling.
1. An example showing you the numbers
Take a typical order from your Direct-to-Consumer (D2C) apparel store. It is $100. Sale week is coming. The plan: a 20% discount, plus a paid social push to shout about it.
Before the promo, know your . Product cost, shipping, refunds, and payment fees take $60 of every $100 order. The $40 that remains is the pool. It must feed both levers.
Here is the same order on a normal day and on a promo day.
One $100 order, normal day vs promo day, same $40 pool
Per order, whole dollars. Return on Ad Spend (ROAS) of 5.0x means ads cost $20 per $100 order; 4.0x means $25.
| Line item | Normal day | Promo day |
|---|---|---|
| One order | $100 | $100 |
| Product cost (COGS) | -$40 | -$40 |
| Shipping and warehouse (3PL) | -$12 | -$12 |
| Refunds (5%) and payment fees (3%) | -$8 | -$8 |
| The pool left for discount + ads | = $40 | = $40 |
| Discount | -$10 (10%) | -$20 (20%) |
| Advertising | -$20 (5.0x ROAS) | -$25 (4.0x ROAS) |
| What is left per order | +$10 | -$5 |
On a normal day the pool works. $10 of discount plus $20 of ads leaves $10 of profit. On the promo day the discount doubles to $20. The ads cost $25, a 4.0x ROAS the ad team cheers. But the pool holds only $40. The two levers now eat $45. Every promo order loses $5. 2,000 orders lose $10,000. Under two winning reports.
Here is the trap inside the trap. That 4.0x really would beat your everyday of 3.3x. But the 3.3x assumed the standing 10% discount. That leaves $30 of the pool for ads. At 20% off, only $20 is left. So break-even jumps to $100 ÷ $20 = 5.0x. The promo moved the goalposts. Nobody told the ad team.
One honest note. Not every promo order is even extra. Some of those 2,000 customers would have bought anyway. So measure the window against a similar no-promo week first. Only then call any of it ‘extra’.
The sentence that changes how you think about promo windows
A discount and an ad campaign are not two budgets. They are two straws in the same glass.
Each order holds one fixed pool of profit dollars. Every extra point of discount drinks from the pool the ads drink from. Judge a promo on both levers’ combined cost against that pool. Never on two separate reports.
2. How to judge a promo on one combined number
A one-hour check before any promo window. A one-week review after it.
- Work out the pool for your own store. Add up product cost, shipping and warehouse, refunds, and payment fees per $100 order. Take that away from 100. On the store above: $100 - $60 = $40. That pool pays both levers.
- Re-do your break-even ROAS at the promo discount. Dollars left for ads = the pool minus the discount. The table below does the math. Hand the ad team the promo-week break-even. Not the everyday one. A campaign that clears 3.3x in January can drown in sale week.
- Cap the two levers together, per order. Discount dollars plus ad dollars must stay under the pool. Does the promo take $20 of discount? Then the ads may spend at most $20 per order. Past the pool is a loss. That is fine only if you planned it.
- Measure the window against a clean baseline. Compare total store orders in the promo window to a similar no-promo week. The difference is your true extra orders. Not the ad platform’s claim. Not the code count. Those two count the same customers twice.
- Review one combined number, with one owner. Ad spend plus discount cost, divided by extra orders. Compare it to the pool. Whoever owns the Profit and Loss (P&L) statement signs off on it. Only that combined number decides whether the promo runs again.
How the promo depth moves your break-even ROAS (this store)
| Promo discount | Pool left for ads | Break-even ROAS |
|---|---|---|
| 0% (no discount) | $40 | 2.5x |
| 10% (standing rate) | $30 | 3.3x |
| 15% | $25 | 4.0x |
| 20% | $20 | 5.0x |
| 25% | $15 | 6.7x |
| 30% | $10 | 10.0x |
Pin this to the promo calendar. Every extra 5% of discount takes $5 from the ad pool and lifts the bar. By 30% off, even a campaign the agency calls amazing, 8.0x, loses money on every order.
3. One warning before you act
Sometimes you will overspend the pool on purpose. A launch. A clearance. A push for first-time customers you expect back. That can make sense. Another article in this series covers when that trade is worth it.
The discipline is to make it a decision, not a surprise. Before the window opens, write down three things. The planned loss per order. The reason. The payback test. What is never fine is losing $5 per order by accident. Because two teams each judged their own lever. Both reported a win.
4. Frequently asked questions
How much overlap is there between ad orders and code orders?
When the ad promotes the discount, the overlap is huge. Often 50 to 80 percent of ad-tracked orders also use the code. So the same customer wins on both reports. That is why the added-up reports claim too many orders.
Should I stop running ads and discounts together?
No. Together is often exactly right. Ads make the promo louder. What you stop is judging them separately. Does the combined cost per extra order stay under the pool? Then the window made money.
My teams report to different leaders. Who owns the combined number?
That setup is usually why the double-counting survives. Each team is measured on its own metric. Nobody is measured on the window. Give one owner the combined promo report, finance or the growth lead. The combined view makes the call.
Won’t the extra volume from a deeper discount make up for it?
Only if the ads still fit inside the smaller pool. At 20% off, this store keeps nothing unless the campaign runs above 5.0x. And deeper discounts raise the bar fast. Model the discount depth and the ad target together.
5. Quick reference: what to avoid and what to apply
What to avoid
- Judging a promo window by two separate team reports.
- Adding the marketing and promo claims together, they count the same orders twice.
- Handing the ad team an everyday break-even during a deep-discount week.
- Crediting the window’s full volume as extra orders without a baseline check.
- Letting a promo lose money by accident instead of by decision.
What to apply
- Work out your pool: $100 minus the four non-discount, non-ad costs.
- Re-do the break-even ROAS at the promo discount before the window opens.
- Cap discount dollars plus ad dollars below the pool, per order.
- Measure extra orders against a similar no-promo week.
- Put one owner on the combined cost per extra order.
Want your six costs mapped for you?
Our free 31-Point Profit Diagnostic puts a dollar figure on where your profit is leaking. Or get a quote for done-for-you eCommerce accounting.
Definitions, modeling notes & rate-basis disclosures
Definitions
- The six profit levers
- (1) Discounts, (2) Refunds, (3) Product cost (landed COGS), (4) Sales channel and payment fees, (5) Shipping and 3PL fees, (6) Advertising spend.
- Return on Ad Spend (ROAS)
- Sales divided by ad spend. A 4.0x campaign costs $25 of ads per $100 of sales.
- Break-even ROAS
- 100 divided by the dollars left for ads per $100 order. It moves whenever the discount moves.
- The pool
- The selling price minus the four costs that are neither discounts nor ads. On this store, $40 per $100 order. Both levers spend from it.
- Extra orders
- The orders a promo window adds versus a similar week with no promo. Marketers call these ‘incremental’ orders.
- Double-counting
- The same order claimed as a win on both reports. It makes two losing levers look like two winners.
- Contribution per order
- Selling price minus all six costs. What one sale really leaves behind.
Modeling notes
- This article uses the series’ standard teaching store: a $100 product, product cost $40, shipping and 3PL $12, refunds 5%, and payment and channel fees 3%. That is $60 in total, leaving a $40 pool per order. Two levers vary together here, discounts and advertising. The other four stay at house rates.
- Normal day: discount $10 (the standing 10%) + ads $20 (5.0x ROAS) = $30 from the pool; contribution +$10, the house baseline. Promo day: discount $20 (20%) + ads $25 (4.0x ROAS) = $45; contribution $40 - $45 = -$5.
- The promo window: 2,000 orders × -$5 = -$10,000, while each team’s separate report shows a win.
- Break-even ROAS at each depth is 100 ÷ (40 - discount dollars): 10% → 3.3x; 15% → 4.0x; 20% → 5.0x; 25% → 6.7x; 30% → 10.0x. Refunds and fees are held at their house dollar values ($5 and $3) for round numbers even at the promo price.
Rate-basis disclosures
- Baseline: Direct-to-Consumer apparel brand on Shopify, $100 average order value, two-week promo window.
- Promo: 20% discount plus paid social at 4.0x agency ROAS ($25 of ads per $100 order); 2,000 promo orders.
- Non-discount, non-ad variable costs: 60% of the selling price (product 40%, shipping and 3PL 12%, refunds 5%, fees 3%).
- Overlap benchmark: 50-80% of ad-tracked orders also use the code when the ad promotes the discount.
- All figures in whole dollars; 3.33x rounded to 3.3x and 6.67x to 6.7x.