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

- Начинайте с чёткого события формирования когорты: первая покупка, регистрация или активация.
- Разделяйте удержание, повторные покупки, выручку и маржинальность: эти показатели отвечают на разные вопросы.
- Сравнивайте когорты только при одинаковых правилах расчёта и сопоставимых временных окнах.
- Для e-commerce полезны заказы и выручка, для SaaS - активность, использование функций и продление подписки.
- Не меняйте продукт или маркетинг по одной нестабильной когорте: сначала проверьте качество данных и повторяемость паттерна.
- Результат анализа должен приводить к гипотезе: что изменить, для какой группы и по какой метрике оценить эффект.
Подготовка данных для когортного анализа: метрики и источники
Когортный анализ клиентов подходит для e-commerce, SaaS, подписочных сервисов, мобильных приложений и других продуктов с повторными взаимодействиями. Он особенно полезен, когда нужно понять качество привлечения, причины оттока или различия между каналами. Не стоит начинать с него, если нет стабильного идентификатора клиента, истории событий или понятного определения активности.
| Элемент | Что проверить | Пример SQL или псевдокода |
|---|---|---|
| Идентификатор | Один клиент не дублируется под разными ID | COUNT(DISTINCT client_id) |
| Дата старта | Известно первое целевое действие | MIN(event_date) AS first_event_date |
| Активность | Определено, что считать возвращением | WHERE event_type IN ('purchase','login') |
| Метрика результата | Есть показатели удержания и ценности | SUM(revenue), COUNT(DISTINCT client_id) |
Соберите минимальный набор полей: client_id, дата события, тип события, канал или сегмент, сумма заказа либо признак активности. Для SaaS дополнительно сохраните дату активации, тариф и факт продления.
В контексте "когортный анализ в маркетинге" важно хранить источник привлечения и кампанию. Для e-commerce полезно разделять первую и повторную покупку, а для SaaS - регистрацию, активацию и регулярное использование продукта.
Определение когорт и временных окон: выбор подхода
Когорта - группа клиентов, объединённых общим стартовым событием. Чаще всего используют месяц или неделю первой покупки, регистрации либо активации. Выбирайте период так, чтобы в одной группе было достаточно наблюдений для сравнения, но не смешивались разные маркетинговые или продуктовые условия.
| Подход | Когда использовать | Пример SQL или псевдокода |
|---|---|---|
| По первой покупке | Повторные продажи и e-commerce | cohort_month = DATE_TRUNC('month', first_order_date) |
| По регистрации | Продукты с длинным циклом активации | cohort_week = DATE_TRUNC('week', signup_date) |
| По активации | SaaS, где регистрация не означает ценность | cohort = DATE_TRUNC('month', activation_date) |
| По каналу | Сравнение качества привлечения | GROUP BY source, cohort_month |
Перед расчётом определите:
- событие, которое запускает отсчёт;
- период когорты: день, неделя или месяц;
- событие возврата клиента;
- длительность наблюдения;
- правила обработки возвратов, отмен и тестовых аккаунтов.
Для быстрого анализа подойдут SQL, электронная таблица или BI-система. Доступы должны включать хранилище событий, рекламные источники и справочник клиентов. В "LTV клиентов анализ" включайте только согласованные финансовые показатели: выручку, скидки, возвраты и, если доступно, маржу.
Построение когортных таблиц и визуализаций: шаг за шагом

