Lifecycle Analysis

Last updated:

|Edit this page

Understanding how our revenue moves through different lifecycle stages helps us identify the specific drivers behind our growth, not just the net change in revenue. We use lifecycle analysis to see how much growth comes from new customers, expansions, contractions, and churn. We analyze this at both total revenue and per product levels to understand each component of our business.

Customer Lifecycle Stages

new

Customers in their first month of paying us.

reactivated

Customers who previously churned but have returned with monthly spend > 0. This signals customers who may be using our services on and off.

flat

Existing customers whose monthly spend remained exactly the same as the previous month. This represents our stable, predictable revenue base.

growing

Existing customers whose spend increased compared to the previous month. This shows how successful we are with our upsell, cross sell, and product expansion efforts.

shrinking

Existing customers whose monthly spend decreased but didn't reach zero. This could be due to usage based fluctuations but also an early warning indicator of customer dissatisfaction or competitive pressure. We pay close attention to this amount and do deeper analysis to understand the reasons behind.

How we calculate lifecycle components

New revenue: total monthly revenue from customers in their first month

SQL
SUM(CASE WHEN growth_lifecycle_stage = 'NEW' THEN mrr ELSE 0 END)

Reactivated revenue: total monthly revenue from customers who returned after churning

SQL
SUM(CASE WHEN growth_lifecycle_stage = 'REACTIVATED' THEN mrr ELSE 0 END)

Retained revenue: baseline revenue that continuing customers maintained

SQL
SUM(CASE
WHEN growth_lifecycle_stage = 'FLAT' THEN mrr
WHEN growth_lifecycle_stage IN ('GROWING', 'SHRINKING') THEN prev_month_mrr
ELSE 0 END)

Expansion revenue: Additional revenue gained from existing customers through increased usage

SQL
SUM(CASE WHEN growth_lifecycle_stage = 'GROWING' THEN mrr - prev_month_mrr ELSE 0 END)

Contraction revenue: Revenue lost from existing customers due to reduced usage (negative value)

SQL
SUM(CASE WHEN growth_lifecycle_stage = 'SHRINKING' THEN mrr - prev_month_mrr ELSE 0 END)

Churned revenue: Revenue lost from customers who went to $0 (negative value)

SQL
-SUM(prev_mrr) WHERE prev_mrr > 0 AND curr_mrr = 0

Rate calculations

Baseline revenue

This the total monthly revenue at the end of previous month which is the denominator for our rate calculations:

Key rates

New rate: How much new revenue we acquired relative to our at baseline revenue

SQL
new_rate = (new_revenue / baseline_revenue) × 100

Example: 10% new rate means we acquired new revenue equal to 10% of our at baseline revenue

Expansion rate: Growth from existing customers as a percentage of base

SQL
expansion_rate = (expansion_revenue / baseline_revenue) × 100

Example: 5% expansion rate means existing customers increased their spend by 5% on average

Contraction rate: Revenue decrease from existing customers due to lower usage

SQL
contraction_rate = (contraction_revenue / baseline_revenue) × 100

Example: -3% contraction rate means we lost 3% of revenue from reduced customer usage

Churn rate: Percentage of at baseline revenue that was completely lost

SQL
churn_rate = (churned_revenue / baseline_revenue) × 100

Example: 2% churn rate means 2% of our baseline revenue base churned completely

Notes on data

  • Analysis covers last 18 months of historical data plus 2 months forward
  • Churned customers are identified by transition from revenue > 0 to revenue = 0
  • Reactivation requires at least one month gap with revenue = 0

Questions? Ask Max AI.

It's easier than reading through 632 pages of documentation

Community questions

Was this page useful?