NPS — Net Promoter Score для аналитика

Коротко

NPS (Net Promoter Score) — метрика лояльности клиентов. Один вопрос: «С какой вероятностью от 0 до 10 вы порекомендуете нас другу?». Ответы делят на промоутеров (9–10), нейтралов (7–8) и критиков (0–6). NPS = % промоутеров − % критиков. Диапазон: от −100 до +100. Для аналитика NPS — одна из ключевых метрик продукта наряду с retention и LTV. На собеседованиях спрашивают формулу, интерпретацию и ограничения.

Формула

NPS = % промоутеров − % критиков
Оценка Группа Описание
9–10 Промоутеры Рекомендуют, лояльны, покупают ещё
7–8 Нейтралы Удовлетворены, но могут уйти к конкуренту
0–6 Критики Недовольны, могут навредить репутации

Нейтралы в формулу не входят — они не влияют на NPS напрямую.

Пример

Опрошено 100 клиентов:

  • 45 поставили 9–10 (промоутеры)
  • 30 поставили 7–8 (нейтралы)
  • 25 поставили 0–6 (критики)

NPS = 45% − 25% = +20

Расчёт в Python

import pandas as pd

df = pd.DataFrame({
    'user_id': range(1, 101),
    'score': [10, 9, 8, 7, 6, 5, 10, 9, 8, 3] * 10  # пример данных
})

# Классификация
df['group'] = pd.cut(
    df['score'],
    bins=[-1, 6, 8, 10],
    labels=['detractor', 'passive', 'promoter']
)

# Расчёт NPS
counts = df['group'].value_counts(normalize=True)
nps = (counts.get('promoter', 0) - counts.get('detractor', 0)) * 100

print(f'NPS: {nps:+.0f}')

# Детализация
print(df['group'].value_counts(normalize=True).round(3))

Расчёт в SQL

SELECT
    ROUND(
        (COUNT(CASE WHEN score >= 9 THEN 1 END)::NUMERIC / COUNT(*) * 100)
        - (COUNT(CASE WHEN score <= 6 THEN 1 END)::NUMERIC / COUNT(*) * 100)
    , 1) AS nps
FROM nps_surveys
WHERE survey_date >= '2025-01-01';

NPS по месяцам

SELECT
    DATE_TRUNC('month', survey_date) AS month,
    COUNT(*) AS responses,
    ROUND(
        (COUNT(CASE WHEN score >= 9 THEN 1 END)::NUMERIC / COUNT(*) * 100)
        - (COUNT(CASE WHEN score <= 6 THEN 1 END)::NUMERIC / COUNT(*) * 100)
    , 1) AS nps
FROM nps_surveys
GROUP BY DATE_TRUNC('month', survey_date)
ORDER BY month;

NPS по сегментам

SELECT
    u.segment,
    COUNT(*) AS responses,
    ROUND(
        (COUNT(CASE WHEN s.score >= 9 THEN 1 END)::NUMERIC / COUNT(*) * 100)
        - (COUNT(CASE WHEN s.score <= 6 THEN 1 END)::NUMERIC / COUNT(*) * 100)
    , 1) AS nps
FROM nps_surveys s
JOIN users u ON s.user_id = u.user_id
GROUP BY u.segment
ORDER BY nps DESC;

Интерпретация

NPS Оценка
70+ Отлично (Apple, Tesla уровень)
50–69 Очень хорошо
30–49 Хорошо
0–29 Нужно улучшать
< 0 Критиков больше, чем промоутеров

NPS сильно зависит от индустрии. +30 для банка — хороший результат. +30 для SaaS-продукта — средний. Сравнивайте с конкурентами своей отрасли, не с абсолютными цифрами.

NPS в динамике

Абсолютное значение NPS менее информативно, чем тренд:

import matplotlib.pyplot as plt

months = ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн']
nps_values = [25, 28, 22, 35, 40, 38]

