Customer success metrics measure whether customers keep paying, grow and get value from your product after they sign. In SaaS, the core set is revenue retention (gross and net), logo churn, expansion and renewal rate, backed by the signals that predict them: customer health score, product adoption, time to value, sentiment (NPS and CSAT) and support load.

Most lists of customer success metrics stop at a definition. This one gives each metric a formula, what it tells you, a benchmark where a public source exists, and the system the data comes from. Then it works through one quarter of a fictional 200-account SaaS business with every number computed, so you can check your own calculations against it.

#MetricFormula (short)Data comes from
1Gross revenue retention (GRR)(Starting MRR - churn - contraction) ÷ starting MRRBilling
2Net revenue retention (NRR)(Starting MRR - churn - contraction + expansion) ÷ starting MRRBilling
3Logo churn rateAccounts lost ÷ accounts at startBilling
4Expansion rateExpansion MRR ÷ starting MRRBilling
5Renewal rateContracts renewed ÷ contracts up for renewalCRM, billing
6Customer health scoreWeighted score from usage, support, sentiment and billing signalsAll of the below
7Product adoptionActive accounts ÷ paying accountsProduct usage
8Time to value (TTV)Days from start to first value milestoneCRM, product usage
9Net Promoter Score (NPS)% promoters - % detractorsSurveys
10Customer satisfaction (CSAT)Ratings of 4 or 5 ÷ all ratingsSupport, surveys
11Support loadTickets ÷ accounts, plus first response timeSupport
12Customer lifetime value (LTV)ARPA × gross margin ÷ monthly revenue churn rateBilling, finance

Lagging and leading metrics

The first five metrics are lagging: they tell you what already happened to revenue. By the time a customer shows up in churn, the decision was made weeks or months earlier. Metrics 6 to 11 are leading: they move before revenue does, which is what makes them useful to a customer success team. A falling health score, an account where nobody has logged in for three weeks or a run of angry tickets is something you can still act on.

A good customer success scorecard has both. The lagging metrics keep you honest about outcomes. The leading metrics tell you where to spend this week.

Where customer success data lives

Most teams struggle less with formulas than with data that is spread across five tools. Before picking metrics, check which system holds each input and whether you can join them on one account ID.

SourceTypical toolsWhat it holdsFeeds
BillingStripe, Chargebee, RecurlySubscriptions, plan changes, cancellations, MRRGRR, NRR, logo churn, expansion, LTV
CRMHubSpot, SalesforceAccount owner, segment, contract dates, renewal opportunitiesRenewal rate, TTV start date, segmentation
SupportZendesk, Intercom, FreshdeskTickets, response times, satisfaction ratingsSupport load, CSAT
Product usageMixpanel, Segment, Pendo, your app databaseLogins, events, feature use per accountAdoption, TTV, health score
SurveysNPS and in-app survey toolsScores and commentsNPS

Revenue metrics should come from billing, not the CRM. The CRM records what sales closed, and downgrades and cancellations often never make it back there. Usage data needs mapping from users to accounts, which is usually the hardest join in the whole setup.

Revenue retention metrics

1. Gross revenue retention (GRR)

GRR = (starting MRR - churned MRR - contraction MRR) ÷ starting MRR

GRR is the share of recurring revenue you kept from the customers you had at the start of the period, ignoring any growth from them. It cannot go above 100%. It answers the most basic customer success question: how much of the base are we losing?

Benchmark. SaaS Capital's 2025 retention survey of more than 1,000 private B2B SaaS companies put median annual GRR at 91%. Companies with an annual contract value above $250,000 had a median of 95%. Their figure is annual (December MRR from last December's customers), so compare it with a 12-month GRR, not a quarterly one.

Data: billing. Starting and ending MRR per account, with new accounts left out.

2. Net revenue retention (NRR)

NRR = (starting MRR - churned MRR - contraction MRR + expansion MRR) ÷ starting MRR

