Do my discount codes actually make money?
A discount comes out of contribution, not revenue. On a typical margin a 20 percent code takes about half of what the order was going to leave you.
Short answer: a discount does not come out of your revenue, it comes out of what you keep — and that is a much smaller number. On a 40 percent contribution margin, a 20 percent code takes roughly half of everything that order was going to make you. The sale has to grow the order count a long way just to stand still.
Here is the arithmetic, and the test that tells you whether a code paid for itself.
Where a discount actually lands
A $100 order at a 40 percent contribution margin leaves you $40 before advertising.
Take 20 percent off. You collect $80. Your product cost, your shipping and your packing have not moved — only the price did. So the discount comes entirely out of the $40.
You now keep $20.
The price fell 20 percent. Your contribution fell 50 percent. That ratio is the whole thing, and it gets worse the thinner your margin: on a 30 percent margin, the same code takes about two thirds.
The break-even nobody calculates
To make the same money at 20 percent off, you need to double the orders.
Not "sell a bit more." Double. And that is before you have paid a cent to promote the sale.
Worth checking against what actually happened: did the discount period do double your normal order count? Most do not come close. What most do is move orders that were going to happen anyway into a cheaper week.
The three costs a discount report never shows
Cannibalisation. Customers who would have paid full price this week paid less instead. Those orders are not incremental, and they are usually the majority.
The people who wait. Run predictable sales and you teach your list to hold off. The cost is next month's full-price orders, and it never appears in this month's report.
Returns are worse on discounted orders. A marginal buyer at a lower price is a less committed buyer, and the refund arrives weeks later — dated in a period where nobody connects it to the sale.
How to test whether a code paid for itself
You need one number, per code: total contribution during the period, against the same length of period just before it.
Not revenue. Contribution — after landed product cost, real shipping, fees, and the discount itself.
- Take the days the code ran. Total contribution.
- Take the equal number of days immediately before. Total contribution.
- Compare.
If contribution went up, the code worked. If revenue went up and contribution did not, you sold more and kept less, which is the usual result and the reason a "record week" so often ends with a flat bank balance.
Then wait three weeks and look again, once that period's returns have landed. Discounted cohorts refund at a higher rate, and judging a sale before the returns arrive flatters it.
What to change
- Stop setting discounts as a share of price. Set them as a share of contribution, which is the thing you are actually giving away.
- Discount the products that can carry it — the ones high on your profit list, not your revenue list.
- Make codes conditional. A threshold that lifts order value can pay for the discount; a blanket code cannot.
- Judge by contribution, late enough to include the refunds.
If you want the underlying number first: How do I work out my real profit per order on Shopify?
Aplon takes discounts out of contribution rather than revenue, so a code shows you what it really cost. See what your last sale made.
Free, no account
See what your own storefront shows a shopper and Google.
Store Scan reads your public pages and tells you what is missing. Titles, descriptions, headings, image alt text and page weight. Nothing to install.
Scan my storeAplon turns your Shopify store into profit analytics. See how it works.