Skip to content
Can Elmas

Ecommerce · 8 min read

Customer Lifetime Value for Ecommerce: Use Cohorts, Not Averages

TL;DR

Calculate ecommerce customer lifetime value by first-order cohort at fixed horizons like 90 days and 12 months, using contribution margin instead of revenue. Split it by acquisition channel and first product, set each channel's CAC target from LTV at the payback window your cash allows, and treat predictive LTV as an early read you check against actuals.

· Published · Updated

A single average LTV figure tells you almost nothing you can act on. Calculate ecommerce customer lifetime value by first-order cohort, at fixed horizons like 90 days and 12 months, on contribution margin rather than revenue, then split it by acquisition channel and first product. That turns LTV from a vanity number into the ceiling on what each channel can pay for a new customer.

Why average LTV misleads

The textbook formula, average order value × purchase frequency × customer lifespan, gives one tidy number that hides most of what matters in a non-subscription store:

  • It mixes customer ages. A customer from three years ago has had three years to reorder; last month’s has had four weeks. The average describes neither and shifts whenever acquisition volume changes.
  • Lifespan is a guess. Ecommerce customers don’t cancel; they stop buying. “Lifespan” is an assumption someone typed into a spreadsheet.
  • It’s revenue, not money you keep. You pay for acquisition with what’s left after product, shipping, fees and returns.
  • It averages away the mix. Channels and entry products produce customers of very different value, and one blended CAC target overpays some channels while starving others.
  • It has no time horizon. “Our LTV is $180” doesn’t say when that $180 arrives, and CAC is paid today.

The better question: what does a customer acquired in a given month, from a given channel, contribute by day 90, day 180 and month 12?

Cohort LTV step by step

A cohort is every customer whose first order falls in the same month. You need an order export with customer email, order date, net revenue after discounts and refunds, and line items. Shopify’s order export has all of it.

  1. Clean customer identity. Merge guest checkouts and duplicate accounts by email, or repeat buyers show up as new ones.
  2. Assign each customer a cohort from their first order month, and store first-order attributes with it: channel, first product, discount code.
  3. Calculate each order’s age in months since that customer’s first order, which is month 0.
  4. Sum value by cohort and age, using net revenue for now.
  5. Divide by the original cohort size, not by customers still active. That’s the figure CAC gets compared against.
  6. Make it cumulative and lay it out as a triangle.

A hypothetical example, cumulative net revenue per customer:

First-order cohortCustomersMonth 0Month 3Month 6Month 12
January1,000$70$92$106$124
July1,400$68$88$100Not yet
October1,800$64$79Not yetNot yet
December1,200$72Not yetNot yetNot yet

Read it two ways. Down a column, you compare cohorts at the same age: October’s customers are worth less at month 3 than January’s or July’s were, so find out what brought them in before scaling it. Across a row, the point where the curve flattens tells you how long a payback window is realistic. Mark immature cells “not yet,” never zero; a zero reads as a cohort that stopped buying.

Margin-based LTV vs revenue LTV

Revenue LTV overstates what you can afford to spend on acquisition, and unevenly. Calculate contribution per order, then build the same triangle with it:

Order contribution = net revenue − COGS − shipping and fulfillment (net of shipping charged) − payment fees − returns allowance − loyalty rewards or free gifts redeemed

Work at order level rather than applying one margin percentage, which hides two things that often move LTV: discount depth and product mix. The full cost list is in contribution margin for DTC.

A hypothetical comparison of two cohorts with identical 12-month revenue:

Cohort A: full-price launchCohort B: sitewide sale
12-month revenue LTV$124$124
Average discount on orders5%25%
12-month contribution LTV$62$38

Revenue LTV says these cohorts are equal. Contribution LTV says cohort A can carry a CAC more than 60% higher. When anyone quotes LTV in a planning meeting, ask which kind it is. If it’s revenue, it isn’t a spending number.

LTV by channel and first product purchased

Next, cut the contribution triangle by the first-order attributes you stored. Two cuts matter most.

By acquisition channel

Tag customers with the channel of their first order: the UTM source or referring channel, backed by a post-purchase “how did you hear about us” question where click data is thin. The rule doesn’t need to be perfect, just written down and kept stable.

A hypothetical 12-month view:

First-order channelFirst-order contribution12-month contribution LTVShare from repeat orders
Google non-brand search$40$7849%
Meta prospecting$36$5838%
TikTok$34$4423%
Affiliate and coupon sites$22$3944%

Brand search is left out on purpose, because people searching your name usually found you somewhere else first. Meta and TikTok look similar on the first order but diverge by month 12, which a first-order ROAS target would never show.

By first product

Do the same with the first product or category purchased. A consumable often leads to replenishment, while a durable hero product may be bought once. When I run this cut, it often changes what gets advertised: a thin-margin product can be the best entry point if its buyers come back, and the bestseller by first-order ROAS can produce customers who never return.

Small segments swing wildly between cohorts, so group minor channels and products into “other” and read by quarter when volume is low. Acting on the retention side of these findings is covered in how to increase repeat purchase rate.

