Problems we solve / The money / Discount codes giving margin away
Problem 03 of 16 · The moneyWhich discount codes are quietly giving margin away?
Every promo looks like a win in the revenue report, because the report counts the sales and never the margin handed to customers who would have bought anyway. Promotion analysis done on margin answers the only question that matters: did this code earn more than it gave away?
Score each code on incremental CM1, not revenue: the margin earned on orders the code genuinely created, minus the margin given away on orders that would have happened at full price. Blufire's Promo Ledger puts the realised margin of every code next to what it gave away, and a holdout test turns that into the incremental verdict: kill, keep or restructure.
5.0 on Google · 100+ businesses · $153M revenue influenced
One code, one month, scored properly.
A 20% off code on an A$80 order. The holdout (customers who never saw the code) shows 70% of redeemers would have bought at full price anyway.
The revenue report calls this code a success: 1,150 orders and A$73,600 in sales. On margin it lost A$2,392, because most of the discount went to people who were buying anyway.
The break-even test is simple. A code pays only when the share of genuinely new orders is high enough that their margin covers the discount given to everyone else: here, 34.5% of redeemers had to be new (A$16 ÷ (A$16 + A$30.40)). It managed 30%. Run your own numbers in the discount impact calculator.
Revenue credits the code with every sale it touched.
When a customer types a code at checkout, Shopify, your email platform and your ad dashboards all record the order as a promo sale. None of them asks whether that customer was going to buy anyway. So the code gets credit for the full order value, and the discount it cost shows up nowhere except as a slightly lower average order value that nobody connects back to it.
The customers most likely to use a code are the ones already on their way to buying: subscribers who open your emails, repeat buyers who know a sale comes every month, and shoppers who search "[brand] discount code" with a full cart. Handing them 20% off does not create a sale. It marks down one you already had.
The effect compounds. Customers who learn that a code always arrives stop paying full price, so the next promo has to work harder to hit the same revenue. The revenue line keeps looking healthy while contribution margin per order slides, which is how a business ends up with record sales and no more money in the account.
A margin verdict on every code, without a spreadsheet.
Section S3, Discounting, reads every order, every code and every customer's history, and scores each promotion on gross give against the CM1 it actually realised. The ledger is honest about its limit: realised margin is not incremental margin, so for the codes that matter it pairs with a holdout from S13 Experiments, which shows how many redeemers would have bought anyway.
It also tells you who the discounts are going to. Customers are banded by how dependent they are on a code to buy, so you can see when a promo is mostly subsidising people who would have paid full price.
- Promo LedgerEvery code scored on gross give versus the CM1 it realised, so a code that lifts revenue while losing margin shows up on sight.
- Dependency bandsWhich customers only buy with a code, and which would have paid full price anyway.
- Full-price win-back targetsDiscount-dependent buyers worth moving back to full price, ready to send to Klaviyo.
- Promo-Restructure SimulatorPrice one promo, or the whole promo calendar, before it runs.

Real product screen, shown on sample data.
The team behind the numbers.
A$0 to A$1Min under 12 months, in one of retail's most price-brutal categoriesRead the case study →“It's rare to find a group that's as passionate and knowledgeable as these guys. They've really helped our brand succeed and grow. Highly recommended.”















Where promotion analysis usually goes wrong.
- Judging a promo on revenue or orders.Both count the sales the code took credit for, not the ones it caused. Only incremental margin tells you if it paid.
- Skipping the holdout.Without a group who never saw the code, there is no way to know how many redeemers would have bought anyway. A holdout test is the cheapest fix.
- Leaving codes live forever.Evergreen codes end up on coupon sites and get applied by full-price buyers at checkout. Every live code needs an owner and an end date.
- Measuring on gross margin.Shipping, payment fees and returns all move with the order. Score promos on CM1 or deeper, or the discount looks cheaper than it is.
The decision you walk away with.
Every code "worked", because revenue went up during the promo.
Every code carries a margin read, and the big ones get a holdout: kill, keep or restructure.
The discount is invisible, buried in a lower average order value.
Gross give is a line in the ledger, next to what the code actually earned.
Loyal customers get the same code as first-time buyers.
Dependency bands show who needs the code and who is being paid to do what they would have done.
The next promo is planned from last year's calendar.
The calendar is simulated on margin before a single email goes out.