Glossary

Contribution-Margin LTV vs. Gross-Margin LTV for Shopify Merchants

Gross-margin LTV is a customer's lifetime revenue minus only product cost (COGS). Contribution-margin LTV subtracts COGS plus every other cost that scales with each order — payment processing, shipping, and returns — before it's compared against acquisition cost. A cohort that clears the 'profitable' bar on gross-margin LTV can fall short once the fuller, contribution-margin number is used instead.

The formulas

Gross-margin LTV (Upstream calls this LTGP) = Σ (order revenue − COGS) across a customer's orders
LTGP:CAC = (Total Revenue − Total COGS) ÷ Acquisition Cost
Contribution-margin LTV (Upstream calls this CM3) = Gross profit − (payment fees + shipping/pick-pack + expected returns, applied as a blended rate on revenue)

Upstream's headline cohort metric, LTGP:CAC, is built on Lifetime Gross Profit — revenue minus product cost, and nothing else. It's a gross-margin calculation, and it's upfront about being one: a cohort is marked "Compounding" when LTGP:CAC is 3× or higher and buyers reorder at least 1.3× on average, the same thresholds that drive every cohort quadrant on the dashboard. That ratio deliberately excludes ad spend from its numerator (CAC is the denominator instead), but it doesn't yet net out payment processing, shipping, or returns.

Upstream computes that fuller number too, as CM3 — layering payment fees, shipping/pick-pack, and expected returns on top of gross profit, per cohort, from the same order data. CM3 isn't a second opinion bolted on after the fact; it's computed in the same pass as LTGP:CAC. The two numbers answer different questions: LTGP:CAC tells you whether a cohort clears product-cost economics against what you spent to acquire it. Recomputing that same ratio with CM3 in place of LTGP tells you whether it still clears once payment fees, shipping, and returns are real, not assumed away.

Worked example

A cohort of 100 customers, 130 orders (a 1.3× repurchase rate — Upstream's own retention threshold), $100 average order value:

Gross-margin view (LTGP:CAC)

Revenue
$13,000
COGS (30%)
−$3,900
LTGP (gross profit)
$9,100
Acquisition spend (CAC)
$2,900
LTGP:CAC
3.14×

3.14× and 1.3× repurchase clears both thresholds — this cohort is marked "Compounding."

Contribution-margin view (CM3, same cohort)

LTGP (gross profit)
$9,100
Payment processing
−$416
Shipping / pick-pack
−$780
Expected returns
−$390
CM3 (net cash contribution)
$7,514
CM3 ÷ CAC
2.59×

Same cohort, same acquisition spend — but 2.59× no longer clears the 3× bar once real payment, shipping, and return costs are counted.

Nothing about the cohort changed between the two views. The gap is entirely the $1,586 of payment, shipping, and return cost that gross-margin LTV never subtracts. A dashboard reporting only LTGP:CAC would call this cohort compounding; the CM3 number says it's closer to breakeven than the gross-margin ratio suggests.

How Upstream computes this for your store automatically

Upstream computes both numbers automatically from your real Shopify order, cost, and ad-spend data — LTGP:CAC, the gross-margin ratio that drives the Compounding / One-Hit / Trap / Drain quadrants, and CM3, the fuller contribution-margin figure — rather than showing you only the gross-margin number and calling it the whole picture.

No credit card required · Installs in 60 seconds

More on this

See how it works

A Fox & Otter Data product