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.

Simple Formula:
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