How Welcome-Discount Codes Drag First-Order Margin (And What 10% vs 15% Actually Costs)

Metricuno
June 8, 2026
6 min read
How Welcome-Discount Codes Drag First-Order Margin (And What 10% vs 15% Actually Costs) — See exactly what 10%, 15%, and 20% welcome codes subtract from first-order contribution margin — and the repeat rate each tier needs to break even.
Quick answer

A 10-point welcome code rarely costs you "10 points." Here's the real first-order CM hit at 10% / 15% / 20%, and the repeat-purchase rate each tier needs to pay itself back.

Quick answer

On a typical apparel order with 60% gross margin and ~25% variable fulfilment/payment cost, a 10% welcome code subtracts about 8 points of first-order contribution margin; 15% subtracts ~12 points; 20% subtracts ~16 points. That pushes the break-even repeat rate from ~25% (no code) to ~35% (10%), ~45% (15%), and ~60% (20%). If your 90-day repeat rate isn't already north of the tier you're offering, you're buying the order at a loss.

Definition
Unit economics

Welcome-discount drag on first-order margin

The contribution-margin loss a welcome code creates on order #1, expressed in margin points after fulfilment and payment costs.

A welcome-discount code (the 10–20% off you offer in the email/SMS popup) reduces the revenue on order #1 but leaves your variable costs — pick/pack, shipping subsidy, payment processing, returns reserve — almost unchanged. That means a 10% top-line discount removes more than 10 points from contribution margin once you re-base the math on what's left after COGS and variable costs.

The practical question isn't "does it work to grow the list?" — almost any code does. The question is what repeat-purchase rate the resulting first-time buyer cohort needs to hit before the discount pays itself back at the contribution-margin level.

Also known as
welcome code margin hit
first-order discount drag
popup discount CM cost

Most Shopify and WooCommerce stores set the welcome-code tier by feel — 10% felt low, 15% felt standard, 20% felt aggressive. Almost no one re-runs the cohort math after switching tiers. The drag is bigger than the headline number, and it compounds with free-shipping subsidies on order #1.

Why the drag is bigger than the headline %

Take an apparel store with 60% gross margin, €70 AOV, €6 pick-and-pack, €5 shipping subsidy, and 2.5% payment fees. First-order contribution margin without a code lands around 28–30 points. A 10% discount removes €7 of revenue — but COGS, fulfilment, and fees barely move.

The €7 comes straight off contribution. Re-based against the lower revenue, that's ~8 margin points gone on order #1 — not 10, but close. On 15%, it's ~12 points. On 20%, ~16. Stack a free-shipping threshold that order #1 doesn't clear, and you're often shipping the first order at zero or negative CM.

The hidden multiplier

Welcome codes are disproportionately used by price-sensitive buyers — exactly the segment with the lowest repeat rate. So the cohort you're subsidising hardest is the cohort least likely to pay you back. Look at 90-day repeat rate split by "used welcome code" vs "did not" — the gap is usually 8–15 points.

How to detect the drag in your own data

Pull first-order contribution margin for two cohorts over the last 90 days: orders with a welcome code applied and orders without. Use post-COGS, post-fulfilment, post-payment CM — not gross margin. The delta is your real drag, and it's almost always wider than the discount percentage.

Then layer 60- and 90-day repeat-purchase rate on the same split. The honest read of welcome-code economics is: does (repeat_rate_with_code × repeat_CM) − first_order_drag come out positive? If you can't compute that in under ten minutes, your CRO stack is missing the first-order vs repeat-order contribution margin split.

Benchmark

Welcome-code drag on first-order CM and the repeat-purchase rate each tier needs to break even (apparel, €70 AOV, 60% GM)

Welcome code tierFirst-order CM (no code baseline ≈ 28%)CM points lost90-day repeat rate needed to break even
No code28%~25%
10% off20%8 pts~35%
15% off16%12 pts~45%
20% off12%16 pts~60%
20% + free shipping6%22 pts~75%

How to fix it without killing list growth

