1. Scope
The CLV Calculator estimates the revenue and gross profit an average customer generates, using a single repeat-purchase model: average purchase value × purchase frequency × customer lifespan, then margin-adjusted. It does not have a subscription (ARPU / churn) mode, does not discount future cash flows to net present value, and does not run probabilistic cohort models (Pareto/NBD, BG/NBD).
2. Inputs and outputs
Inputs: average purchase value, purchase frequency per year, customer lifespan in years (entered directly, not derived from churn or retention), acquisition cost (CAC), and gross margin (%).
Outputs: annual value per customer, monthly value, lifetime revenue (CLV), margin-adjusted CLV (gross-profit lifetime value), the LTV:CAC ratio, and CAC payback in months.
Engine source: src/lib/customer-lifetime-value-calculator/engine.ts.
3. Formula / scoring logic
annual_value = avg_purchase_value * purchase_frequency_per_year
monthly_value = annual_value / 12
clv = annual_value * customer_lifespan_years # lifetime revenue
margin_adjusted_clv = clv * (gross_margin_pct / 100) # gross-profit LTV
ltv_cac_ratio = margin_adjusted_clv / acquisition_cost
payback_months = acquisition_cost / (monthly_value * gross_margin_pct / 100)
4. Assumptions
- Customer lifespan is a direct input. You enter the average number of years a customer stays; the tool does not derive it from churn or a retention rate.
- Constant purchase value and frequency. Average purchase value and purchases per year are held flat across the whole lifespan.
- Gross margin is variable-cost margin. Include inference, hosting, payment-processing, fulfilment. Exclude fixed overhead.
- No discounting. Lifetime value is undiscounted — a dollar in year three counts the same as a dollar today.
- No expansion revenue. Upsells, cross-sells, and price-tier migrations must be folded into the average purchase value.
5. Data sources
The tool ingests no external data — every figure is user-entered. The formula is the standard repeat-purchase lifetime-value model taught in marketing and managerial-accounting curricula. Probabilistic CLV model references, for readers who need cohort-level CLV:
- Schmittlein, Morrison, Colombo — Counting Your Customers: Who Are They and What Will They Do Next? Management Science, 1987 (Pareto/NBD).
- Fader, Hardie, Lee — "Counting Your Customers" the Easy Way: An Alternative to the Pareto/NBD Model, Marketing Science, 2005 (BG/NBD).
6. Known limitations
- Aggregate, not cohort-level. The formulas treat all customers as equivalent. For a business with heterogeneous cohorts (different channels, tiers, regions), aggregate CLV misleads — compute per-cohort CLV from timestamped data.
- Fixed lifespan is a simplification. A single average lifespan hides the spread between one-time buyers and loyalists. If your retention curve is steep early and flat later, a flat average under-states the sticky tail.
- No customer-heterogeneity modelling. Probabilistic CLV (Pareto/NBD, BG/NBD) accommodates heterogeneous purchase rates and drop-out — out of scope here.
- The Reichheld "5% retention lift = 25–95% profit boost" claim is context-dependent. It applies to businesses where retention is a major profit driver and cost-to-serve declines with tenure. We do not use it as a benchmark.
7. Reproducibility
Input
avg_purchase_value = $100, purchase_frequency = 4/year, customer_lifespan = 2.5 years, gross_margin = 30%, CAC = $150.
Expected output
annual_value = $400, monthly_value ≈ $33.33. clv (revenue) = $1,000 (= $400 × 2.5). margin_adjusted_clv = $300 (= $1,000 × 0.30). LTV:CAC = 2.0 (= $300 / $150). CAC payback ≈ 15 months (= $150 / ($33.33 × 0.30)).
8. Change log
- 2026-04-24methodology page first published. Subscription and transactional modes documented with limits.
Worked example
Run live against the same engine this site ships
(/engines/customer-lifetime-value-calculator.js).
The inputs and outputs below are recomputed on every build and
independently re-verified in CI — they are never hand-authored.
Input
- tool
- customer_lifetime_value
- avg_purchase_value
- 50
- purchase_frequency_per_year
- 4
- customer_lifespan_years
- 3
- acquisition_cost
- 100
- gross_margin_pct
- 60
Output
- clv
- 600
- annualValue
- 200
- monthlyValue
- 16.666666666666668
- marginAdjustedClv
- 360
- ltcRatio
- 3.6
- paybackMonths
- 10
Frequently asked questions
- What does the CLV Calculator estimate?
- It estimates the value of an average customer relationship with one transactional model: average purchase value × purchase frequency per year × customer lifespan in years gives revenue CLV, which is then margin-adjusted. There is no separate subscription (ARPU/churn) mode — lifespan is a direct input.
- What does it not do?
- It does not perform cohort-level CLV from raw purchase logs, and it does not implement Pareto/NBD or BG/NBD probabilistic CLV models.
- Can I verify it with a worked example?
- Yes. With avg_purchase_value = $100, purchase_frequency_per_year = 4, customer_lifespan_years = 2.5, gross_margin_pct = 30, acquisition_cost = $150: annual value = $400, revenue CLV = $1,000, margin-adjusted CLV = $300, LTV:CAC = 2.0, payback ≈ 15 months.