NRR adds expansion from the same customers back in, so it can go above 100%. Above 100% means the existing base grows on its own, before a single new customer is signed. NRR is also called net dollar retention (NDR). New customers never count, in GRR or NRR.

Benchmark. The same SaaS Capital survey put median annual NRR at 101% across private B2B SaaS companies. More on the calculation in how to calculate net revenue retention.

Data: billing.

Read GRR and NRR together. A company with 85% GRR and 110% NRR is losing a lot of customers and making up for it with big expansions from the rest, which is a very different business from one with 97% GRR and 101% NRR.

3. Logo churn rate

Logo churn rate = accounts that cancelled during the period ÷ accounts at the start of the period

Logo churn counts customers, not money. When logo churn is much higher than revenue churn, you are losing mostly small accounts. When it is lower, a few large accounts are carrying the revenue loss, and those deserve a closer look. Logo retention is 100% minus logo churn.

Data: billing. Count an account as churned when its MRR goes to zero, not when its first subscription ends.

4. Expansion rate

Expansion rate = expansion MRR ÷ starting MRR

Expansion MRR is the increase from existing customers who upgrade, add seats or buy add-ons. The expansion rate is the gap between GRR and NRR, seen from the other side. Track the share of accounts that expanded as well, because one large upsell can hide a quarter where nobody else grew. For the components of MRR, see how to calculate MRR.

Data: billing, with CRM opportunities if you want to credit expansion to an owner.

5. Renewal rate

Renewal rate = contracts renewed ÷ contracts up for renewal in the period

For annual and multi-year contracts, renewal is the moment churn actually happens. The renewal rate shows how the contracts that came due performed, which logo churn blurs together with monthly cancellations. Track it by count and by value.

Data: CRM renewal opportunities or contract end dates, checked against billing.

Account health and value metrics

6. Customer health score

A customer health score combines signals into one number per account, usually on a 0 to 100 scale or as red, amber and green bands:

Health score = Σ (weight × normalised signal)

Typical signals are product usage (active users against seats bought), support (open tickets, escalations), sentiment (NPS or CSAT), billing (failed payments, downgrades) and relationship (last meeting, champion still at the company). The weights should come from your own data: check which signals were different for the accounts that churned last year. A health score that does not separate the accounts that left from the ones that stayed needs new weights. The full method is in how to score the health of your customers.

Data: all of the sources above, joined per account.

7. Product adoption

Product adoption = accounts active in the period ÷ paying accounts

Define "active" with the action that delivers value in your product, not a login. For a reporting tool, it might be "at least one report viewed in the last 7 days". Seat utilisation (active users ÷ seats paid for) is a useful second view, because a customer paying for 50 seats with 12 users is a contraction risk at renewal.

Data: product analytics or your application database, mapped to accounts.

8. Time to value (TTV)

TTV = days from contract start (or signup) to the first value milestone

The milestone is specific to your product: first data synced, first invoice sent, first dashboard shared with the team. Report the median per cohort of new accounts and the share that reached the milestone within 30 days. Long or stalled onboarding is one of the clearest early signs of churn in the first year.

Data: contract start from CRM or billing, milestone from product usage.

9. Net Promoter Score (NPS)

NPS = % promoters (score 9 or 10) - % detractors (score 0 to 6)

NPS asks how likely a customer is to recommend you, on a 0 to 10 scale, and ranges from -100 to +100. It is a relationship metric, best collected on a schedule (for example twice a year) rather than after a support conversation. Scores differ a lot between industries and survey methods, so compare yourself with your own trend and read the comments from detractors. No public SaaS benchmark is consistent enough to recommend here.

Data: your survey tool, joined to accounts.

10. Customer satisfaction (CSAT)

CSAT = ratings of 4 or 5 ÷ all ratings, on a 1 to 5 scale

CSAT measures satisfaction with one interaction, usually a support conversation or an onboarding session. It is good at spotting a weak team, process or topic and poor at predicting churn on its own, because the customers most likely to leave are often the ones who stopped writing in.

