We run paid ads for a high-ticket ecommerce brand, and we wanted to answer a plain-sounding question with real money riding on it: what is the best way to show a discount? Same 10% off, presented two ways: a slashed price on the product page, or a promo code at checkout. When you spend enough on paid ads, even the wrapping around an offer earns a test.
We assumed the wrapping barely mattered. It mattered enormously. When we moved the discount from a slashed price on the page to a promo code at checkout, our cost per purchase across the Western markets jumped by 85% to 100% and more. Then Germany did the exact opposite. Here is the whole test, the real numbers, and what I think it means for your creative.
The short version
People buy what they can see, not what they have to read.
- Same discount, two ways to show it. We gave 10% off as a promo code, then as a slashed price on the page. Only the presentation changed.
- Hiding it behind a code nearly doubled our cost. Across the US, UK, Canada and Australia, cost per purchase rose 85% to 100%+ once shoppers had to enter a code.
- Almost nobody used the code. Of 149 purchases in the window, only about 25 used the code that was plastered everywhere.
- Germany went the other way. There the code cut cost per purchase by 52%, which we treat as an anomaly worth a hypothesis, not a rule.
- Creative beats copy. A visible price drop does the job a written code cannot, because people scan before they ever read.
The test: two ways to show the same 10% off
The brand sells high-ticket products, so every sale is a considered purchase. We set up a clean A/B test: same products, same audiences, same budget, same 10% discount. The only variable was how that discount reached the shopper.
Method one was a promo code. The page showed the full price, and a code in the ad, the banner and the email took 10% off at checkout. To get the saving, a shopper had to notice the code, remember it, and type it in.
Method two was a slashed price. The page showed the old price struck through with the new price beside it, the 10% already gone. No code, no typing, nothing to remember. The saving was simply there.
Same money off either way. What differed was whether the shopper had to do something to claim it.
What happened to cost per purchase
We ran both versions long enough to trust the numbers, then compared what it cost to win a single sale under each. Cost per purchase is just how much ad spend it takes to make one sale, and it is the figure that decides whether the maths works at all.
In the four Western markets, the code lost badly. Cost per purchase climbed 85% to 100% and more once the saving lived in a code instead of on the price. Same offer, close to double the cost of a customer.
Change in cost per purchase after we swapped a slashed price for a promo code
Same 10% discount, same products, same audiences. Only the way the saving was shown changed. On this chart, taller means a more expensive customer, so lower is better.
That is a savage swing for a change most teams would file under cosmetic. Nothing about the product, the audience or the budget moved. The only thing that changed was whether the saving was shown or written.
Then there was Germany
Germany broke the pattern. In that market, switching to the promo code cut cost per purchase by 52%. The same move that punished us everywhere else made Germany cheaper to sell into.
I want to be honest about what that is: an anomaly, not a headline. One market disagreeing does not overturn four markets that agreed, and I would not rebuild a global strategy on a single reversal.
Still, it is worth a hypothesis. German shoppers have a reputation for treating discount codes deliberately, comparing and applying them as a habit rather than scrolling past. If that holds, a code there reads as less friction and more ritual. It is a theory we would want to test again before betting budget on it, and you should confirm your own markets rather than assume they behave like ours.
Only 25 people used the code
Here is the detail that reframed the whole test for me. During the promo code window, we recorded 149 purchases. Only about 25 of them actually used the code, even though it sat in the ad, the banner and the email.
The rest paid full price, or used the 5% off code they picked up for joining the email list. So the discount meant to power the campaign was ignored by roughly five in six buyers.
That is the real finding. Discounts still work. A saving nobody notices does not, and a code is very easy not to notice. Shoppers click without buying for the same reason a code goes unused: the offer never landed where their attention was. A slashed price is felt in the moment, while a code is a task for later.
Slashed price vs promo code, side by side
Strip it back, and the two methods ask very different things of the same shopper.
| What the shopper meets | Promo code at checkout | Slashed price on the page |
|---|---|---|
| What they have to do | Spot the code, remember it, type it in | Nothing, the lower price is already applied |
| How the discount reads | Words and an instruction to follow | A visual, old price struck through beside the new one |
| Where it lives | In the caption, the banner or the email | On the product, right next to the price |
| Cost per purchase in the West | Rose 85% to 100%+ | Held steady |
The real lesson is about attention, not pricing
The takeaway is not really about discounts. It is about how people take an ad in. We scan, we feel, and we act on what we can see, which is exactly why creative does the heavy lifting in a campaign.
Put the offer in the creative itself, not the caption underneath it. A price crossed out gets noticed before a single word is read. Treated this way, a weak discount is not a pricing problem but a conversion problem, and fixing how an offer shows up is some of the cheapest optimisation going, because you are not spending more, just letting people see what you already offer. If you run Meta ads, the rule is the same: the saving belongs in the frame, not the footnote.
The first time I watched the cost per purchase climb, I assumed we had broken something in the build. We had not. The ads were fine, the targeting was fine, the offer was identical in every version. People simply were not seeing a discount they had to go and find. It changed how I brief creative now: if the saving is not visible in the first second, I treat it as missing.
Discounts getting ignored?
Put your offer where people actually look.
We audit how your discounts and creative show up in the feed, then close the leaks that quietly inflate your cost per sale.
How to show a discount so people actually see it
If you want a saving to land, make it impossible to miss and effortless to claim.
Put the price drop in the creative. Show the old and new price together, in the image or the first frame of the video, so the discount is seen before any copy is read.
Lead with the saving, not the mechanics. Whether you open on the problem or the benefit, the number should be the hero, never the instructions for unlocking it.
Keep the code, but give it a smaller job. A code is brilliant for tracking, email capture and influencer deals, so keep it for those. Just do not let it be the only proof a discount exists.
Write less, show more. If one line of ad copy is carrying your whole offer, it is carrying too much. And before you blame the price for soft sales, check what a purchase is actually costing you to win, because the leak is usually the presentation, not the number.
Frequently asked questions
Should I use a promo code or just show the sale price?
For most Western audiences, show the sale price. A code adds a step, and in our test most shoppers skipped it, which pushed cost per purchase up. Keep a code for tracking or email capture, but do not make it the only way the discount appears.
Why did the promo code work in Germany but nowhere else?
Honestly, we treat it as an anomaly. Our working hypothesis is that German shoppers engage with discount codes more deliberately, so a code is less friction there. We would test it again before relying on it, and you should check your own markets rather than assume they behave the same.
Does this mean discount codes are a bad idea?
No. Codes are great for tracking, influencer partnerships, email signups and segmenting offers. The mistake is relying on a code as the only signal that a discount exists, because most people never see or use it.
What is cost per purchase?
It is how much ad spend it takes to generate one sale, sometimes called cost per acquisition. If the same offer suddenly costs far more to convert, something in the funnel has changed, and in our case it was how the discount was shown.
How many sales do you need before a test like this is trustworthy?
Enough conversions that the gap between versions is unlikely to be noise. We compared across 149 purchases, which was plenty to see a clear pattern. With very small samples, treat any difference with caution.
We already run a promo code. What should we change first?
Add the visual. Put the slashed price or a clear sale badge on the page and in the creative so the discount is seen even when the code is not used. Keep the code running for tracking, and compare cost per purchase before and after.
The bottom line is simple: do not make people work for a discount you want them to use. Show the saving, keep the code for the jobs it is genuinely good at, and watch what happens to your cost per sale. If you want another set of eyes on how your offers show up, book a call and we will take a look.