Customer Lifetime Value (LTV)
Total revenue expected from a customer throughout their entire relationship with your business
Overview
Customer Lifetime Value (LTV) represents the total revenue a business can expect from a single customer throughout their entire relationship. This fundamental metric helps businesses understand how much they can afford to spend on customer acquisition and retention.
LTV is crucial for making informed decisions about marketing spend, pricing strategies, and customer success investments. It provides the foundation for calculating important ratios like LTV:CAC and guides long-term business strategy.
LTV = Average Revenue Per User × Customer Lifespan
Simple Method
LTV = ARPU × Average Customer Lifespan
Best for: Early-stage companies with limited data
Traditional Method
LTV = (ARPU × Gross Margin %) / Churn Rate
Best for: Established SaaS businesses
Predictive Method
Uses historical data and machine learning
Best for: Mature companies with rich datasets
Key Insight
LTV should always be calculated using gross margin-adjusted revenue to reflect true profitability and account for the cost of delivering your product or service.
Why It Matters
- Acquisition Investment: Determines how much to spend on customer acquisition
- Customer Segmentation: Identifies most valuable customer segments
- Pricing Strategy: Informs pricing and packaging decisions
- Resource Allocation: Guides investment in customer success and retention
- Business Valuation: Critical component of company valuation models
- Product Development: Prioritizes features based on customer value
How to Measure It
LTV can be calculated using historical data, predictive models, or simplified formulas depending on data availability and business maturity.
Historical LTV Calculation
-- Calculate LTV using historical customer data
WITH customer_revenue AS (
SELECT
customer_id,
DATE_TRUNC('month', created_date) as acquisition_month,
acquisition_channel,
customer_segment,
SUM(revenue_amount) as total_revenue,
SUM(gross_profit) as total_gross_profit,
MAX(last_activity_date) as last_active,
EXTRACT(days FROM AGE(MAX(last_activity_date), MIN(created_date))) as customer_lifespan_days
FROM customer_transactions
WHERE created_date >= '2022-01-01'
GROUP BY 1, 2, 3, 4
),
ltv_analysis AS (
SELECT
acquisition_month,
acquisition_channel,
customer_segment,
COUNT(*) as customers,
AVG(total_revenue) as avg_ltv_revenue,
AVG(total_gross_profit) as avg_ltv_gross_profit,
AVG(customer_lifespan_days) as avg_lifespan_days,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total_gross_profit) as median_ltv
FROM customer_revenue
WHERE customer_lifespan_days >= 90 -- Only include customers with sufficient history
GROUP BY 1, 2, 3
)
SELECT
acquisition_month,
acquisition_channel,
customer_segment,
customers,
ROUND(avg_ltv_gross_profit, 2) as avg_ltv,
ROUND(median_ltv, 2) as median_ltv,
ROUND(avg_lifespan_days / 30.0, 1) as avg_lifespan_months
FROM ltv_analysis
ORDER BY avg_ltv DESC;
Predictive LTV Model
-- Calculate LTV using churn-based prediction
WITH customer_metrics AS (
SELECT
customer_id,
acquisition_channel,
plan_type,
monthly_revenue,
gross_margin_percentage,
months_active,
CASE WHEN status = 'churned' THEN 1 ELSE 0 END as is_churned
FROM customer_summary
WHERE months_active >= 3
),
churn_rates AS (
SELECT
acquisition_channel,
plan_type,
AVG(monthly_revenue) as avg_monthly_revenue,
AVG(gross_margin_percentage) as avg_gross_margin,
SUM(is_churned)::FLOAT / COUNT(*) as monthly_churn_rate
FROM customer_metrics
GROUP BY 1, 2
),
ltv_prediction AS (
SELECT
acquisition_channel,
plan_type,
avg_monthly_revenue,
avg_gross_margin,
monthly_churn_rate,
-- LTV = (Monthly Revenue × Gross Margin %) / Monthly Churn Rate
(avg_monthly_revenue * avg_gross_margin / 100) / NULLIF(monthly_churn_rate, 0) as predicted_ltv
FROM churn_rates
)
SELECT
acquisition_channel,
plan_type,
ROUND(avg_monthly_revenue, 2) as avg_mrr,
ROUND(avg_gross_margin, 1) as gross_margin_pct,
ROUND(monthly_churn_rate * 100, 2) as churn_rate_pct,
ROUND(predicted_ltv, 2) as predicted_ltv,
ROUND(1 / NULLIF(monthly_churn_rate, 0), 1) as predicted_lifespan_months
FROM ltv_prediction
ORDER BY predicted_ltv DESC;
Calculation Guidelines
Use gross margin-adjusted revenue for accuracy. For cohort-based LTV, wait until cohorts have sufficient maturity (12+ months) before drawing conclusions.
Best Practices
1. Choose the Right Method
- Historical LTV: For mature businesses with 2+ years of data
- Predictive LTV: For stable churn rates and sufficient cohorts
- Simple LTV: For early-stage companies or new segments
- Cohort LTV: For understanding trends over time
2. Segmentation Strategies
- By acquisition channel (organic, paid, referral)
- By customer size (SMB, mid-market, enterprise)
- By plan type or pricing tier
- By geographic region or market
3. Revenue Components
- Include all recurring revenue streams
- Account for expansion revenue potential
- Use gross margin-adjusted figures
- Consider one-time revenue appropriately
4. Time Considerations
- Update LTV calculations regularly (quarterly)
- Account for seasonality in churn patterns
- Use appropriate cohort maturity periods
- Consider discounting future cash flows
5. Optimization Tactics
- Reduce churn through better onboarding
- Increase ARPU through feature adoption
- Drive expansion revenue with upsells
- Focus acquisition on high-LTV segments