Руководитель видит в отчёте число сорок два и требует поднять его до пятидесяти пяти к концу квартала. Команда начинает рассылать опросы чаще, уговаривать клиентов ставить высокие оценки и спорить о формулировках. Через три месяца показатель действительно растёт, а отток клиентов не меняется. Знакомая история, и она объясняется тем, что единственная цифра показывает меньше, чем от неё ждут.

Показатель строится на одном вопросе о готовности рекомендовать

Метрика появилась в 2003 году. Её предложил консультант, опубликовавший статью с говорящим названием про единственное число, которое нужно для роста. Идея состояла в том, чтобы заменить длинные анкеты одним вопросом: насколько вероятно, что человек порекомендует компанию, товар или услугу другу или коллеге.

Респондент отвечает по шкале от нуля до десяти. Дальше ответы делятся на три группы. Оценки девять и десять относят к сторонникам. Оценки семь и восемь попадают в нейтральную группу. Оценки шесть и ниже причисляют к критикам.

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

def net_promoter_score(answers):
    if not answers:
        return None
    total = len(answers)
    promoters = sum(1 for score in answers if score >= 9)
    detractors = sum(1 for score in answers if score <= 6)
    return round((promoters - detractors) / total * 100)

print(net_promoter_score([10, 9, 8, 7, 6, 3, 10]))

На этом маленьком наборе из семи оценок видно механику. Сторонников трое, критиков двое, разница составляет одну седьмую, то есть примерно четырнадцать процентов. Нейтральные ответы не участвуют в числителе, но участвуют в знаменателе, и это ключевая деталь. Чем больше людей отвечает нейтрально, тем сильнее размывается разница между двумя крайними группами.

Именно из-за этой особенности показатель чувствителен к распределению, а не только к среднему. Две компании с одинаковой средней оценкой могут иметь совершенно разные индексы, если у одной ответы разбросаны по краям, а у другой собраны в середине.

Простота метода объясняет его популярность и его слабости одновременно

Успех метрики объясняется тремя качествами. Вопрос короткий, и человек отвечает на него за секунды. Понятие легко объяснить любому сотруднику, от разработчика до директора. Результат выражается одним числом, которое удобно ставить в отчёт.

К 2020 году разновидности этого показателя использовали около двух третей крупнейших компаний из списка тысячи. Появился даже родственный вариант для измерения отношения сотрудников к своему рабочему месту, где вопрос переформулирован под рекомендацию работодателя.

Простота оборачивается недостатками. Одно число не показывает, что именно не устроило клиента. Оно не различает проблему доставки и проблему качества товара, грубость оператора и непонятный интерфейс. Возникает соблазн объяснить падение показателя чем угодно, и каждый отдел приводит своё объяснение.

Вторая слабость связана с распределением внимания. Метод опирается на крайние оценки и почти игнорирует нейтральных. Между тем именно нейтральная группа часто оказывается самой большой, и именно она решает, останется человек или уйдёт.

Третья слабость касается сравнения между отраслями. Уровень оценок сильно различается в зависимости от сферы. Показатель сорок для авиаперевозок и для интернет-магазина означает разные вещи, и прямое сопоставление вводит в заблуждение.

Открытый вопрос о причинах даёт основную часть пользы

Практика показывает, что ценность заключена не в цифре, а в дополнительном вопросе. Почти всегда вслед за оценкой спрашивают, почему человек поставил именно столько. Свободный ответ даёт то, чего не даёт балл: конкретику.

Ответы удобно группировать по темам. Сроки доставки, качество товара, работа поддержки, цена, удобство сайта, повторные обращения. Затем темы сортируют по частоте и по связи с оценкой. Так появляется картина, на которую можно опереться в решениях.

Простой разбор текста на наличие ключевых слов показывает, как это выглядит в коде:

import re
from collections import Counter

TOPICS = {
    "доставка": ["доставк", "курьер", "срок", "привез"],
    "поддержка": ["поддержк", "оператор", "ответил", "помог"],
    "цена": ["цен", "дорого", "дешев", "скидк"],
    "сайт": ["сайт", "приложен", "интерфейс", "оформ"],
}

def classify(responses):
    counts = Counter()
    for text in responses:
        lowered = text.lower()
        for topic, patterns in TOPICS.items():
            if any(re.search(pattern, lowered) for pattern in patterns):
                counts[topic] += 1
    return counts

print(classify([
    "Курьер приехал на день позже",
    "Оператор помог быстро",
    "Дорого для такого качества",
]))