Data: your support tool or a post-interaction survey.

11. Support load

Tickets per account = tickets in the period ÷ average number of accounts

Track it with first response time and time to resolution. A rising ticket count per account means the product, the documentation or onboarding is creating work. A healthy-looking account that suddenly opens many tickets is a risk, and so is a large account that has gone completely quiet. Split support load by health band and by plan to see where the effort goes.

Data: support tool.

12. Customer lifetime value (LTV)

LTV = ARPA × gross margin ÷ monthly gross revenue churn rate

LTV estimates the gross profit a typical account brings in before it leaves, where ARPA is average MRR per account. It is sensitive to the churn rate (halve churn and LTV doubles), so treat it as a direction rather than a precise number, and compare it with customer acquisition cost for the same segment. See how to calculate customer acquisition cost for the other half.

Data: billing for ARPA and churn, finance for gross margin.

Worked example: one quarter of a 200-account SaaS book

A B2B SaaS company has 200 paying accounts on 1 July 2026, with €400,000 of MRR between them (an average of €2,000 per account per month). Here is what happened in the third quarter:

Movement in Q3AccountsMRR change
Starting book, 1 July200€400,000
Churned (MRR went to zero)7-€7,200
Contracted (downgrade or seats)14-€4,800
Expanded (upgrade, seats, add-on)31+€16,000
Unchanged148€0
New accounts signed11+€19,800
Ending book, 30 September204€423,800

The rows add up: 7 + 14 + 31 + 148 = 200 starting accounts, 200 - 7 + 11 = 204 ending accounts, and €400,000 - €7,200 - €4,800 + €16,000 + €19,800 = €423,800.

The retention metrics use only the 200 starting accounts:

MetricCalculationQ3 result
Gross revenue retention(€400,000 - €7,200 - €4,800) ÷ €400,000 = €388,000 ÷ €400,00097.0%
Net revenue retention(€388,000 + €16,000) ÷ €400,000 = €404,000 ÷ €400,000101.0%
Gross revenue churn(€7,200 + €4,800) ÷ €400,0003.0%
Logo churn7 ÷ 2003.5%
Expansion rate€16,000 ÷ €400,000 (31 of 200 accounts expanded)4.0%
Gross and net revenue retention for the worked example's 200 accounts in one quarter, with the value axis starting at 340,000 euros. Starting MRR on 1 July is 400,000 euros. Gross revenue retention keeps 388,000 after 7,200 of churn and 4,800 of contraction, which is 97.0 percent. Net revenue retention adds 16,000 of expansion to the same 388,000, giving 404,000, which is 101.0 percent. New customers, 19,800 of MRR, count in neither.

Three things stand out:

  • Logo churn (3.5%) is higher than revenue churn from cancellations (€7,200 is 1.8% of MRR). The 7 accounts that left paid about €1,030 a month on average, half the book average. Small accounts are churning.
  • The €19,800 from 11 new accounts is not in NRR. Including it would give 106%, which says more about sales than about customer success.
  • Annual comparison. If every quarter looked like this one, the year would end at roughly 0.97⁴ ≈ 88.5% GRR and 1.01⁴ ≈ 104% NRR. That is below SaaS Capital's 91% median for GRR and above its 101% median for NRR: expansion is covering a churn problem in the small accounts.

The leading metrics for the same quarter:

MetricInputsQ3 result
Renewal rate44 of 48 annual contracts due in Q3 renewed91.7%
Product adoption172 of 204 accounts active in the last week of September84%
Time to valueMedian days to first value milestone, 11 new accounts19 days (9 of 11 within 30 days)
NPS140 responses: 70 promoters, 45 passives, 25 detractors50.0% - 17.9% = 32
CSAT468 of 520 rated support conversations scored 4 or 590.0%
Support load612 tickets ÷ 202 average accounts3.0 per account
LTV€2,000 ARPA × 80% gross margin ÷ 1.0% monthly revenue churn€160,000

