Как построить customer health score

Карьерник — квиз-тренажёр в Telegram с 1500+ вопросами для собесов аналитика. SQL, Python, A/B, метрики. Бесплатно.

Зачем это знать

В SaaS / subscription customer health score — proactive tool. Customer Success (CS) teams используют выявить at-risk accounts до churn. Аналитики строят эти scores.

На собесах в B2B SaaS (HubSpot, Amplitude, analogues в RF — Amplitude internal, Kontur) — часто встречается.

Что такое health score

Score 0-100 (или другой scale) предсказывающий continued product usage / renewal.

  • Green (70-100): healthy, low churn risk
  • Yellow (40-69): at risk, needs attention
  • Red (0-39): high risk, immediate action

Goal: prevent churn, expand accounts.

Компоненты

1. Usage

  • Frequency logging
  • Features used breadth
  • Active users в account
  • Session depth

2. Outcomes

  • Did achieve value (ROI)?
  • Hit milestones?
  • Use core workflow?

3. Sentiment

  • NPS / CSAT scores
  • Support ticket volume
  • Tone in communications

4. Growth

  • Seats expanding?
  • Trending up или down?
  • Budget stable?

5. Firmographic

  • Company size
  • Industry (some churn more)
  • Years as customer

Scoring

Simple weighted

Each component → score 0-100. Weighted average.

Health = 0.30 × Usage + 0.25 × Outcomes + 0.15 × Sentiment + 0.20 × Growth + 0.10 × Firmographic

Weights — team decision, based on predicting churn.

Rules-based

«If logins < 5 в month → -20 points».

Explicit rules. Transparent.

ML-based

Historical features → churn label. Train logistic regression / xgboost.

Produces probability. Continuous score.

More accurate, но less interpretable.

В SQL

WITH customer_metrics AS (
    SELECT
        customer_id,
        -- Usage
        COUNT(DISTINCT login_date) AS days_active_30d,
        COUNT(DISTINCT feature) AS features_used_30d,
        
        -- Growth
        MAX(CASE WHEN month = current_month THEN seat_count END) AS current_seats,
        MAX(CASE WHEN month = current_month - 3 THEN seat_count END) AS seats_3_months_ago,
        
        -- Sentiment
        AVG(nps_score) AS avg_nps,
        COUNT(DISTINCT ticket_id) AS support_tickets
    FROM...
    GROUP BY customer_id
),
scored AS (
    SELECT
        customer_id,
        
        -- Score каждого component (0-100)
        CASE
            WHEN days_active_30d >= 20 THEN 100
            WHEN days_active_30d >= 10 THEN 70
            WHEN days_active_30d >= 5 THEN 40
            ELSE 10
        END AS usage_score,
        
        CASE
            WHEN current_seats > seats_3_months_ago THEN 100
            WHEN current_seats = seats_3_months_ago THEN 70
            ELSE 30
        END AS growth_score,
        
        CASE
            WHEN avg_nps >= 8 THEN 100
            WHEN avg_nps >= 6 THEN 60
            ELSE 20
        END AS sentiment_score
    FROM customer_metrics
)
SELECT
    customer_id,
    0.4 * usage_score + 0.3 * growth_score + 0.3 * sentiment_score AS health_score
FROM scored;

Validation

Predictive power

Historical: did red scored customers actually churn?

Ideally: red → 30% churn, green → 5%. Clear separation.

Update based на results

Not perfect first time. Iterate weights.

Actions

Red scores

  • CS manager immediate call
  • Executive escalation если large account
  • Custom retention plan

Yellow

  • Quarterly check-in
  • Offer training
  • Feature adoption push

Green

  • Light-touch
  • Focus expansion (upsell, cross-sell)
  • Reference customer opportunity

Dashboard

Typical customer health dashboard:

  • Overall distribution (green / yellow / red)
  • Movers (accounts changed category)
  • Top-risk accounts
  • Drivers analysis
  • Trends

Used в CS weekly meetings.

Трудности

1. Data availability

Multiple sources: product analytics, CRM, support, payments.

Integration нужно.

2. Garbage in

Bad usage tracking → bad score.

Invest в data quality first.

3. Over-engineering

100-factor score — черный ящик.

Simpler often ok. 5-10 factors.

4. Static definitions

Customer health drifts with product changes. Recalibrate quarterly.

Пример factors

Для SaaS:

  • Logins last 30 days
  • Features used (breadth)
  • Seats vs license cap
  • Payment method up-to-date?
  • NPS score (recent)
  • Support ticket volume
  • Executive sponsorship (from CRM notes)
  • Monthly workflows completed
  • Integration usage (have they connected)?
  • Usage trend (up/flat/down)

Pick 5-10 relevant.

Example в продукте Карьерник

Hypothetical:

  • Days active (past 30)
  • Questions answered total
  • Premium user?
  • Streak current?
  • Last login

Simple score predicting churn.

Integration

CRM

Score syncs к Salesforce / HubSpot → CS sees в customer record.

BI dashboard

Team-wide visibility.

Automated alerts

Score drops below threshold → Slack alert к CS.

Email automation

Yellow → automatic re-engagement campaign.

Limitations

Correlation vs causation

Score predicts churn, но не guarantee actions help. A/B intervention efficacy.

Small accounts noise

Statistical — big accounts scored more reliably.

Gaming

If team knows score — may «lock in» metrics без value.

На собесе

«Build health score для [SaaS product]?»

Walk through:

  1. Goal (predict churn, drive renewals)
  2. Components (usage, growth, sentiment)
  3. Scoring method (weighted, ML)
  4. Validation (predictive power)
  5. Actions (CS playbooks)

Связанные темы

FAQ

ML worth it?

Big accounts / scale — yes. Small team simpler works.

How often update?

Daily для dynamic factors. Static — monthly.

Single number или dashboard?

Both. Number для ranking. Dashboard для dive.


Тренируйте — откройте тренажёр с 1500+ вопросами для собесов.