Как построить 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 × FirmographicWeights — 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:
- Goal (predict churn, drive renewals)
- Components (usage, growth, sentiment)
- Scoring method (weighted, ML)
- Validation (predictive power)
- Actions (CS playbooks)
Связанные темы
- Customer health score
- Churn простыми словами
- SQL для subscription бизнеса
- NPS простыми словами
- Lead scoring для аналитика
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+ вопросами для собесов.