Setting CAC targets from LTV

LTV earns its keep when it sets how much each channel may pay for a new customer:

  1. Pick a payback horizon your cash can carry. A cash-funded brand might use 90 or 180 days; a well-capitalized one might accept 12 months. Never use “lifetime.”
  2. Take contribution LTV at that horizon, per channel, averaging the last two or three mature cohorts rather than the best one.
  3. Haircut it if recent cohorts are trending down. If the newest cohorts are, say, 10% behind at month 3, assume they’ll finish behind.
  4. Subtract the profit you need per customer. LTV at the horizon is break-even CAC; the target sits below it.
  5. Compare against actual new-customer CAC per channel, not platform-reported CPA, which counts conversions that would have happened anyway.

Continuing the hypothetical numbers with a 180-day horizon and 20% of contribution kept as profit:

Channel180-day contribution LTVProfit keptTarget new-customer CAC
Google non-brand search$64$13$51
Meta prospecting$50$10$40
TikTok$38$8$30

One store-wide target would have averaged these, overpaying on TikTok and holding back the channel whose customers are worth the most.

The familiar 3:1 LTV:CAC benchmark comes from SaaS and is often applied to revenue LTV over an open-ended lifetime. A horizon-bound contribution target is harder to flatter and maps directly to cash.

Historical vs predictive LTV

Historical LTV is what cohorts have actually delivered. It’s exact but lags: a 12-month figure describes customers acquired over a year ago, under different creative and offers. Predictive LTV estimates what recent customers will be worth, so you can react sooner. Three common approaches:

  • Curve multipliers. If mature cohorts reached 1.6 times their 90-day value by month 12, a new cohort at $35 of 90-day contribution projects to about $56. Crude, but transparent and easy to check.
  • Probabilistic models. “Buy till you die” models such as BG/NBD with Gamma-Gamma estimate each customer’s future purchases and spend from recency, frequency and order value. Open-source libraries implement them.
  • Platform predictions. Klaviyo and some other platforms show predicted lifetime value on profiles once there’s enough order history. Handy for segmentation, but usually revenue-based and hard to audit.
Historical cohort LTVPredictive LTV
Based onOrders already placedA model of future orders
Available for new cohortsNo, needs time to matureYes, from early behavior
Best forSetting and auditing CAC targetsEarly warnings, customer-level segments
Main riskDecisions based on old customersConfidence the model hasn’t earned

Set CAC targets from historical contribution LTV, use predictions to flag cohorts drifting off course, and backtest every prediction once its cohort matures. Models tend to break after a price change, a new hero product or a new channel.

Reporting LTV to the team

Put LTV on one monthly page, with definitions at the top: horizon, revenue or contribution, channel rule and what counts as a new customer. Then four blocks:

  1. The cohort triangle in contribution per customer, with cohort sizes.
  2. 90-day and 12-month LTV by channel and first product, against the prior quarter. The 90-day figure is the early signal.
  3. Target vs actual new-customer CAC per channel, each marked scale, hold or cut.
  4. A short interpretation and the decision it leads to.

Give each team the part it acts on: CAC targets for paid media, the curve between months 1 and 6 for retention, first-product LTV for merchandising, payback against the cash plan for finance.

Before the page goes out, check:

  • Every figure names its horizon and whether it’s revenue or contribution
  • Cohort sizes appear next to values
  • Refunds are netted out and taxes excluded
  • Guest checkouts are merged with account customers by email
  • Margin inputs match current COGS, shipping costs and return rates
  • Predicted values are labeled and backtested against actuals

Building this model and wiring it into channel budgets is a core part of my ecommerce growth work.

Get it built

If your LTV is one number from a dashboard and your CAC targets are a guess, the Growth Audit starts there: cohort LTV on contribution, split by channel and first product, with a CAC target for each. It’s $1,500 fixed and credited if we continue. See pricing or get in touch.

FAQ

Frequently Asked Questions

What is a good LTV to CAC ratio for ecommerce?

There isn't a universal one, because the ratio depends on the time horizon and on whether LTV is revenue or contribution. A more useful rule is that contribution LTV at your payback window must exceed new-customer CAC by the profit you need per customer.

How long should I wait before trusting a cohort's LTV?

A cohort's value at a given horizon is complete only once every customer in it has had that much time. Until then, read the earlier horizons or use a projection that is clearly labeled as predicted.

Should LTV include shipping fees and taxes?

Exclude taxes, since they aren't yours. Treat shipping fees customers paid as an offset to your shipping cost inside contribution, not as revenue that inflates LTV.

Can I use the LTV figures in Shopify or Klaviyo?

Use them as a starting point, not as your planning number. Built-in figures are usually revenue-based and often average customers of different ages, so rebuild LTV by cohort on contribution before setting CAC targets from it.

Work with me

Let’s find your biggest growth lever

Tell me about your growth challenge. I’ll tell you honestly if I can help — and if I can’t, who can.

  • ✓ No obligation
  • ✓ No sales script
  • ✓ Honest feedback
  • ✓ Clear next steps