The 4 contracts that did not renew are 4 of the 7 churned accounts. The other 3 were monthly plans that cancelled. The 1.0% monthly revenue churn in the LTV line is the quarter's 3.0% gross revenue churn divided by 3, and the 80% gross margin is an assumption for the example.

The health score is the check on whether the leading metrics work. On 1 July, the accounts were in three bands. Here is how many in each band churned during the quarter:

Health band on 1 JulyAccountsChurned in Q3Churn rate
Healthy15010.7%
At risk3425.9%
Critical16425.0%
Total20073.5%

A score where critical accounts churn at more than 30 times the rate of healthy ones is doing its job. If the three rates were close together, the weights would need another look.

Calculating retention in SQL

With a customer_mrr table that has one row per paying account per month (customer_id, month, mrr, where month holds the account's MRR at the end of that month), this query returns the retention metrics above for Q3. It runs on BigQuery, Snowflake, Postgres, Redshift and DuckDB:

1with
2    start_q as (
3        select
4            customer_id
5          , mrr
6        from
7            customer_mrr
8        where
9            month = date '2026-06-01'
10    )
11  , end_q as (
12        select
13            customer_id
14          , mrr
15        from
16            customer_mrr
17        where
18            month = date '2026-09-01'
19    )
20  , cohort as (
21        select
22            s.customer_id
23          , s.mrr as start_mrr
24          , coalesce(e.mrr, 0) as end_mrr
25        from
26            start_q s
27            left join end_q e on e.customer_id = s.customer_id
28    )
29select
30    count(*) as starting_accounts
31  , sum(
32        case
33            when end_mrr = 0 then 1
34            else 0
35        end
36    ) as churned_accounts
37  , sum(start_mrr) as starting_mrr
38  , round(
39        100.0 * sum(least(end_mrr, start_mrr)) / sum(start_mrr)
40      , 1
41    ) as grr_pct
42  , round(100.0 * sum(end_mrr) / sum(start_mrr), 1) as nrr_pct
43  , round(
44        100.0 * sum(
45            case
46                when end_mrr = 0 then 1
47                else 0
48            end
49        ) / count(*)
50      , 1
51    ) as logo_churn_pct
52from
53    cohort

The left join from the starting accounts is what keeps new customers out. least(end_mrr, start_mrr) caps every account at its starting MRR, which removes expansion for GRR. On data matching the example, the query returns 200, 7, 400,000, 97.0, 101.0 and 3.5. To build customer_mrr from billing data, see how to calculate MRR with Stripe using SQL.

Common mistakes with customer success metrics

  1. Counting new customers in NRR. NRR measures the starting cohort only. Adding new business makes it a growth metric.
  2. Comparing a quarterly number with an annual benchmark. 97% quarterly GRR and 91% annual GRR are not the same performance.
  3. Taking revenue metrics from the CRM. Cancellations and downgrades are recorded in billing. A CRM that is not kept up to date makes retention look better than it is.
  4. Defining "active" as a login. Pick the action that delivers value, or adoption will look high right up to the renewal.
  5. A health score nobody has tested. Check every quarter whether low-scoring accounts actually churned more.
  6. Reporting averages only. Split every metric by segment, plan and owner. A 101% NRR can be 115% in enterprise and 88% in small business.
  7. Too many metrics. Pick the five or six that drive decisions this quarter and review them on a fixed schedule.

Tracking customer success metrics with Weld

These metrics need data from billing, CRM, support and product usage in one place. Weld syncs those sources into your data warehouse: Stripe, Chargebee and Recurly for billing, HubSpot and Salesforce for CRM, Zendesk, Intercom and Freshdesk for support, and Mixpanel, Segment and Pendo for product usage. You write the retention and health score models in SQL in Weld, and reverse ETL sends the results back to HubSpot, Salesforce or Vitally, so customer success managers see the health score on the account record they already work from.

Sign up to Weld

Ready to start transforming your data into insights? Get started with Weld for free today.

FAQ