Такой подсчёт не заменяет чтение глазами, но помогает не утонуть в тысяче ответов. Он показывает, какие темы звучат чаще и где стоит искать причину движения показателя.

Второй полезный приём это сравнение причин у сторонников и критиков. Если критики дружно называют одну тему, она становится приоритетом. Если сторонники хвалят то, чего критики не замечают, значит, эта сторона работы налажена.

Опрос требует правильного момента, выборки и способа доставки

Качество данных зависит от того, кого и когда спрашивают. Разберём типичные ошибки.

Первая ошибка это опрос сразу после покупки. Человек ещё не пользовался товаром и отвечает на впечатлении от оформления заказа. Правильнее спрашивать после того, как клиент получил пользу: после доставки, после завершения обращения в поддержку, после месяца использования.

Вторая ошибка это опрос только довольных. Если анкета показывается лишь тем, кто завершил покупку успешно, недовольные в выборку не попадут. Получится завышенная картина, по которой невозможно принять решения.

Третья ошибка связана со способом доставки. Письма и всплывающие окна дают разный отклик и разные ответы. Доля отвечающих на опросы снижается год от года, и это создаёт смещение: отвечают в основном те, у кого сильные эмоции.

Четвёртая ошибка касается частоты. Если человек получает приглашение оценить каждую покупку, он перестаёт реагировать или начинает ставить низкие оценки из раздражения. Сам автор методики публично называл чрезмерное использование показателя общей бедой и советовал опрашивать реже, но внимательнее читать ответы.

Пятая ошибка это отсутствие контроля над выборкой. Без понимания, сколько людей получило приглашение и сколько ответило, цифра теряет смысл. Доля ответивших должна стоять в отчёте рядом с самим значением, иначе сравнивать периоды невозможно.

Динамика показателя важнее абсолютного значения

Для управленческих решений полезен не уровень, а движение. Сравнивать стоит один и тот же сегмент с самим собой в разные периоды.

Первое, что стоит наладить, это единая методика. Формулировка вопроса, шкала, момент опроса, способ доставки и правила обработки должны оставаться неизменными. Любая правка ломает сопоставимость, и об этом легко забыть при смене подрядчика или инструмента.

Второе это сегментация. Общий показатель по всей базе скрывает различия. Разбивка по каналам привлечения, по регионам, по давности клиента и по типу покупки показывает, где именно происходят изменения.

def by_segment(responses):
    groups = {}
    for item in responses:
        groups.setdefault(item["segment"], []).append(item["score"])
    return {name: net_promoter_score(scores) for name, scores in groups.items()}


data = [
    {"segment": "новые", "score": 10},
    {"segment": "новые", "score": 6},
    {"segment": "постоянные", "score": 9},
    {"segment": "постоянные", "score": 8},
]
print(by_segment(data))

На таком разрезе сразу видно, что общее число может скрывать провал в одном сегменте и рост в другом. Новые клиенты в примере дают ноль, постоянные дают пятьдесят, а вместе получается двадцать пять.

Третье это проверка значимости изменений. Колебания в несколько пунктов на выборке из сотни ответов ничего не значат. Прежде чем бить тревогу, стоит посчитать доверительный интервал и убедиться, что изменение не объясняется случайностью.

Четвёртое это увязка с поведением. Показатель стоит сверять с фактическими данными: долей повторных покупок, оттоком, числом обращений в поддержку, суммой среднего чека. Если показатель растёт, а отток не меняется, доверять стоит поведению, а не анкете.

Показатель нельзя превращать в инструмент наказания сотрудников

Отдельная проблема лежит не в статистике, а в управлении. Когда от оценки зависят премии и карьера, люди начинают работать не с клиентом, а с цифрой.

Первое последствие это давление на клиента. Оператор уговаривает поставить высокий балл, напоминает о просьбе в конце разговора, иногда прямо просит. Ответы перестают отражать реальность.

Второе последствие это отбор удобных респондентов. Приглашения начинают уходить только тем, кто вероятнее поставит высокую оценку. Выборка съезжает, и показатель расходится с действительностью.

Третье последствие это потеря смысла обратной связи. Свободные ответы становятся осторожнее и короче, ведь человек понимает, что от них зависит чья-то судьба. Сам автор методики советовал не привязывать показатель к вознаграждению сотрудников, потому что это меняет мотивацию с удовлетворения клиента на получение высокой оценки.

Правильное применение выглядит иначе. Показатель используется как индикатор для поиска тем, а не как критерий оценки людей. Читаются ответы, находятся причины, проверяются гипотезы, и только потом ставятся задачи.

