
Меня зовут Андрей Рыжик, я разработчик BI. У большинства ритейлеров есть система лояльности. Но далеко не каждый владелец бизнеса имеет внятную аналитику этой лояльности. Кто действительно возвращается, а кто просто копит баллы? Какие клиентские сегменты приносят деньги, а какие висят мертвым грузом? Расскажу про аналитику системы лояльности, которую мы разработали и внедряем в проектах.
В статье покажу, на каких данных все строится, как мы превращаем сырую выгрузку в исчерпывающие метрики, как собираем дашборды, делаем RFM-анализ, а далее помогаем отслеживать перетекание клиентов из одного сегмента в другой с течением времени.
Данные, на основе которых мы делаем аналитику лояльности
В нашей аналитике системы лояльности все начинается с трех основных источников — CSV-файлов, которые мы ежедневно получаем от клиента с помощью автоматической выгрузки.
Транзакции (они же Продажи)
Как правило, это файл вида ПродажиГГГГММ.csv (например, Продажи202501.csv)
В этом файле содержатся все необходимые для аналитики продаж поля, но для лояльности мы используем только некоторые, а именно:
Дата покупки
Номер чека
Выручка и выручка без скидок
ДисконтнаяКартаИД (уникальный идентификатор каждой карты)
Начислено и списано бонусов (опционально, иногда списания и начисления бонусов, привязанных к каждой транзакции, нет в системе клиента)
-
Дополнительные поля: Товар, Магазин, Продавец и так далее
2. Справочник карт лояльности
Файл не разбит по месяцам, а приходит сразу в полном виде. Он хранит полный список всех карт, когда-либо зарегистрированных в системе, а также другую справочную информацию по каждому клиенту. Например:
ФИО клиента
ШтрихКод (код карты)
Почта клиента
Отказ от рассылки (та самая галочка, которую вы ставите в бланке на регистрацию карты)
Дата рождения
Дата регистрации
Пол
Магазин регистрации карты
Телефон
Статус карты (опциональное поле, которое есть только при наличии «уровней» в системе лояльности клиента)
Текущий остаток бонусов (опциональное поле, данные из которого можно получить иным способом)
-
ДисконтнаяКартаИД (поле для связи с таблицей продаж)
3. Движение бонусов (иногда остаток бонусов)
Опциональный источник данных, который мы используем в случае, если нет возможности выгружать списания и начисления бонусов, привязанные к каждой транзакции. Данный вид файлов выгружается по такому же принципу, как и продажи — ДвижениеБонусовБСГГГГММ.csv (например, ДвижениеБонусовБС202501.csv). Поля, которые мы берем из этой таблицы:
Период (иными словами, дата)
Сумма бонусов
ДисконтнаяКартаИД
Вид события (начисление/списание)
РегистраторИД/Номер чека (опциональное поле, которое позволяет привязаться к каждой транзакции)
Подготовка данных к RFM-анализу
Классический RFM-анализ состоит из трех метрик: Recency (давность покупки), Frequency (частота покупок) и Monetary (траты на покупки). Исходя из этих показателей, клиенты разбиваются на сегменты и формируется примерно такая матрица:

