Когортный анализ повторных покупок: таблица удержания клиентов по шагам

Когортный анализ повторных покупок показывает, какая доля клиентов, впервые купивших в один период, вернулась через одинаковое время после старта. Для расчёта объедините людей по дате первой завершённой покупки, закрепите состав каждой группы и сравните её результаты в равных возрастных окнах. Новая группа не должна проигрывать старой только потому, что за ней наблюдали меньше дней.
Этот подход полезен магазину, кафе и студии услуг, когда общий оборот растёт, но непонятно, возвращаются ли новые покупатели. Выручку может поддерживать приток новичков, пока качество повторных отношений ухудшается. Когортная таблица отделяет возраст клиента от календарного месяца и делает такую ситуацию видимой.
Чем когорта отличается от сегмента
Сегмент «покупал за последние 30 дней» постоянно меняет состав. Когорта «первая покупка в июне» сохраняет исходных участников и сопровождает их дальше. Это различие важно для знаменателя: нельзя каждую неделю удалять из группы неактивных и затем радоваться высокому удержанию оставшихся.
Начните с одного признака — периода первой покупки. Дополнительные срезы по каналу, филиалу или первому товару добавляйте после проверки основной таблицы. Если сразу разделить небольшую базу на десятки сочетаний, в ячейках останутся единицы людей и случайность будет выглядеть закономерностью.
Какое событие выбрать началом отсчёта
Для повторных покупок начало — первая завершённая оплаченная покупка, а не регистрация или скачивание карты. Иначе вы смешаете превращение подписчика в покупателя и удержание уже купившего человека. Эти процессы требуют разных действий и отдельных знаменателей.
Проверьте глубину истории. Если кассу подключили в июне, первая видимая июньская покупка могла быть десятой в жизни клиента. Называйте такую группу «первые наблюдаемые покупки», исключайте известную старую базу или дождитесь достаточной истории. Не превращайте недостаток данных в уверенную дату начала отношений.
| Поле | Пример | Правило |
|---|---|---|
| ID клиента | Клиент 104 | Одинаковый во всех источниках |
| ID покупки | Заказ 781 | Уникальный, без дублей оплаты |
| Дата завершения | 12 июня | Единый часовой пояс |
| Первая покупка | 12 июня | Минимальная корректная дата в полной истории |
| Когорта | Июнь | Присваивается один раз |
| Возраст покупки | 35 дней | От её даты минус дата первой покупки |
Выберите тип возврата до построения таблицы
Есть два разных вопроса. Первый: сколько клиентов сделали хотя бы одну повторную покупку за первые 30, 60 или 90 дней? Это накопительный показатель. Второй: сколько покупали именно в возрастном интервале, например с 31-го по 60-й день? Это интервальный показатель. Они по-разному меняются и не должны стоять в одной таблице под одинаковой подписью.
В накопительном варианте доля повторивших не уменьшается: человек, вернувшийся на десятый день, остаётся среди вернувшихся за 60 дней. В интервальном варианте показатель может снижаться: тот же человек мог ничего не покупать в следующем окне. В обоих случаях считаются уникальные люди, а не число их чеков.
Учебный расчёт повторной покупки за 30 дней
Доля второй покупки за 30 дней = клиенты с завершённой повторной покупкой в течение 30 дней после первой / все клиенты исходной когорты × 100%.
Допустим, в июне впервые купили 120 человек. Из них 36 вернулись в течение первых 30 дней, а 54 — в течение первых 60 дней. Показатели равны 30% и 45%. Если десять клиентов сделали по четыре заказа, они всё равно дают десять вернувшихся людей, а не сорок.
Границы задайте точно: повтор считается после первой покупки и не позже даты первой покупки плюс 30 дней. Внутридневные доплаты и дробление одного заказа не должны превращаться во второй визит. Для бизнеса с несколькими заказами за день отдельно определите, что считается новой покупкой, и сохраняйте это правило.
| Когорта | Клиентов на старте | Повтор за 30 дней | Повтор за 60 дней | Повтор за 90 дней |
|---|---|---|---|---|
| Июнь | 120 | 36 / 120 = 30% | 54 / 120 = 45% | 60 / 120 = 50% |
| Июль | 100 | 35 / 100 = 35% | 46 / 100 = 46% | Нет полного наблюдения |
| Август | 140 | 42 / 140 = 30% | Нет полного наблюдения | Нет полного наблюдения |
Это вымышленные данные для демонстрации метода. «Нет полного наблюдения» не означает ноль. Чтобы заполнить 30-дневную ячейку месячной когорты полностью, 30 дней должны пройти даже для клиента, купившего в последний день этого месяца.
Как учитывать незрелые группы
Самый понятный способ для небольшого бизнеса — показывать только полностью созревшие окна всей когорты. Рядом храните дату выгрузки. Более сложный вариант — считать только клиентов, у которых нужный срок уже завершился, и выводить отдельный знаменатель зрелой части. Тогда это другая версия показателя, и её нельзя выдавать за результат всей месячной группы.
При сравнении июньской и августовской когорт берите общий доступный горизонт: например, первые 30 дней. Фраза «июнь принёс больше повторов за всё время» почти ничего не объясняет: июньские клиенты просто имели больше возможностей купить.
Как собрать таблицу в электронной таблице
- Выгрузите завершённые покупки с клиентскими ID и статусами возвратов.
- Удалите технические дубли, отмены и тестовые операции по записанному правилу.
- Найдите минимальную дату покупки каждого клиента в доступной полной истории.
- Присвойте период когорты и рассчитайте возраст каждой следующей покупки.
- Поставьте клиенту признак наличия повтора в нужном окне.
- Сведите уникальных клиентов по когорте и поделите на исходный размер группы.
- Закройте незрелые ячейки и проверьте несколько историй вручную.
Не суммируйте флаги повторов по строкам чеков: один человек может попасть в них много раз. Сначала получите одну строку на клиента и горизонт, затем делайте сводную. Это одна из частых причин завышенных процентов.
Какие решения принимать по рисунку повторов
Если 30-дневный повтор ухудшился во всех каналах одновременно, проверьте первый опыт: наличие, скорость, качество и понятность следующего шага. Если проблема только у одной рекламной группы, изучите обещание объявления и соответствие аудитории. Если первые 30 дней стабильны, а следующие окна падают, вероятна другая задача — сохранение удобства и полезности после знакомства.
Это направления проверки, а не доказанные причины. Одновременное изменение цены, сезона и рекламного канала не позволяет приписать разницу одной акции. Важные изменения помечайте в календаре и проверяйте сопоставимые группы.
Как добавить деньги и не потерять смысл
Покупательский retention и выручка на исходного клиента — разные показатели. Можно удержать меньшую долю людей, но получить больше выручки от нескольких крупных заказов. Поэтому выводите их рядом, с отдельными определениями, и смотрите распределение: один корпоративный заказ не должен маскировать слабые повторы остальных.
Финансовые данные берите из кассы или учётной системы. Лояльность 360 помогает вести гостей, визиты, подарки и коммуникации через Telegram и MAX; описанная когортная таблица собирается отдельно. Не заменяйте оплату фактом чтения сообщения, а сумму заказа — числом начисленных визитов.
Как превратить анализ в регулярную работу
Зафиксируйте паспорт отчёта: источник, правила первой покупки, горизонты, фильтры, дата обновления и владелец. Раз в месяц выбирайте один наиболее заметный разрыв, проверяйте его качество и назначайте действие. Через полный сопоставимый горизонт возвращайтесь к исходной гипотезе.
Для разработки сценария после анализа используйте материал о частоте покупок. Таблица отвечает на вопрос, где теряется повтор, а сценарий — что конкретно изменить в опыте клиента. Если разделять эти задачи, когортный анализ становится инструментом решений, а не разноцветной картинкой для отчёта.
Источники и методика
Stripe: структура и применение когортного анализа; Amplitude: временные окна удержания. Определения адаптированы к малому бизнесу; таблицы и числа в статье — учебные примеры редакции.