Когда SKU продаётся в 3 000 торговых точек, провал продаж в одной из них – не повод для отдельного разбора. Таких сигналов каждую неделю тысячи, и разбирать их по одному не успевает ни одна команда. Рабочий порядок другой: свести сигналы по срезам, найти несколько общих причин, а одиночные сигналы отдавать в работу по сумме потерь.
Статья – о том, как устроить такой разбор в данных третичных продаж (sell-out): что считать сигналом, по каким срезам их сводить, как по типу сигнала и срезу выйти на причину и кому её отдать, как выбрать из оставшихся сигналов те, что стоят денег. Все цифры в примерах – модельные, они показывают порядок действий, а не оценку рынка. Сквозной пример – производитель йогурта с 30 SKU в 3 000 торговых точках (ТТ).
Почему разбор по одной точке не работает
В модельном примере каждый из 30 SKU в среднем стоит в 2 000 из 3 000 точек. Под наблюдением – 60 000 пар «SKU в точке». Если за неделю за свою норму выходят 4% пар, это 2 400 сигналов: 1 300 провалов, 500 всплесков и 600 «мёртвых» позиций. На следующей неделе – ещё столько же, часть из них – те же самые.
Разобрать 2 400 сигналов вручную нельзя ни силами KAM, ни силами мерчандайзинга. Даже если у компании есть полевая команда, на проверку одной точки уходит визит, а визитов в неделю – десятки или сотни, не тысячи. Поэтому список «точки с аномалиями» без обработки превращается в отчёт, который никто не читает до конца.
Вторая причина – смысл одиночного сигнала. Провал в одной точке может быть случайным: ремонт в магазине, временная выкладка, неделя с плохой погодой. А когда провалы идут сразу в 300 точках одного дистрибьютора, это уже не случайность, а одна причина с понятным адресом. Разбор по одной точке такую причину не покажет: каждый сигнал по отдельности выглядит мелким.
Что считать сигналом
Сигнал – отклонение продаж пары SKU × ТТ от её собственной нормы. Норма – средние продажи этой пары за последние 12 недель. Сравнивать со средним по сети или по формату нельзя: один и тот же SKU в гипермаркете и в магазине у дома продаётся в разных объёмах, и общий порог либо пропустит провалы в маленьких точках, либо будет срабатывать на каждой большой.
Три типа сигналов и пороги в модельном примере:
- провал – продажи ниже нормы на 30% две недели подряд;
- всплеск – выше нормы на 50% за неделю;
- «мёртвая» позиция – 0 продаж 3 недели подряд при товаре в матрице.
Две недели для провала нужны, чтобы отсечь шум одной плохой недели. Три недели для «мёртвой» позиции – чтобы не ловить редкие покупки в медленных категориях. Порог всплеска – одна неделя: реагировать на него нужно быстро, иначе под неожиданный спрос не хватит остатков.
12 недель – рабочий минимум для «быстрых» категорий, где ассортимент сети меняется каждые 1–2 месяца. Окно в 4 недели слишком короткое: одна удачная неделя завышает норму. С сезонностью работают двумя приёмами: рядом с нормой за 12 недель держат норму того же периода год назад, а известные промо-недели – своё промо, промо сети, праздники – выносят из расчёта нормы и не считают аномалиями.
Шаг 1. Свести сигналы по срезам
Первое, что делают с недельным списком сигналов, – раскладывают его по срезам: регион, дистрибьютор, сеть, SKU. Вопрос к каждому срезу один: где сигналов больше, чем должно быть при случайном разбросе. Если в регионе 10% всех пар SKU × ТТ, а провалов в нём – 50%, это не шум, а группа с общей причиной.
В модельном примере 1 450 из 2 400 сигналов (60%) складываются в три группы:
- 700 провалов в одном регионе у одного дистрибьютора по всем SKU – причина-кандидат: перебои поставок дистрибьютора; кому – отдел продаж;
- 450 «мёртвых» позиций в одной сети по 3 SKU – причина-кандидат: SKU выпали из матрицы сети или сеть закрыла их заказ в эти точки; кому – менеджер по работе с сетью (KAM);
- 300 всплесков в одной сети по 2 SKU – причина-кандидат: промо сети, не согласованное с производителем; кому – трейд-маркетинг, чтобы пересмотреть прогноз и остатки.
Три решения вместо 1 450 проверок на местах. Каждое решение снимает проблему сразу в сотнях точек: дистрибьютор восстанавливает поставки, KAM возвращает SKU в заказ, трейд-маркетинг довозит остатки под промо. Ни одна из этих причин не видна, если смотреть на точки по одной.
Порядок срезов имеет значение. Сначала – самые крупные (регион, дистрибьютор, сеть): они отвечают за логистику и договорённости, и одна ошибка там бьёт по тысячам пар. Потом – SKU внутри них: если в сети проседают только 2 SKU из 30, причина в этих товарах, а не в сети.
Шаг 2. Тип сигнала и срез подсказывают причину
Где собрались сигналы, там и первая проверка. Связка «тип сигнала + срез» сужает круг причин до одной-двух и сразу даёт адрес – кому отдать вопрос:
- провалы в одном регионе или у одного дистрибьютора – проверить остатки и отгрузки дистрибьютора; кому – отдел продаж;
- провалы в одной сети – цену на полке и промо конкурента в этой сети; кому – KAM;
- всплески в одной сети – промо сети, не согласованное с вами; кому – трейд-маркетинг;
- «мёртвые» позиции в одной сети – вывод SKU из матрицы и закрытый заказ в точки; кому – KAM;
- сигналы, разбросанные по отдельным точкам, – выкладку и наличие на полке; кому – мерчандайзинг.
Последний пункт зависит от того, есть ли у компании мерчандайзинг – свой или подрядный – в нужных регионах. Он есть не у всех и не везде: многие производители работают с мерчандайзингом только в крупных городах. Если его нет, проверка выкладки уходит запросом в сеть через KAM, и тогда тем важнее, чтобы таких запросов было немного – это задача шага 3.
Список не заменяет проверку, а задаёт её порядок. Если провалы собрались в одной сети, а цена и промо конкурента в порядке, следующий вопрос – к выкладке в этой сети. Но начинать с обхода полок там, где причина видна в данных отгрузок, – значит тратить визиты впустую.
Шаг 3. Одиночные сигналы – по сумме потерь
После групп остаются сигналы, которые никуда не сложились: в примере их 950. Их не разбирают подряд и не выбирают по принципу «сначала крупные сети». Каждый сигнал оценивают в деньгах:
Потери = (норма − факт) × цена.
Например, норма пары – 24 упаковки в неделю, факт – 6. Недобор 18 упаковок по 95 руб. – 1 710 руб. за неделю. Для «мёртвой» позиции факт равен нулю, и потери – это вся норма. Для всплеска та же формула даёт отклонение со знаком плюс: это не потери, а объём, под который может не хватить остатков. Всплески ставят в тот же список по сумме отклонения и проверяют в первую очередь на ошибку данных и крупную разовую закупку.
Отсортированный по убыванию список почти всегда выглядит одинаково: несколько десятков сигналов дают большую часть денег, а длинный хвост – копейки на пару. В модельном примере первые 100 сигналов из 950 – 45% потерь. Их и отдают в работу: KAM и мерчандайзингу, если он есть. Остальные ждут следующей недели: если сигнал повторится, он поднимется в списке, если нет – это был шум.
Такой порядок решает и проблему нагрузки. Вместо 2 400 сигналов команда получает три групповые задачи и короткий список из сотни точек, отсортированный по деньгам, – объём, который реально разобрать за неделю.
Какие данные нужны для разбора
Чтобы разбор работал каждую неделю, нужны три источника.
Первый – sell-out сетей: продажи SKU по торговым точкам по неделям. В крупных сетях он доступен в кабинете поставщика, выгрузкой или через API. Качество стоит проверять: встречается пустая строка вместо нуля (точка выглядит как «нет данных», а не «нет продаж»), один SKU под двумя штрихкодами, запаздывание выгрузки на неделю. Каждая такая ошибка порождает ложные сигналы сразу в сотнях пар.
Второй – справочники для срезов: к какой сети, региону и дистрибьютору относится каждая точка. Без них сигналы не сводятся в группы, и шаг 1 не работает. Справочник точек – самая недооценённая часть разбора: если у 10% точек не указан дистрибьютор, группа «провалы у одного дистрибьютора» окажется размыта по нескольким срезам.
Третий – собственные отгрузки производителя по регионам, дистрибьюторам и неделям. Они нужны, чтобы проверить первую гипотезу по групповым провалам: если отгрузки дистрибьютору в регион упали, причина найдена без единого визита в точку.
Матрица «SKU × точки» на 60 000 пар в неделю в Excel не помещается в рутину: пересчёт норм, сводка по срезам и сортировка по потерям требуют отдельной системы. Отсюда и требование к инструменту: нормы считаются автоматически, сигналы сводятся по срезам, список одиночных сигналов собирается по сумме потерь.
Типичные ошибки
Первая – выдавать команде список точек вместо сводки. Список из 2 400 строк никто не разберёт, и через месяц разбор аномалий превращается в отчёт для галочки.
Вторая – одна норма на сеть или на формат. Общий порог либо не видит провалы в маленьких точках, либо даёт сотни ложных сигналов в больших.
Третья – разбирать одиночные сигналы раньше групп. Пока команда проверяет отдельные точки, группа из 700 провалов у одного дистрибьютора продолжает терять выручку, и каждую неделю добавляет новые сигналы в список.
Четвёртая – решать «мёртвые» позиции выводом из матрицы. Если 450 «мёртвых» позиций собрались в одной сети, причина почти наверняка не в спросе, а в статусе SKU у сети. Вывод товара в этом случае закрепляет потерю полки, за которую уже заплачено переговорами.
Что это значит для производителя
Во-первых, данные нужны по SKU × ТТ × неделя по всему периметру, а норма – своя для каждой пары, по 12 неделям. Без этого нет ни сигналов, ни групп.
Во-вторых, каждую неделю – свод сигналов по срезам: регион, дистрибьютор, сеть, SKU. Команда получает не список точек, а несколько групп с причиной-кандидатом и адресом.
В-третьих, сначала группы – одно решение снимает проблему сразу в сотнях точек, потом одиночные сигналы – по сумме потерь. Остальное ждёт следующей недели.
В-четвёртых, KPI команды – сколько групп устранено (причина снята, продажи вернулись к норме) и сколько выручки возвращено, а не число проверенных точек. Такой KPI считается каждую неделю и прямо связан с деньгами: группа, у которой продажи вернулись к норме, видна в данных так же, как была видна её проблема.
Чтобы такая рутина работала, нужны продажи по SKU, торговой точке и неделе в одной системе, рядом с нормами и сигналами.


