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.
- Clean customer identity. Merge guest checkouts and duplicate accounts by email, or repeat buyers show up as new ones.
- Assign each customer a cohort from their first order month, and store first-order attributes with it: channel, first product, discount code.
- Calculate each order’s age in months since that customer’s first order, which is month 0.
- Sum value by cohort and age, using net revenue for now.
- Divide by the original cohort size, not by customers still active. That’s the figure CAC gets compared against.
- Make it cumulative and lay it out as a triangle.
A hypothetical example, cumulative net revenue per customer:
| First-order cohort | Customers | Month 0 | Month 3 | Month 6 | Month 12 |
|---|---|---|---|---|---|
| January | 1,000 | $70 | $92 | $106 | $124 |
| July | 1,400 | $68 | $88 | $100 | Not yet |
| October | 1,800 | $64 | $79 | Not yet | Not yet |
| December | 1,200 | $72 | Not yet | Not yet | Not 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 launch | Cohort B: sitewide sale | |
|---|---|---|
| 12-month revenue LTV | $124 | $124 |
| Average discount on orders | 5% | 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 channel | First-order contribution | 12-month contribution LTV | Share from repeat orders |
|---|---|---|---|
| Google non-brand search | $40 | $78 | 49% |
| Meta prospecting | $36 | $58 | 38% |
| TikTok | $34 | $44 | 23% |
| Affiliate and coupon sites | $22 | $39 | 44% |
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:
- 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.”
- Take contribution LTV at that horizon, per channel, averaging the last two or three mature cohorts rather than the best one.
- Haircut it if recent cohorts are trending down. If the newest cohorts are, say, 10% behind at month 3, assume they’ll finish behind.
- Subtract the profit you need per customer. LTV at the horizon is break-even CAC; the target sits below it.
- 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:
| Channel | 180-day contribution LTV | Profit kept | Target 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 LTV | Predictive LTV | |
|---|---|---|
| Based on | Orders already placed | A model of future orders |
| Available for new cohorts | No, needs time to mature | Yes, from early behavior |
| Best for | Setting and auditing CAC targets | Early warnings, customer-level segments |
| Main risk | Decisions based on old customers | Confidence 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:
- The cohort triangle in contribution per customer, with cohort sizes.
- 90-day and 12-month LTV by channel and first product, against the prior quarter. The 90-day figure is the early signal.
- Target vs actual new-customer CAC per channel, each marked scale, hold or cut.
- 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.