Surrika

Когортный анализ: кто из покупателей возвращается

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

Формула

Сравнение групп покупателей, пришедших в один месяц: какая доля из них покупает снова через месяц, два, полгода.

Возвращаемость когорты в месяце N = Покупатели когорты, купившие в месяце N / Все покупатели когорты × 100%

Когорта
покупатели, сделавшие первую покупку в одном месяце
Месяц N
сколько месяцев прошло после первой покупки

Пример расчета

Покупателей в январской когорте 200
Купили снова в апреле 14
Возвращаемость 7 %

14 / 200 × 100% = 7% на третий месяц

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

Тот же вопрос к выгрузкам в Surrika

Пример посчитан на выгрузках вымышленного мебельного магазина: продажи сайта и трех маркетплейсов, реклама, сделки CRM и остатки за 2024-2025 годы.

Какая доля покупателей каждой квартальной когорты купила снова в следующие кварталы?

Повторные покупки по когортам

SQL, по которому посчитано

WITH won AS (
    SELECT customer_id, date FROM deals WHERE status = 'Выиграна'
),
first_purchase AS (
    SELECT customer_id, date_trunc('quarter', min(date)) AS cohort FROM won GROUP BY customer_id
),
activity AS (
    SELECT DISTINCT first_purchase.cohort, won.customer_id,
           (year(won.date) - year(first_purchase.cohort)) * 4 + quarter(won.date) - quarter(first_purchase.cohort) AS quarter_number
    FROM won
    JOIN first_purchase USING (customer_id)
),
sizes AS (SELECT cohort, count(*) AS customers FROM first_purchase GROUP BY cohort),
returns AS (
    SELECT activity.cohort, activity.quarter_number, count(*) / any_value(sizes.customers) AS returned
    FROM activity
    JOIN sizes USING (cohort)
    WHERE activity.quarter_number BETWEEN 1 AND 4
    GROUP BY activity.cohort, activity.quarter_number
)
SELECT year(cohort) || ', ' || quarter(cohort) || ' кв.' AS cohort_label, 'Квартал ' || quarter_number AS quarter_label, round(returned, 4) AS returned
FROM returns
ORDER BY cohort, quarter_number

Когда на когортный анализ смотрят и какие решения по нему принимают

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

Из каких выгрузок и колонок берутся цифры

Нужны две колонки из истории заказов: идентификатор покупателя и дата оплаты. Первую покупку каждого покупателя относят к месяцу или кварталу, этот номер и становится меткой когорты. Дальше по каждой когорте считают, сколько ее участников купили в месяце 1, 2, 3 и далее после старта. Выгрузку строят по заказам со статусом оплаты, без отмен и возвратов, иначе когорта раздувается людьми, которые ничего не купили. Для товаров с редкой покупкой берут кварталы, как в примере вымышленного магазина с когортами «2024, 1 кв.» и «2024, 2 кв.».

Как читать результат когортного анализа

Смотрите на строку одной когорты слева направо: каждый столбец показывает долю вернувшихся через 1 месяц, 2 месяца, 3 месяца. В примере вымышленного магазина на третий месяц вернулись 14 человек из 200, это 7% когорты. Сравнивайте когорты на одинаковом сроке жизни: у свежей когорты еще нет данных за дальние месяцы, и пустая ячейка на шестом месяце не говорит о провале. В квартальной таблице примера у когорты «2024, 1 кв.» доля вернувшихся в первом квартале жизни 0.0952, во втором 0.1088, в четвертом 0.0272. Рост доли от периода к периоду бывает у товаров с длинным циклом решения, когда покупатель возвращается позже обычного.

Чем когортный анализ отличается от LTV, CAC и среднего чека

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

Частые ошибки

Сравнение когорт разной зрелости

Когорту, прожившую 12 месяцев, ставят рядом с когортой, у которой прошло 2 месяца, и делают вывод о падении возвращаемости. Сравнивайте строки на одинаковом сроке жизни: 3 месяца с 3 месяцами.

Отмены и возвраты в знаменателе

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

Месячная сетка для редких товаров

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

Один срез вместо динамики

По одной когорте видно только один сценарий, и вывод о работе изменений в цене или ассортименте сделать нельзя. Берите 3-4 когорты с данными на одинаковом сроке и смотрите, как меняется доля вернувшихся.

Вопросы

Что такое когортный анализ простыми словами?

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

Чем retention rate отличается от когортного анализа?

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

Сколько когорт нужно для вывода?

Для решения хватает 3-4 когорт с данными на одинаковом сроке жизни. Одна когорта показывает единственный сценарий и для сравнения не годится.

Можно ли делить когорты по каналам привлечения?

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

Почему в таблице когорт пустые ячейки?

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

Посчитайте это на своих выгрузках

Бросьте выгрузки на доску Surrika и задайте вопрос обычными словами. Ответ придет графиком, а под ним будет SQL, по которому он посчитан.

14 дней бесплатно, карта не нужна.

По теме

Все метрики и методы