Revenue Churn Rate: The percentage of MRR lost to churn and contraction in a period. Also called MRR Churn Rate.
Formula
Revenue Churn Rate = (Churned MRR + Contraction MRR) / Beginning MRR × 100 Computable definition
The canonical formula in the GASP formula grammar. The MCP server compiles it to SQL over the datasets listed below.
(metric.churned_mrr + metric.contraction_mrr) / metric.mrr at period_start Unit: percent (the formula yields an unscaled ratio)
Breakdowns
by_segment: one row persegmentvalue
Notes: by_segment returns one row per customer segment, so churn concentrated in one segment is visible.
Data requirements
Grain: Per event, aggregate monthly · Frequency: Daily sync · Aggregation: aggregate (month) · Staged: no · Main source: Billing.
| Field | Dataset | Type |
|---|---|---|
event_date | revenue_event | date |
event_type | revenue_event | string |
mrr | subscription | decimal |
mrr_change | revenue_event | decimal |
snapshot_date | subscription | date |
subscription_status | subscription | string |
Example SQL (Postgres)
SELECT (CAST((((-(SELECT COALESCE(SUM(mrr_change), 0) FROM revenue_event WHERE event_date >= :period_start AND event_date <= :period_end AND event_type = 'churn'))) + ((-(SELECT COALESCE(SUM(mrr_change), 0) FROM revenue_event WHERE event_date >= :period_start AND event_date <= :period_end AND event_type = 'contraction')))) AS DOUBLE PRECISION) / NULLIF(((SELECT COALESCE(SUM(mrr), 0) FROM subscription WHERE snapshot_date = :period_start AND subscription_status = 'active')), 0)) AS revenue_churn_rate Access: recommended
sensitivity tier confidential,
access scope unscoped.
Guidance your policy engine enforces.
From an agent: with the GASP MCP server, call
lookup_metric({ "name": "Revenue Churn Rate" }) or generate_query({ "metric": "Revenue Churn Rate", "adapter": "<your adapter JSON>" }).
Benchmarks
- <2%: Good
- 2-5%: Average
- >5%: High (average annual churn ~4.9% for B2B SaaS)
What It Tells You
The revenue impact of churn. If revenue churn is lower than logo churn, you're losing smaller customers (often acceptable). If higher, you're losing larger customers (concerning).
Dual-Lens: Operating / Market Forms
Both governed forms are computed from the same Commercial Event Ledger, with Attribution Taxonomy Layer tags deciding which events each form counts.
Operating Form: Revenue Churn Rate (Churn-O)
MRR-weighted churn captures the economic impact of attrition. The formula is defined above: `(Churned MRR + Contraction MRR) / Beginning MRR × 100`.
- CEL Source:
- `Revenue_Event` where `event_type` ∈ (`churn`, `contraction`)
(Churned MRR + Contraction MRR) / Beginning MRR × 100 What it tells you: The economic damage of attrition, which is why it is the operating form. Losing a $50K customer hits harder than losing a $500 customer.
Market Form: Logo Churn Rate (Churn-M)
Customer-count churn treats every logo equally. The formula is defined in the Logo Churn Rate section above: `Customers lost / Customers at start × 100`.
- CEL Source:
- `Revenue_Event` where `event_type` = `churn` (full churn only. Contraction is not logo churn)
Customers lost / Customers at start × 100 What it tells you: How many customers leave, counted the simple way investors benchmark, which is why it is the market form.
Bridge
Revenue Churn and Logo Churn are not additive. One measures dollars, the other measures logos. The diagnostic compares the two signals: - **Churn-O high, Churn-M low →** Losing few but high-value customers (concentration risk) - **Churn-M high, Churn-O low →** Losing many small customers (long-tail churn) - Read the pattern by customer segment to see where retention work should go. ---
Related Metrics
Connected in the GASP relationship graph.
Upstream: what drives this
- Churned MRR component of Revenue Churn Rate (Core)
- Contraction MRR component of Revenue Churn Rate (Core)
- MRR component of Revenue Churn Rate (Core)
Downstream: what this drives
- Revenue Churn Rate component of LTV (Core)
- Revenue Churn Rate measures Customer (Entity)
- Revenue Churn Rate measures Subscription (Entity)