How to discount on Shopify without destroying your margin (2026)

A discount rarely costs what the percentage says. Here is the break-even math, why targeted beats sitewide, and how to discount without leaking profit.

A warm infographic reading: a 20% discount really means selling 2x the units, just to break even.

Short answer: A discount almost never costs what the percentage says. A 20% discount on a typical product doesn’t shave 20% off your profit. It can wipe out half of it. The fix isn’t discounting less out of fear; it’s knowing your break-even multiplier before you launch, and choosing a structure (targeted, threshold-based) instead of a blunt sitewide code. Do that and discounts become a growth lever instead of a slow leak.


Do discounts actually hurt your profit?

They can, and most do. In an analysis of 117 million Shopify discounts, Seguno found that around 90% were “at risk”: open-ended, ungoverned, and quietly eating margin. The problem isn’t the discount. It’s running one without doing the single calculation that tells you whether it can possibly pay off.

Here’s the trap. You discount, sales volume jumps, the dashboard looks great, and net profit is flat or down. You celebrated revenue and paid for it with margin. To avoid that, you need the number almost nobody calculates first.

The math nobody runs: your break-even discount

When you take a percentage off, that percentage comes straight out of your margin, not your price-tag pride. So the real question is this: how many more units do I have to sell just to make the same gross profit I’d have made at full price?

The formula is simple:

Units multiplier to break even = Gross margin ÷ (Gross margin - Discount)

Say your gross margin is 40%. Here’s what each discount actually demands of you:

DiscountYou need to sell……just to break even
10% off1.33× the units+33% more units
15% off1.60× the units+60% more units
20% off2.00× the units+100% more units
25% off2.67× the units+167% more units
30% off4.00× the units+300% more units

Read that 20% row again. A 20% discount means you must double your unit sales before you’ve earned a single extra dollar of profit. If the promo lifts sales by 40%, you didn’t grow. You went backwards, and worked harder doing it.

Run this for your margin before any promo. If you can’t realistically hit the multiplier, the discount is a loss you’ve pre-approved.

Why a 20% code costs more than 20%

Two reasons the headline number lies.

First, the margin math above: on a 40%-margin product, 20% off is half your profit, not a fifth. On a 35% margin, Shopify-focused analyses put a 20% discount at an effective margin of roughly 15% after the cut. That’s often below what you paid to acquire the customer through ads in the first place.

Second, leakage. A sitewide code reaches everyone, including the people who were going to buy at full price anyway. Every one of those redemptions is pure giveaway. You’re not converting a hesitant shopper. You’re refunding a loyal one.

Blanket vs. targeted: where the margin leaks

A 10%-off-everything banner feels generous and reads as a 10% problem. It’s usually worse, because it hits your best-sellers and your most loyal buyers hardest, the orders that needed no help at all. It can even drag down average order value: a $70 cart becomes $63, and you’ve taught the customer to wait for the next sale.

Targeted discounting plugs the leak. Instead of “10% off for everyone,” you decide who and when:

  • New customers only, to win the first order, not repeat buyers who’d convert anyway.
  • A threshold (“spend $90, get free shipping”) that raises the cart instead of cutting it.
  • Slow-moving SKUs, not your hero products.
  • A win-back offer for lapsed customers, where the alternative is zero revenue.

Same generosity, a fraction of the bleed, because it lands only where it changes a decision.

When discounting is the right call, and when it isn’t

Discount when it tips a decision that wouldn’t have happened anyway: a first purchase, a subscription sign-up, a stalled cart, dead stock you need to clear, a quiet season that needs momentum.

Don’t discount on reflex. Running aggressive promos every few weeks trains customers to never pay full price, and stacking them right after a heavy Q4 just prolongs the margin hangover into the new year. If the sale would have happened anyway, the discount is a cost with no job.

How to put guardrails on it

Whatever tool you use, a margin-safe discount has limits built in before it goes live:

  • Caps and usage limits so a promo can’t run away from you.
  • Eligibility rules (by customer tag, login state, B2B status, or region) so the offer reaches only who it’s meant for.
  • No accidental stacking with other active discounts at checkout.
  • A hard end date, scheduled in advance.

This is exactly the gap between a raw discount code and a rules-based setup. Native codes apply broadly. A targeting layer lets you say new customers, in this region, on these products, this week only, once each. That’s the difference between a discount that funds growth and one that funds your customers’ patience.

Run the break-even multiplier, pick a structure over a number, and put the guardrails up first. That’s the whole strategy.

Back to all posts