NPS: что это, как посчитать индекс и где он вводит в заблуждение
NPS (Net Promoter Score) — индекс готовности рекомендовать продукт: доля промоутеров минус доля критиков. Формула, пример расчёта, погрешность, SQL-запрос, сравнение по сегментам и частые ошибки.
Содержание статьи
На квартальной встрече показывают слайд: NPS вырос с 12 до 18, рядом зелёная стрелка. Вопросов никто не задаёт — рост есть, число простое. А за ним 200 ответов, и погрешность каждого из двух чисел — около 11 пунктов в обе стороны. Шесть пунктов роста при такой точности ничего не доказывают. Ниже — что такое NPS, как его считать, сколько ответов ему нужно и почему одинаковый индекс может описывать совсем разных клиентов.
Коротко
- NPS считают по одному вопросу: «Насколько вероятно, что вы порекомендуете нас другу или коллеге?» — по шкале от 0 до 10.
- Оценки 9–10 — промоутеры, 7–8 — нейтралы, 0–6 — критики.
- NPS = доля промоутеров − доля критиков, в процентных пунктах. Диапазон — от −100 до +100.
- Индекс сжимает распределение в одно число: одинаковый NPS бывает у очень разных аудиторий.
- У NPS есть погрешность. На 200 ответах она порядка ±11 пунктов, поэтому небольшие колебания обычно шум.
- NPS по сегментам нельзя усреднять — пересчитывайте его из исходных ответов.
Что такое NPS простыми словами
NPS (Net Promoter Score, индекс потребительской лояльности) — это разница между долей клиентов, которые готовы рекомендовать продукт, и долей тех, кто скорее отговорит от него. Считается по ответам на один вопрос и выражается числом от −100 до +100.
Вопрос звучит примерно так: «Насколько вероятно, что вы порекомендуете [продукт] другу или коллеге?» Шкала — от 0 («точно нет») до 10 («точно да»). Обычно следом идёт открытый вопрос «Почему вы поставили такую оценку?», и для продуктовой команды он часто полезнее самого числа.
Метрику предложил Фред Райхельд из Bain & Company в статье «The One Number You Need to Grow» в Harvard Business Review в 2003 году. Насколько универсально NPS предсказывает рост, исследователи потом не раз спорили, но как простой регулярный замер отношения клиентов он прижился почти везде.
Одна оговорка: NPS измеряет заявленное намерение, а не реальные рекомендации. Человек, поставивший 10, может никому ничего не сказать. Поэтому NPS — сигнал об отношении к продукту, а не метрика роста через рекомендации.
Как посчитать NPS: формула и пример
Каждый ответ попадает в одну из трёх групп. Промоутеры (9–10) — самые довольные клиенты, на них держится сарафанное радио. Нейтралы (7–8) в целом довольны, но без привязанности: их проще всего переманить. Критики (0–6) недовольны и могут отговаривать других.
Дальше считаете доли групп от всех ответов и вычитаете долю критиков из доли промоутеров. Нейтралы в числитель не входят, но входят в знаменатель: они «разбавляют» индекс.
Пример. За квартал пришло 200 ответов. По баллам от 0 до 10 они распределились так: 4, 2, 3, 5, 6, 14, 18, 26, 34, 40, 48. Складываем группы: критиков 4 + 2 + 3 + 5 + 6 + 14 + 18 = 52, нейтралов 26 + 34 = 60, промоутеров 40 + 48 = 88.
Доля промоутеров — 88 / 200 = 44%, критиков — 52 / 200 = 26%. NPS = 44 − 26 = 18. Записывают его без знака процента: «NPS 18», потому что это разность долей, а не доля.
NPS = % промоутеров (9–10) − % критиков (0–6)Нейтралы (7–8) учитываются только в общем числе ответов. Минимум −100 (все критики), максимум +100 (все промоутеры).
| Оценки | Группа | Ответов | Доля |
|---|---|---|---|
| 9–10 | промоутеры | 88 | 44% |
| 7–8 | нейтралы | 60 | 30% |
| 0–6 | критики | 52 | 26% |
| Всего | 200 | 100% | |
| NPS | 44 − 26 = 18 |
Почему одинаковый NPS может означать разное
NPS выбрасывает большую часть информации: из трёх долей остаётся одна разность. Поэтому за одним и тем же числом могут стоять аудитории, с которыми нужно работать совершенно по-разному.
Сравните три выборки. В A 40% промоутеров, 50% нейтралов и 10% критиков. В B 60% промоутеров, 10% нейтралов и 30% критиков. В C 30% промоутеров, 70% нейтралов и ни одного критика. У всех трёх NPS = 30.
A — спокойная аудитория без явных проблем. B — поляризованная: продукт одних очень радует, а почти треть недовольна, и её причины стоит искать в открытых ответах. C — аудитория без восторга и без злости, которую легко переманить. Одно число этих различий не покажет, поэтому рядом с NPS всегда полезно публиковать и три доли.
Сконструированный пример. NPS = промоутеры − критики: 40 − 10, 60 − 30 и 30 − 0.
Сколько нужно ответов: погрешность NPS
NPS считают по выборке, значит, он колеблется от опроса к опросу, даже если отношение клиентов не менялось. Оценить разброс помогает простой приём: каждый ответ можно записать как +1 (промоутер), 0 (нейтрал) или −1 (критик). Тогда NPS — это среднее этих чисел, умноженное на 100, а для среднего погрешность считается стандартно.
Дисперсия такого значения равна p + d − (p − d)², где p — доля промоутеров, d — доля критиков. В примере: 0,44 + 0,26 − 0,18² = 0,6676. Делим на 200 ответов и берём корень — получаем стандартную ошибку 0,0578, или 5,8 пункта NPS. Умножаем на 1,96 и получаем 95%-ю погрешность ±11,3.
Значит, NPS 18 на этих данных — это интервал примерно от 7 до 29. Проверка bootstrap даёт то же самое: если 20 000 раз заново вытянуть 200 ответов из исходных с возвращением, 95% пересчитанных NPS лежат между 6,5 и 29.
Если прошлый квартал тоже собран на 200 ответах с похожим разбросом, погрешность разницы между кварталами — около ±16 пунктов. Рост с 12 до 18 в неё укладывается целиком.
Из той же формулы видно, сколько ответов нужно. При таком распределении, как в примере, для точности ±10 пунктов хватит примерно 260 ответов, для ±5 — около 1030. В худшем случае, когда половина ответов — промоутеры, а половина — критики, для ±5 нужно около 1540.
± 1,96 × 100 × √((p + d − (p − d)²) / n)p — доля промоутеров, d — доля критиков, n — число ответов. Формула опирается на нормальное приближение; при малом n надёжнее bootstrap.
Кто отвечает и когда: главные смещения NPS
Погрешность описывает только случайный разброс. Систематические ошибки обычно больше, и их не уменьшить объёмом выборки.
Первая — кто отвечает. На опросы охотнее откликаются самые вовлечённые и самые раздражённые клиенты, а равнодушное большинство молчит. Проверяйте долю ответивших по сегментам и сравнивайте состав ответивших со всей базой: по тарифу, стажу, каналу привлечения.
Вторая — когда задан вопрос. Сразу после онбординга человек ещё не видел ценности продукта или, наоборот, на подъёме от первого успеха. После закрытого обращения в поддержку оценка отражает эту конкретную проблему. NPS, собранный в разные моменты пути клиента, — разные метрики, даже если вопрос одинаковый.
Отсюда различие между relational и transactional NPS. Relational — регулярный опрос по всей базе, например раз в квартал: он про отношение к продукту в целом. Transactional — вопрос после конкретного события: доставки, звонка в поддержку, оплаты. Он про качество этого шага. Смешивать их в одно число нельзя: изменение доли опросов после поддержки сдвинет общий NPS без всяких изменений в продукте.
Кому показываем, в какой момент, как часто повторяем одному человеку, через какой канал. Если эти правила поменялись, старый и новый NPS сравнивать нельзя, даже если формула та же.
Как посчитать NPS в SQL
В учебной базе SQL-курса опросов нет, поэтому пример собран из тех же 200 ответов, только с разбивкой по тарифу: 120 ответов от клиентов на pro и 80 — на free. Данные заданы в CTE через values, а generate_series разворачивает каждую строку в отдельные ответы — так выглядит настоящая таблица опроса.
Основной приём — перевести балл в +1, 0 или −1 через case. Тогда NPS — это avg() по колонке, умноженный на 100, а var_pop() той же колонки даёт дисперсию для погрешности. rollup добавляет итоговую строку по всем ответам.
| plan | answers | promoters | passives | detractors | nps | margin_95 |
|---|---|---|---|---|---|---|
| free | 80 | 24 | 24 | 32 | -10 | 18.2 |
| pro | 120 | 64 | 36 | 20 | 36.7 | 13.5 |
| всего | 200 | 88 | 60 | 52 | 18 | 11.3 |
with score_counts(plan, score, answers) as (
values
('pro', 0, 1), ('pro', 2, 1), ('pro', 3, 2), ('pro', 4, 2),
('pro', 5, 6), ('pro', 6, 8), ('pro', 7, 14), ('pro', 8, 22),
('pro', 9, 28), ('pro', 10, 36),
('free', 0, 3), ('free', 1, 2), ('free', 2, 2), ('free', 3, 3),
('free', 4, 4), ('free', 5, 8), ('free', 6, 10), ('free', 7, 12),
('free', 8, 12), ('free', 9, 12), ('free', 10, 12)
),
responses as (
-- одна строка = один ответ, как в настоящей таблице опроса
select c.plan, c.score
from score_counts as c
cross join generate_series(1, c.answers) as g(i)
),
scored as (
select
plan,
case
when score >= 9 then 1
when score <= 6 then -1
else 0
end as nps_point
from responses
)
select
coalesce(plan, 'всего') as plan,
count(*) as answers,
count(*) filter (where nps_point = 1) as promoters,
count(*) filter (where nps_point = 0) as passives,
count(*) filter (where nps_point = -1) as detractors,
round(100 * avg(nps_point), 1) as nps,
round(1.96 * 100 * sqrt(var_pop(nps_point) / count(*)), 1) as margin_95
from scored
group by rollup (plan)
order by answers;Как сравнивать NPS по сегментам и во времени
Самая частая ошибка — усреднить готовые индексы. Среднее NPS двух тарифов: (36,7 − 10) / 2 = 13,3. Настоящий NPS по всем 200 ответам — 18. Разница в том, что у pro ответов больше, а простое среднее даёт обоим сегментам одинаковый вес.
Правило простое: общий NPS пересчитывается из исходных ответов или из сумм промоутеров, критиков и всех ответов. То же самое со временем: NPS за квартал — не среднее трёх месячных NPS, а расчёт по всем ответам квартала.
Второй вопрос — чей это NPS: ответивших или клиентов. Среди ответивших free — 40%, а если в базе клиентов их, допустим, 70%, то NPS по базе с поправкой на структуру будет 0,3 × 36,7 + 0,7 × (−10) = 4. Такое перевзвешивание не исправит того, что внутри сегмента отвечают не все, но уберёт перекос по составу.
Разницу между сегментами проверяйте с погрешностью. Здесь pro − free = 46,7 пункта, погрешность разницы — корень из суммы квадратов стандартных ошибок, ±22,6. Интервал не пересекает ноль, и различие можно считать реальным. А вот разница в 10 пунктов на тех же объёмах была бы неотличима от шума.
NPS, CSAT, CSI и CES: в чём разница
NPS часто путают с другими опросными метриками. Они отвечают на разные вопросы и хорошо дополняют друг друга. Формулировки и шкалы ниже — распространённые варианты, в компаниях их нередко адаптируют.
| Метрика | Вопрос | Шкала и расчёт | Что показывает |
|---|---|---|---|
| NPS | Порекомендуете ли вы нас? | 0–10; % 9–10 минус % 0–6 | общее отношение к продукту или компании |
| CSAT | Насколько вы довольны [покупкой, ответом]? | чаще 1–5; доля ответов 4–5 | удовлетворённость конкретным опытом |
| CSI | Несколько вопросов о разных сторонах сервиса | сводный индекс с весами по атрибутам | удовлетворённость в разрезе атрибутов |
| CES | Насколько легко было решить ваш вопрос? | чаще 1–7; среднее или доля лёгких | сколько усилий потребовал шаг |
Как проверить, что NPS что-то значит в вашем продукте
Связь между NPS и ростом не гарантирована: в одном продукте критики уходят через месяц, в другом годами пользуются сервисом и ворчат. Проверить это можно на своих данных, и это полезнее любых отраслевых сравнений.
Свяжите ответы опроса с поведением тех же людей: user_id из таблицы ответов с событиями, оплатами и продлениями. Затем сравните группы через 60–90 дней после ответа. Какая доля промоутеров, нейтралов и критиков осталась активной, продлила подписку, купила снова? Если между группами есть заметный и устойчивый разрыв, NPS в вашем продукте работает как ранний сигнал. Если разрыва нет, индекс говорит о настроении, но не о поведении, и опираться на него в решениях стоит осторожно.
Вторая проверка — открытые ответы. Разметьте причины по темам: цена, скорость, поддержка, конкретная функция. Изменение NPS на 5 пунктов мало что объясняет, а рост доли критиков, которые пишут про одну и ту же проблему, — готовая задача для продуктовой команды.
И третья — повторные ответы одних и тех же людей. Если клиент отвечал дважды, видно, кто из критиков стал нейтралом, а кто ушёл. Это уже когортный взгляд на NPS: вы следите за одной группой во времени, а не сравниваете разные выборки.
Типичные ошибки с NPS
Большинство проблем с NPS не в формуле, а в том, как его собирают и читают.
- Показывать NPS без числа ответов и погрешности. Колебание в 5 пунктов на паре сотен ответов — обычный шум.
- Писать NPS в процентах. Это разность долей: «NPS 18», а не «18%».
- Усреднять NPS сегментов, месяцев или стран вместо пересчёта по ответам.
- Смешивать опросы после онбординга, после поддержки и регулярные в одну метрику.
- Менять формулировку, шкалу или момент показа опроса и продолжать строить общий тренд.
- Сравнивать свой NPS с чужим без знания их аудитории и способа сбора: такой бенчмарк почти ничего не говорит.
- Ставить NPS целью команды. Это быстро приводит к опросам «правильных» клиентов и просьбам поставить 10.
- Не читать открытые ответы. Причины оценки полезнее самого индекса.
Что читать дальше
NPS — одна из опросных метрик. Чтобы честно показывать её в отчётах, пригодятся доверительные интервалы, правила работы с долями в SQL и понимание того, как метрики обманывают на разрезах.
Материалы по теме
North Star и дерево метрик: как собрать систему продуктовых метрик
Как выбрать North Star Metric и не поставить на её место выручку, разложить её в дерево метрик с guardrails, описать каждую метрику карточкой со владельцем, считать adoption новой функции от eligible-базы и честно использовать NPS.

MRR и ARR: что это, как считать и что они скрывают
MRR — регулярная выручка активных подписок, приведённая к одному месяцу, ARR — та же величина в годовом масштабе. Как посчитать MRR в SQL, что делать с просроченными оплатами, чем MRR отличается от денег за месяц и из чего складывается его изменение.

Churn rate и retention rate: что это и как посчитать отток
Churn rate — доля клиентов, которые ушли за период, из тех, кто был в его начале. Как посчитать отток клиентов и retention rate в подписке и в бесплатном продукте, чем customer churn отличается от revenue churn, как перевести месячный отток в годовой и где ошибаются со знаменателем.