Но на практике нашим заказчикам было неудобно работать с такими сегментами. Например, «случайные» и «спящие» клиенты не давали им никакой конкретики, они хотели четких статусов, которые сразу показывают, что делать с клиентом. Поэтому мы упростили классификацию, убрав лишние статусы и изменив логику расчета остальных.
Шаг №1. Готовим агрегированные данные по картам из таблицы продаж.
Количество чеков за последние 90 дней — receipts_90
Количество чеков за последние 365 дней — receipts_365
Дата последней покупки (дата последнего чека) — last_purchase
Дней с последней покупки — days_since
Шаг №2. Логика присвоения статусов
-
Статус: Новый
Условие: карта зарегистрирована (дата создания) в течение последних 90 дней и у клиента 1 чек.
-
Статус: Редкий
Условие: за последние 365 дней (1 год) всего 1 чек.
-
Статус: Растущий
Условие: за последние 365 дней (1 год) всего 2 чека.
-
Статус: Постоянный
Условие: больше двух чеков за последние 365 дней.
-
Статус: В зоне риска
Условие: последняя покупка была от 365 до 730 дней назад.
-
Статус: Отток
Условие: последняя покупка была от 730 до 1095 дней (3 года) назад.
-
Статус: Потерянный
Условие: последняя покупка была более 1095 дней назад.
Почему так?
«Новый» сразу выделяется и попадает в особый дашборд с новыми клиентами;
1–2 чека не дают клиенту статус «VIP», но позволяют сегментировать тех, кто еще не в фаворе, но уже не холодный;
четкая градация по «зоне риска» и «оттоку» помогает планировать маркетинговую активность по возврату клиентов;
«потерянных» фиксируем для того, чтобы пользователь аналитики мог исключить их из «реанимационных» маркетинговых рассылок.
Если не вдаваться в подробности формирования агрегированных данных, то в коде этот алгоритм выглядит примерно так:

Примечание. Порядок условий важен: проверяем «новый» по дате создания, а потом уже уходим в годовой F-блок и Recency-блок ниже. Теперь у каждого клиента есть свой статус, который мы используем для создания визуализаций и дашбордов.
Ключевые метрики лояльности на примере сотового ритейла
RFM-статусы дают базовое понимание о клиенте. Но чтобы получить полную картину его взаимодействия с компанией, нужны еще несколько дополнительных метрик. Они показывают, где, что и как часто он берет, и помогают точнее настроить маркетинг и персональные предложения.
Частота возврата за 3 года
Что показывает: долю клиентов с 2+ чеками за 3 года, которые после «потерянного» месяца все-таки вернулись к покупке.
Зачем нужно: оцениваем, как удается реанимировать «потерянных» и насколько эффективно работают компании по «реанимации».
Как считаем:
Выделение активных клиентов. Собираются все клиенты, сделавшие две и более покупки за последние три года.
Учет «потерянных». Из этих активных вычитаются те, кто был в сегменте «Потерянный» в прошлом месяце.
Корректировка «веса» потерянных. Чтобы их неактивность отражалась сильнее, каждый «потерянный» считается сразу за трех.
Расчет вернувшихся. От общего числа активных вычитается скорректированное число «потерянных», чтобы получить количество клиентов, вернувшихся к покупкам.
-
Нормировка на пул хотя бы раз купивших. Результат делится на количество клиентов, совершивших хотя бы одну покупку за три года (исключая все еще «потерянных»).
2. Любимый магазин и любимая категория
Задача: понять, в каком магазине или какую категорию товаров клиент покупает чаще всего, чтобы:
а) предлагать ему наиболее актуальные акции,
б) формировать персональные рекомендации.
Логика расчета:
Берем все транзакции за последние 2 года, сгруппированные по ДисконтнаяКартаКод и МагазинИД (или КатегорияТовара).
Считаем для каждой пары «карта–магазин» (или «карта–категория») количество чеков.
Сортируем магазины (категории) по убыванию числа чеков для каждой карты.
Для каждой карты выбираем первый (топ-1) элемент — это и есть «любимый магазин/категория».

3. Последний купленный телефон
Почему важно: так можно предлагать аксессуары (чехлы, пленки, зарядки) с максимальной персонализацией.
Как считаем:
Из всех продаж по карте за последние 3 года фильтруем только товары категории «Смартфоны» (или КатегорияТовара = “Смартфон”).
Берем запись с максимальной датой покупки (Дата).
Выводим ее в отдельный атрибут ПоследнийТелефон.

4. Возрастная категория
Чтобы разделить аудиторию по поколениям и адаптировать коммуникацию, мы классифицируем клиентов в группы:

Таким образом у нас появляется поле [Возрастная категория], с которым удобно строить аналитику покупок разновозрастных клиентов.
Строим визуализации на основе данных
Теперь, когда мы подробно разобрали ключевые метрики лояльности — от сегментации клиентов до частоты возврата клиентов, посмотрим, как эти показатели складываются в дашборды.
Дашборд «Клиенты»
На этом дашборде собраны вышеупомянутые метрики, а также блок с таблицами и инструментами для тестирования маркетинговых рассылок. Таблицы также позволяют выгрузить данные в виде PDF-файлов, PNG-картинок и, главное, Excel-таблиц.
Это рабочий инструмент, который помогает компаниям не только отслеживать текущее состояние клиентской базы, но и принимать решения на основе данных.


Дашборд «Новые клиенты»
Также мы разработали дашборд, целиком посвященный новым клиентам.

Витрина данных позволяет оперативно отслеживать прирост клиентской базы и анализировать поведение новых клиентов в первые дни после регистрации.
Структура дашборда:
Общее количество новых клиентов (в верхней части экрана) — ключевой индикатор, показывающий, насколько активно растет база.
Регистрации по регионам — помогает понять, откуда приходят новые клиенты, и выявлять зоны роста.
Регистрации по магазинам — позволяет оценить эффективность каждой торговой точки в привлечении новых участников программы.
Регистрации по продавцам — метрика, показывающая вклад конкретных сотрудников в развитие базы.
Начисление и списание бонусов — линия времени показывает, как быстро клиенты вовлекаются в бонусную механику: начисляют ли им бонусы и начинают ли они ими пользоваться.
Повторные покупки и клиентская активность — блок внизу позволяет отследить, сколько клиентов совершили хотя бы одну покупку после регистрации и сколько из них вернулись снова.
Дашборд адаптирован под ежедневный и ежемесячный мониторинг, содержит гибкие фильтры по дате, магазину, карте и номеру телефона. Он особенно полезен для оценки запуска новых точек, активаций по акциям или работы промо-персонала. Также каждую из визуализаций можно развернуть на весь экран.
Дашборд «Лояльность по периодам»
Этот дашборд — ключевой инструмент для анализа динамики клиентской базы и оценки устойчивости лояльности. Он позволяет заглянуть внутрь сегментной структуры и отследить, как изменяются клиентские статусы во времени: кто удерживается, кто теряется, а кто демонстрирует рост вовлеченности.

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

Следующий блок дашборда — матрица перетекания клиентов по статусам. Каждый клиент в каждый момент времени принадлежит к определенному сегменту:
Новый
Постоянный
Растущий
Редкий
В зоне риска
Потерянный
Отток
С течением времени клиенты могут мигрировать между этими сегментами. Матрица показывает, откуда и куда перетекли клиенты между двумя месяцами, давая наглядную картину изменений в лояльности. Цветовая маркировка помогает быстро сфокусироваться на тревожных зонах — например, массовом оттоке или резком приросте.
Барчарт (столбчатая диаграмма) показывает процентное изменение по каждому сегменту за период: кто вырос, а кто сдал позиции.
В целом дашборд дает мощный управленческий инструмент для маркетинга, позволяя своевременно реагировать на сигналы оттока и работать с возвратом и удержанием клиентов.
Заключение
В этой статье я показал, как можно структурировать клиентскую базу, отслеживать динамику, находить инсайты и точки роста в системе лояльности. А теперь попробуйте представить: как принимать маркетинговые решения без понимания, кто именно уходит, кто растет, а кто только зарегистрировался в системе. Думаю, что это будто управлять бизнесом с завязанными глазами. Если нужна помощь, обращайтесь.
Буду рад прочитать в комментариях ваши истории: как в компании анализируют клиентские сегменты, есть ли подобные метрики, как отслеживается отток и возвращение клиентов?