Discount-Stacked Revenue LTV Hides a Negative Contribution-Margin Cohort

Metricuno
June 3, 2026
5 min read
Quick answer

Stacked welcome codes, free shipping, and sitewide sales can make a cohort look profitable on revenue LTV:CAC while bleeding on contribution margin. Here's how to spot it and recompute the truth.

Quick answer

A cohort acquired through stacked promotions (15% welcome + free shipping + sitewide sale) can show a 4:1 revenue LTV:CAC while sitting at 0.7:1 on contribution margin. The revenue line hides discount, shipping subsidy, COGS, payment fees, and returns — all of which land disproportionately on promo-stacked buyers. Recompute LTV at the cohort level using net revenue minus variable costs before you scale the channel.

Definition
Unit economics

Discount-Stacked Revenue LTV Hides a Negative Contribution-Margin Cohort

When stacked promo codes inflate revenue LTV:CAC while the same cohort is unprofitable on contribution margin.

A discount-stacked cohort is a group of customers acquired in a window where multiple promotions applied together — a welcome code, free shipping threshold drop, and an active sitewide sale. Revenue LTV:CAC looks healthy because gross order value is preserved in the numerator, but contribution-margin LTV:CAC tells the opposite story once discount, shipping subsidy, COGS, payment processing, and returns are netted out.

The gap matters because acquisition decisions — paid budget allocation, channel mix, lookalike seeding — are usually made on revenue LTV. Stacked-promo cohorts trained on that signal scale a loss.

Also known as
promo-stacked cohort
discount-inflated LTV
margin-negative acquisition cohort

You see this most often on Shopify apparel and beauty stores running an always-on welcome popup alongside a Black Friday or mid-season sale. The codes compound at checkout, and the cohort acquired in that window carries a structurally different cost profile than your baseline.

Why the gap opens

Revenue LTV:CAC uses gross revenue — sometimes even pre-discount subtotal — as its numerator. Every promo-stacked order keeps a high sticker price in that number while the actual cash landed is 20-35% lower.

Contribution margin strips the inflation. You subtract discount, shipping subsidy, COGS, payment fees, pick-pack, and the cost of returns. On a 35%-off-equivalent stacked order with a 45% gross margin SKU, contribution margin can land at 5-8% — versus 30%+ on a full-price order.

The cohort comp is the trap

Stacked-promo cohorts often show HIGHER first-order AOV (they stockpile while it's cheap) and similar repeat rates to baseline. On a revenue lens that reads as a strong cohort. The same behaviour on a margin lens reads as your worst cohort of the year — high return rates on bulk apparel orders, low repeat margin because they wait for the next sale.

How to detect it

Tag every order at ingest with the promo codes applied and the active site-wide promotion. Build a cohort key from acquisition week plus stacked-code count, then run two parallel LTV curves: revenue and contribution margin. The divergence is your signal.

A quick recompute on a representative apparel store shows the pattern clearly. The same cohort moves from green to red depending on which numerator you use — and the related breakdown in why a 4:1 LTV:CAC collapses to 1.3:1 after COGS and returns walks through the line items in more detail.

Benchmark

Same cohort, two lenses — apparel store, 90-day LTV window

CohortRevenue LTV:CACContribution-Margin LTV:CACEffective discountReturn rate
Full-price organic3.2:12.4:10%8%
Single welcome code (15%)3.6:11.9:115%11%
Welcome + free ship3.8:11.4:122%13%
Welcome + free ship + sitewide sale4.1:10.7:134%19%

How to fix it

First, cap promo stacking at checkout. One code per order is the cleanest rule; if you need merchandising flexibility, exclude welcome codes from sale-period eligibility. The lost top-of-funnel conversion is almost always smaller than the margin you reclaim.

Second, move acquisition budget decisions onto contribution-margin LTV:CAC. The full comparison between contribution-margin LTV:CAC vs revenue LTV:CAC covers why this becomes the default unit-economics metric once you're past €1M in revenue.

Operational fix that ships in a week

Build a Shopify Flow (or equivalent) rule: if order.discount_codes.length > 1 OR (welcome_code AND active_sitewide_sale), tag the order `promo_stacked`. Pipe the tag to your warehouse, then recompute LTV by tag. Most teams find 12-25% of new-customer orders in their peak weeks carry the stacked tag — and that subset is where the margin leak lives.

Experiments to run next

Test exclusion rules as A/B variants on the welcome popup: variant A allows stacking with sitewide sales, variant B blocks it. Measure contribution-margin LTV at 60 and 90 days, not revenue conversion at session level — the session metric will favour A, the margin metric will favour B.

On paid social, split campaigns by landing-page promo state. Send cold traffic to a non-stacked landing during sale windows and measure the cohort separately. You'll typically see CAC rise 10-15% and contribution margin rise 40-60% — a net win on the lens that actually matters.

Frequently asked

Frequently asked questions

Revenue LTV:CAC uses gross or net revenue as the numerator. Contribution-margin LTV:CAC subtracts variable costs — discounts, shipping subsidy, COGS, payment fees, returns — before dividing by CAC. For a stacked-promo cohort the two can disagree by a factor of 4-6x.

On apparel and beauty stores running a 15% welcome code plus free shipping plus a sitewide sale, the revenue lens typically shows 3.5-4.5:1 while the contribution-margin lens lands at 0.6-1.2:1. That's the cohort actively losing money even though the dashboard reads green.

They buy in bulk because it's cheap, often across sizes (apparel) or shades (beauty) intending to keep one. Return rates of 18-22% on stacked orders versus 8-10% on full-price orders are common. Returns hit contribution margin twice: lost revenue plus reverse-logistics cost.

The mechanism is platform-agnostic, but Shopify's default behaviour of allowing automatic discounts to stack with code-based discounts makes it the most common offender. WooCommerce typically requires a plugin to stack; Magento defaults to apply-the-best-discount unless configured otherwise.

No — welcome codes still earn first-purchase conversion on cold traffic. The fix is preventing them from stacking with concurrent sitewide promotions, not eliminating them. The bad cohort is specifically the intersection.

Join orders to the promotion calendar by created_at, infer the stacked state from discount_amount divided by subtotal, and bucket anything above 25% effective discount as stacked. It's approximate but recovers 80%+ of the signal for a backwards-looking audit.

For DTC stores in the €1M-€15M band, 2.0:1 on contribution margin at 12 months is the working floor for sustainable paid acquisition. Cohorts below 1.5:1 are subsidising growth; below 1.0:1 they're destroying value.

Yes — shipping subsidy is a variable cost like any other. If you ship a €45 order for free at a €7 fulfillment cost, that's 15.5 percentage points off contribution margin. Treat it the same as a 15% code in the cohort recompute.

Klaviyo welcome flows typically embed a code that's also valid during sitewide sales unless you set explicit exclusions. Audit your flow codes against your promotion calendar quarterly; the overlap window is where the negative cohort gets created.

Yes — Meta and Google both accept custom conversion values. Send the contribution-margin estimate (revenue minus discount minus a COGS multiplier) as the conversion value instead of order total. Bidding algorithms then optimise toward profitable cohorts directly.

Track CAC, channels, and funnel conversion in one place

Metricuno connects ad spend, funnel events, and revenue so you can see CAC by channel, cohort, and campaign — without stitching together five tools.