| Шаг расчёта | Результат | Пример SQL или псевдокода |
|---|---|---|
| Первая дата | Дата формирования когорты | MIN(event_date) OVER (PARTITION BY client_id) |
| Период жизни | Номер периода после старта | period = DATEDIFF(event_period, cohort_period) |
| Агрегация | Клиенты, события или выручка | GROUP BY cohort_period, period |
| Нормализация | Доля относительно размера когорты | active_clients / cohort_size |
- Очистите события. Удалите тестовые записи, дубликаты и события без идентификатора. Проверьте часовой пояс и единый формат дат.
- Найдите первое целевое действие. Для каждого клиента определите минимальную дату покупки, регистрации или активации. Это значение станет началом отсчёта.
- Присвойте когорту. Округлите дату первого действия до выбранного периода и сохраните её в отдельном поле.
- Рассчитайте период жизни. Для каждого следующего события определите, сколько периодов прошло с момента формирования когорты.
- Сгруппируйте данные. Посчитайте уникальных активных клиентов, число заказов, выручку или другие показатели по когорте и периоду жизни.
- Нормализуйте показатели. Для удержания разделите активных клиентов периода на размер исходной когорты. Для выручки используйте сумму на клиента или накопленное значение.
- Постройте визуализацию. Используйте тепловую карту для удержания, линии для сравнения когорт и таблицу для проверки исходных чисел.
Быстрый режим
- Выберите первое целевое действие и период когорты.
- Соберите первую дату и события активности по каждому клиенту.
- Рассчитайте период жизни и долю вернувшихся клиентов.
- Сравните несколько когорт по одинаковому числу доступных периодов.
- Сформулируйте одну гипотезу для следующего теста.
Анализ удержания: метрики, паттерны и предупреждающие сигналы
Анализ удержания клиентов показывает, какая доля пользователей возвращается после стартового события. Смотрите не только на итоговое значение, но и на форму кривой: резкое падение после первого периода, постепенное снижение, стабилизация или повторные всплески активности требуют разных действий.
| Метрика | Как трактовать | Пример SQL или псевдокода |
|---|---|---|
| Retention | Доля клиентов, активных в заданный период | active_clients / cohort_size |
| Repeat rate | Доля клиентов с повторным заказом | repeat_buyers / first_buyers |
| Revenue retention | Изменение выручки когорты во времени | period_revenue / initial_revenue |
| Средняя выручка на клиента | Доходность группы клиентов | SUM(revenue) / COUNT(DISTINCT client_id) |
- Проверьте, что размер когорты совпадает с числом клиентов в стартовом периоде.
- Убедитесь, что знаменатель retention не меняется между периодами.
- Сравните когорты одинакового возраста, а не последний доступный период каждой группы.
- Отделите новых клиентов от уже существующих.
- Проверьте влияние возвратов, отмен и технических дублей.
- Сопоставьте удержание с каналом привлечения, тарифом или типом устройства.
- Отметьте период, в котором возникает наибольшее падение активности.
- Проверьте, не связана ли просадка с неполным периодом наблюдения.
В e-commerce резкое снижение после первой покупки может указывать на слабый повторный оффер, длинный интервал между заказами или неудовлетворённость доставкой. В SaaS раннее падение активности часто связано с неполной активацией и тем, что клиент не дошёл до ключевой функции.
Гипотезы и эксперименты на основе когорт: как проверять влияние изменений
| Задача | Подход | Пример SQL или псевдокода |
|---|---|---|
| Сравнить каналы | Когорта плюс источник | GROUP BY source, cohort_period, period |
| Проверить релиз | Сопоставить периоды до и после изменения | CASE WHEN event_date < release_date THEN 'before' ELSE 'after' END |
| Оценить сегмент | Разделить клиентов по тарифу или поведению | GROUP BY plan, cohort_period |
| Измерить эксперимент | Сравнить тестовую и контрольную группы | GROUP BY experiment_group, cohort_period |
Формулируйте гипотезу в виде связи между изменением и метрикой: например, "онбординг с демонстрацией ключевой функции повысит удержание в следующих периодах". Заранее задайте сегмент, период оценки и критерий успеха.
- Не сравнивайте когорты с разными правилами включения клиентов.
- Не называйте причинным эффектом простое совпадение по времени.
- Не объединяйте каналы, тарифы и регионы, если их поведение заметно различается.
- Не оценивайте результат по одной малой группе без проверки повторяемости.
- Не меняйте несколько существенных факторов одновременно, если хотите понять причину эффекта.
- Не используйте только среднюю выручку: она может вырасти из-за небольшого числа крупных клиентов.
Для безопасной проверки сначала проведите диагностику данных, затем выберите контрольную группу или сравнимый исторический период. После запуска наблюдайте не только целевую метрику, но и побочные эффекты: возвраты, жалобы, стоимость обслуживания и нагрузку на поддержку.
Интеграция когортного анализа в регулярную аналитику и отчётность
| Формат | Когда уместен | Пример SQL или псевдокода |
|---|---|---|
| Еженедельный дашборд | Быстрое обнаружение просадок | WHERE cohort_period >= CURRENT_DATE - INTERVAL '12 weeks' |
| Ежемесячный отчёт | Оценка каналов и бизнес-результатов | GROUP BY month, source, cohort_period |
| Продуктовый мониторинг | Контроль активации и функций | GROUP BY feature_used, cohort_period |
| Автоматические алерты | Реакция на необычное падение | IF retention < threshold THEN alert |
- Создайте единый слой расчёта. Зафиксируйте определения когорты, активности, удержания и выручки в запросе или модели данных.
- Добавьте дашборд. Покажите размер когорт, retention, повторные покупки, выручку и разрезы по каналам или тарифам.
- Назначьте процесс действий. Для каждого сигнала укажите владельца, срок проверки и формат решения: дополнительный анализ, эксперимент или исправление данных.
Альтернативы когортному подходу:
- Воронка - когда нужно найти этап, на котором пользователи прекращают путь.
- RFM-сегментация - когда важнее быстро разделить клиентов по давности, частоте и сумме покупок.
- Сквозной LTV-анализ - когда нужно связать ценность клиента с каналом привлечения и затратами.
- Анализ событий - когда требуется понять, какие действия внутри продукта связаны с успешной активацией.
Для запроса "как повысить удержание клиентов" используйте когорты как диагностический слой: найдите точку падения, выделите сегмент, сформулируйте изменение и проверьте его на сопоставимой группе.
Практические уточнения и распространённые сложности
Чем когортный анализ отличается от обычной динамики продаж?
Динамика продаж показывает общий результат по календарным периодам. Когортный анализ сравнивает клиентов по времени с момента их старта, поэтому помогает отделить качество новых групп от эффекта размера клиентской базы.
Какую дату считать началом когорты?
Используйте первое событие, после которого клиент действительно становится пользователем продукта: первую покупку, регистрацию или активацию. Для SaaS регистрация может быть слишком ранним и слабым сигналом.
Как выбрать неделю или месяц?
Ориентируйтесь на цикл покупки или использования. Короткий цикл требует более частого окна, а редкие покупки лучше анализировать по более длинным периодам.
Можно ли сравнивать неполные когорты?

Можно, но только внутри одинакового числа доступных периодов. Последние когорты не следует напрямую сравнивать со старыми, если у них ещё нет полной истории наблюдения.
Как учитывать клиентов с несколькими идентификаторами?
Сначала создайте устойчивый идентификатор клиента и правила объединения записей. Если это невозможно, явно ограничьте анализ надёжными источниками и укажите риск искажения.
Что делать при резком падении retention?
Проверьте полноту данных, изменения трекинга, даты релизов, источники трафика и календарные факторы. Только после технической проверки переходите к гипотезам о продукте или маркетинге.
Как связать удержание и LTV?
Сопоставьте долю активных клиентов с накопленной выручкой или маржей по тем же когортам. Не делайте вывод о высокой ценности только по retention: частота покупок, средний чек и затраты на обслуживание могут различаться.