plt.plot(months, nps_values, marker='o')
plt.axhline(y=30, color='green', linestyle='--', alpha=0.5, label='Цель')
plt.title('NPS по месяцам')
plt.ylabel('NPS')
plt.legend()
plt.show()

Рост NPS → продукт улучшается. Падение → что-то пошло не так (обновление, баг, изменение цен).

NPS как guardrail-метрика

В A/B-тестах NPS часто используется как guardrail-метрика: основная цель теста — увеличить конверсию, но NPS не должен упасть. Если конверсия выросла, а NPS упал — пользователи покупают, но недовольны (например, из-за агрессивных попапов).

Ограничения NPS

Не объясняет «почему». NPS показывает уровень лояльности, но не причину. Критик поставил 3 — из-за цены? UX? Поддержки? Нужен follow-up вопрос: «Что мы можем улучшить?»

Зависит от формулировки и контекста. NPS после покупки vs NPS в email через месяц — разные значения. Стандартизируйте момент и канал опроса.

Низкая response rate. Обычно отвечают 10–30% пользователей. Промоутеры и критики отвечают чаще нейтралов — возможен bias.

Не учитывает интенсивность. Оценка 0 и 6 — оба «критики», но 0 — совсем другой уровень недовольства.

Культурные различия. В Японии редко ставят 10 (скромность). В США 10 — норма. Сравнивать NPS между странами нужно осторожно.

NPS vs другие метрики лояльности

Метрика Что измеряет Вопрос
NPS Рекомендация «Порекомендуете ли?» (0–10)
CSAT Удовлетворённость «Насколько довольны?» (1–5)
CES Усилие «Насколько легко было?» (1–7)

CSAT — про конкретное взаимодействие (поддержка, покупка). NPS — про отношение к бренду в целом. CES — про удобство процесса.

Типичные ошибки

NPS на малой выборке. NPS из 20 ответов — статистически ненадёжен. Минимум 100–200 ответов для значимого результата.

Сравнение NPS разных каналов. NPS из email-опроса и in-app опроса — разные выборки и разные результаты. Сравнивайте like-for-like.

NPS как единственная метрика. NPS не заменяет retention, LTV, churn. Это одна из метрик, не единственная.

Вопросы с собеседований

-- Что такое NPS и как его считать? -- Net Promoter Score. Вопрос: «Порекомендуете от 0 до 10?». 9-10 — промоутеры, 7-8 — нейтралы, 0-6 — критики. NPS = % промоутеров − % критиков.

-- NPS = 0 — это плохо? -- Нейтрально. Промоутеров столько же, сколько критиков. Для большинства индустрий это средний результат. Критично — отрицательный NPS.

-- Как улучшить NPS? -- Анализировать обратную связь критиков, находить системные проблемы. Уменьшить % критиков обычно эффективнее, чем увеличить % промоутеров.

-- Почему нейтралы не входят в формулу? -- Нейтралы удовлетворены, но не лояльны. Они не рекомендуют (не промоутеры) и не вредят (не критики). NPS фокусируется на полярных группах.


Потренируйтесь решать задачи — откройте тренажёр с 1500+ вопросами для подготовки к собеседованиям аналитиков.

FAQ

Как часто измерять NPS?

Для SaaS: ежемесячно или ежеквартально. Для e-commerce: после каждой покупки (transactional NPS) + раз в квартал (relationship NPS). Слишком частые опросы раздражают пользователей.

NPS для B2B vs B2C?

B2B: опрашивайте decision-makers, не конечных пользователей. Один аккаунт = один голос. B2C: каждый пользователь — голос. B2B-бенчмарки обычно выше (30-50), B2C — ниже (20-40).

Как посчитать статистическую значимость изменения NPS?

NPS — разность долей. Используйте z-тест для разности пропорций или бутстрэп для доверительного интервала NPS.

Как тренироваться

NPS — одна из ключевых метрик продуктовой аналитики. Задачи на метрики — в тренажёре Карьерник. Больше вопросов — в разделе с примерами.