First lever: drop the tier by 5 points and A/B test the popup signup rate. In most apparel and beauty tests, the signup rate falls 10–18% when you move from 15% to 10%, but first-order CM recovers 4 points. Net CM per new subscriber usually improves unless your repeat rate is already exceptional.

Second lever: gate the bigger code behind a minimum order value above your first-order AOV. "15% off orders over €90" turns the discount into AOV lift instead of margin leak, and the math interacts cleanly with your free-shipping threshold on order #1 vs repeat AOV. Third lever: switch from percentage off to a fixed-€ credit on order #2 — moves the subsidy to the cohort that has already revealed intent.

The smaller-code, bigger-cohort heuristic

If your 90-day repeat rate sits between 25% and 40%, a 10% code almost always beats a 15% code on cohort CM, even after the lower signup rate. The 15%/20% tiers only win economically when repeat rate is already above 50% — at which point you don't really need the discount to convert order #1.

Experiment ideas worth queuing

Run a 4-cell test: 10% no threshold, 10% over €90, 15% no threshold, 15% over €90. Read on first-order CM (not revenue), AOV, and 60-day repeat rate. Most stores find the 10%-with-threshold cell wins on cohort CM by week 6, even when 15%-no-threshold wins on day-1 conversion rate.

Second test: replace the welcome code entirely with a €10 credit on order #2 for the first 30 days. You'll lose 15–25% of popup-driven first orders but recover 8–10 points of first-order CM, and the credit-redemption cohort typically out-repeats the welcome-code cohort by 6–9 points at 90 days.

Frequently asked

Welcome-discount margin questions

Not always. It's better when your 90-day repeat rate is below ~45% and your AOV is close to your free-shipping threshold. Above 50% repeat rate, the higher signup conversion from 15% can pay for itself — but very few stores in the €1M–€15M band are actually there.

The structure is identical but the numbers shift. Beauty typically runs 70–75% gross margin and lower return rates, so the same 10% code costs ~7 points instead of 8, and the break-even repeat rate is lower. Higher-margin verticals can sustain bigger codes.

Net revenue (post-discount, post-returns reserve) minus COGS, pick-and-pack, shipping subsidy, and payment fees — divided by net revenue. Most Shopify dashboards show gross margin only, which overstates first-order economics by 8–15 points.

No. Stacking on a 20%-off sitewide turns a 15% welcome code into a 32% effective discount, which almost guarantees negative first-order CM. Block stacking in the discount engine, or auto-disable the welcome code during promotional windows.

Free shipping is usually cheaper than 10% off in absolute euros (a €5 subsidy vs €7 off €70), and it converts almost as well in popup tests. The tradeoff is it doesn't feel as exciting in creative — but cohort CM tends to be 3–5 points better.

It still matters because cash flow is real. A 16-point first-order CM hit on a 20% code means you finance the customer for longer before they're net-positive. High LTV justifies the discount eventually; it doesn't make the order-#1 hole disappear.

Tightly. If first-order AOV sits below your free-shipping threshold and the welcome code pushes it lower, you're subsidising shipping on top of the discount. Set the threshold against post-discount AOV — see free-shipping threshold math when order #1 AOV is lower than repeat AOV.

Usually yes for stores with wide price ranges. "€10 off €60+" caps your exposure on high-AOV orders where a 15% code would give away €20+. It also reads as more concrete in creative and tends to lift AOV toward the threshold.

Long enough to read 60-day repeat rate on the affected cohort — so test exposure of 4–6 weeks plus a 60-day observation window. Reading the test on day-1 conversion alone is what gets stores stuck on 15% tiers that are quietly losing money.

Lower the tier, don't remove it. Going from 15% to 10% typically costs 10–18% of signup rate, not 50%. And subscribers acquired with a smaller incentive show meaningfully better open and repeat rates, which often makes up the gap on downstream revenue per subscriber.

Test ideas before you ship them

Run unlimited A/B tests, attach hypotheses to outcomes, and build a searchable archive of what works — and what doesn't.