Forecasting Annual CM From An RPV Win On A Discount-Code Heavy Store

Metricuno
July 22, 2026
6 min read
Forecasting Annual CM From An RPV Win On A Discount-Code Heavy Store — How to forecast annual contribution margin from an RPV test win when 40%+ of orders carry a discount code. Use post-discount AOV and code-applied CM.
Quick answer

When most orders carry a code, blended CM overstates your RPV win. Here's how to forecast annual contribution margin using post-discount AOV and code-applied CM rates.

Quick answer

On a store where 40%+ of orders carry a discount code, forecast annual CM as: Annual Sessions × RPV lift × Code-Applied CM Rate (not blended CM), using post-discount AOV to derive the CM rate. Blended CM inflates the projection by 15-30% because it silently averages in full-price orders that your winning variant may not actually be moving.

Definition
Experimentation economics

Forecasting Annual CM From An RPV Win On A Discount-Code Heavy Store

Projecting annual contribution margin from a revenue-per-visitor test win on a store where a large share of orders carry a discount code.

On stores where welcome codes, sitewide sales, and loyalty offers push code penetration above 40%, the realized AOV sits structurally below list price and the contribution margin rate on incremental orders is lower than the blended CM you'd quote from a clean cohort. Forecasting annual CM from an RPV win in this environment means (1) using post-discount AOV — not list AOV — as the revenue basis, (2) applying the code-applied CM rate to the orders your variant actually generated, and (3) segmenting the RPV lift by code-applied versus full-price orders before annualizing. Skip any of those steps and you'll present a forecast that overstates the CM impact by 20-40%.

This is a common trap on Shopify beauty, apparel, and supplement stores running always-on welcome offers. The test read looks clean — RPV up 6%, significance reached — but when finance annualizes it against the blended margin, the number never lands in the P&L.

The gap is almost always the discount layer. Your winner over-indexes on code-applied orders (welcome popups convert better, sale banners drive more sessions), and those orders carry 8-15 margin points less than full-price ones.

Why blended CM overstates the forecast

Blended CM rate is a weighted average across full-price and discounted orders. On a store with 55% code penetration and a 20% average discount depth, the blended CM might read 42% while the code-applied CM sits at 34% and full-price CM at 52%.

If your RPV winner disproportionately shifts code-applied orders — which most checkout, PDP, and cart tests do on discount-heavy sites — the incremental CM you'll actually book is closer to 34% than 42%. That's an 8-point overstatement compounded over annual sessions.

The blended-rate mistake

Multiplying incremental revenue × blended CM assumes the incremental orders look like the average order. On a discount-heavy store they don't — they look like the code-applied subset. Choosing blended CM vs code-applied CM when annualizing is the single biggest source of forecast drift on these stores.

Segment the RPV lift before annualizing

Before touching the CM projection, decompose the RPV lift into code-applied and full-price components. If your winner's lift is 70% code-applied and 30% full-price, weight the forecast accordingly — apply the code-applied CM rate to the first bucket and the full-price CM rate to the second.

Most experimentation platforms won't do this by default. You'll need to pull the order-level data (Shopify order tags or the `discount_codes` field on the order object) and rerun the RPV cut with a code-applied flag.

Use post-discount AOV to derive both CM rates. List AOV — the price before code — is a fiction on these stores; nobody actually paid it, and your COGS ratio is calibrated against the price your customer transacted at.

Code penetration and discount depth by vertical

Benchmark

Typical code penetration and CM gap by DTC vertical

VerticalCode penetrationAvg discount depthBlended CMCode-applied CMCM gap
Beauty & skincare55-70%18-22%48%36%-12 pts
Apparel & accessories45-60%20-30%42%30%-12 pts
Supplements (subscription)60-75%15-25%55%44%-11 pts
Home & lifestyle35-50%10-15%40%33%-7 pts
Electronics accessories30-45%8-12%32%26%-6 pts
Food & beverage DTC40-55%15-20%38%29%-9 pts