Место показателя в системе измерений определяет его ценность

Ни одна метрика не работает в одиночку, и эта не исключение. Полезно собрать небольшой набор, где каждая цифра отвечает на свой вопрос.

Первый спутник это поведенческие данные. Сколько клиентов вернулись, сколько купили повторно, сколько ушло. Эти значения не зависят от настроения в момент ответа.

Второй спутник это причины обращений. Если растёт число вопросов про доставку, показатель лояльности упадёт следом, и предупреждение придёт раньше.

Третий спутник это оценка конкретного взаимодействия. После разговора с поддержкой спрашивают не о готовности рекомендовать компанию в целом, а о том, решили ли проблему. Такие ответы точнее указывают на сбой.

Четвёртый спутник это прямые разговоры. Десяток бесед с клиентами, которые ушли, даёт больше понимания, чем тысяча анкет. Автор методики в поздних выступлениях прямо советовал дополнять цифры небольшим числом разговоров.

Разбор реального провала показывает, как неверная трактовка вредит решениям

Полезно пройти путь одной компании, которая столкнулась с непонятным падением показателя.

Осенью интернет-магазин увидел снижение индекса с сорока восьми до тридцати одного за два месяца. Руководство потребовало объяснений, и каждая служба предложила свою версию. Отдел логистики указал на сезонный рост нагрузки. Маркетинг сослался на изменение рекламных каналов. Поддержка заявила, что клиенты стали придирчивее.

Разбор показал третью картину. В выборку попали получатели рассылки, которых компания недавно начала приглашать к опросу после первого заказа. Эти люди ещё не получили посылку и отвечали на впечатлении от оформления покупки. Их ответы сместили распределение к низким оценкам, а сама база опрошенных выросла почти вдвое.

Стоило разделить данные по давности клиента, и всё встало на места. Индекс постоянных покупателей не изменился. Показатель новых оказался низким, но он и раньше был таким же, просто выборка стала больше и заметнее.

Вывод, который сделала команда, оказался важнее самого расследования. Во-первых, момент опроса закрепили в регламенте: только после получения заказа. Во-вторых, в отчёт добавили сегментацию по давности. В-третьих, сравнивать периоды между собой разрешили только при неизменной методике.

Такой разбор стоит проводить при каждом резком движении. Причина может лежать в данных, а не в обслуживании, и поиск настоящей проблемы дешевле, чем перестройка процессов из-за случайного всплеска.

Как считать и когда остановиться, решает размер эффекта, а не красивый график

Математическая часть кажется простой, но именно здесь кроются ошибки интерпретации.

Первое, что стоит помнить, это размер выборки. На тридцати ответах колебание в десять пунктов возникает от одного человека. На тысяче ответов такое колебание уже значимо. Поэтому в отчёте рядом с индексом полезно указывать число ответов за период.

Второе это доверительный интервал. Для разности долей он считается по стандартной формуле, а смысл прост: если интервалы двух периодов пересекаются, объявлять победу или провал рано.

import math

def margin_of_error(promoter_share, detractor_share, total, z=1.96):
    p1, p2 = promoter_share, detractor_share
    variance = (p1 * (1 - p1) + p2 * (1 - p2) + 2 * p1 * p2) / total
    return z * math.sqrt(variance) * 100

print(round(margin_of_error(0.55, 0.2, 400), 1))

Третье это эффект порядка вопросов. Если перед основным вопросом задать длинную анкету, ответы сместятся. Короткий вариант с одним вопросом и открытым полем даёт более честные ответы.

Четвёртое это сезонность. Летом и в конце года оценки меняются из-за внешних обстоятельств. Сравнивать стоит аналогичные периоды прошлых лет, а не соседние месяцы.

Пятое это эффект новизны. После крупного обновления интерфейса оценки сначала падают, потом выравниваются. Разовое падение сразу после выпуска не повод возвращать старую версию.

Все эти оговорки не отменяют метрику. Они лишь напоминают, что за одним числом стоит распределение, зависящее от способа сбора данных. Тот, кто держит это в голове, реже принимает поспешные решения и чаще находит настоящую причину.

Индекс лояльности получился удачным инструментом с плохой репутацией. Он честно отвечает на один узкий вопрос, и беда не в нём, а в попытках выжать из одной цифры объяснение всей работы компании. Правильное обращение с ним выглядит скромнее и полезнее: измерять регулярно по неизменной методике, читать причины, сверять с поведением и не превращать в повод для разбирательств. Тогда единственное число действительно начинает что-то значить.