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
A Fox & Otter Data product