These ranges assume always-on welcome codes (10-15% off first order) plus 4-6 sitewide sale events per year. Stores that lean harder on loyalty tiers or influencer codes will sit at the top of the code-penetration range and see a wider CM gap.

Worked example: apparel store with 55% code penetration

An apparel Shopify store with 8M annual sessions runs a PDP test that lifts RPV by €0.42 (from €7.10 to €7.52). Blended CM sits at 42%; code-applied CM at 30%; full-price CM at 52%. Segmenting the lift shows 68% of the incremental revenue is code-applied.

Blended forecast: 8M × €0.42 × 42% = €1.41M annual CM. Segmented forecast: 8M × €0.42 × (0.68 × 30% + 0.32 × 52%) = 8M × €0.42 × 37.0% = €1.24M. The blended method overstates the win by €170k — the number finance would have marked back down anyway once quarterly gross margin didn't move as promised.

Edge cases that break the forecast further

Stacking is the biggest one. When a customer applies a welcome code on top of a sitewide sale, effective discount depth jumps to 30-40% and code-applied CM can crater below 20%. If your test window overlapped a sitewide event, isolate those orders — they're not representative of the annualized run rate and will distort both the RPV lift and the CM rate you apply to it.

Subscription-discount orders are the second. On supplements and pet food especially, the recurring 10-15% subscription discount is baked into LTV assumptions elsewhere in the finance model; double-counting it in the RPV forecast inflates the win. Give subscription orders their own CM line and forecast them separately from one-time code-applied orders.

Frequently asked

Frequently asked questions

Only when code penetration is under about 20% and your test's lift is evenly distributed across code-applied and full-price orders. Above 30% code penetration on a discount-heavy Shopify store, blended CM will consistently overstate the annual figure by 15-30%.

List AOV is the price before any code is applied — a number no customer actually paid. Your COGS, payment processing, and pick-and-pack costs are all incurred against post-discount revenue, so the CM rate has to be derived against post-discount AOV or the ratio is meaningless.

Pull three months of Shopify orders, split them by presence of a discount code, compute post-discount AOV for each segment, then apply your COGS and variable cost ratios to each. Most stores discover a 6-15 point gap between the two CM rates within an hour of running the query.

As a rough threshold: 40%+ of orders in a rolling 90-day window carry at least one code (welcome, loyalty, influencer, sitewide sale, subscription). Below that, the blended-vs-code-applied gap is usually small enough that forecasts don't drift materially.

Yes if the test window straddles a sale event. Sitewide sales cannibalize the read in two ways: they compress the RPV differential (both variants get lifted) and they inflate code penetration temporarily. Either isolate the sale window or extend the test to include a full non-sale period after.

First-order welcome codes create a distinct CM profile — the discount is a customer-acquisition cost, not a margin haircut, so many finance teams book it against CAC rather than CM. If your RPV win comes mostly from first-order buyers, forecast those separately using acquisition-economics logic, not blended CM.

Use vertical benchmarks: 18-22% for beauty, 20-30% for apparel, 15-25% for supplements. But estimating discount depth defeats the purpose — the whole point of the forecast is precision, and depth is one Shopify report away (Analytics → Sales by discount).

Yes. Any code, regardless of the channel that delivered it, applies against the same order-level margin math. Klaviyo VIP flows and abandoned-cart recovery codes typically show up in the code-applied bucket and pull the CM rate down the same way welcome offers do.

Quarterly at minimum, and always before a big test-forecast presentation. Code penetration drifts with promotional cadence, and a Q4-heavy sale calendar can push a store from 45% penetration in Q3 to 65% in Q4, changing the CM math significantly.

Presenting the blended-CM forecast to finance without segmenting the RPV lift by code-applied versus full-price. It's the cleanest way to lose credibility on future test forecasts, because the promised CM lift never fully lands in the P&L and no one can explain why.

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.