Articles

    Когортный анализ: что это и зачем его использовать?

    Преимущества когортного анализа для вашего бизнеса и продукта

    December 27, 2025
    11 min read
    By Netpy Editorial Team
    Updated August 22, 2026

    Почему усреднённые метрики годами скрывают правду

    Отчёт говорит «Retention 20%», и это почти бесполезная цифра, потому что внутри неё смешаны люди с разным стажем в продукте: новичок первого дня, тот, кто с вами два месяца, и старожил, который остаётся три года. Когортный анализ разбирает эту усреднённую массу и смотрит, что происходит с людьми после того, как они впервые пришли, — по неделям и месяцам их собственной жизни в продукте, а не по календарю.

    Разница видна сразу. Там, где обычный отчёт показывает одно среднее число, когортный разрез покажет, что одни пользователи удерживаются на 35%, а другие — на 12%; что после переделки онбординга удержание выросло на 6 п.п.; что канал A приводит дешёвых, но плохо окупаемых людей, а канал B — дорогих, но окупаемых; и что провал случается не на привлечении, а на второй неделе использования. Ниже: механика, типы когорт, метрики, порядок построения и ошибки, из-за которых всё это ломается.

    video:youtube

    Срез или жизненный цикл: две разные оптики

    Обычная срезовая аналитика (snapshot) — это показатели за период: MAU за ноябрь, выручка за декабрь, конверсия в оплату за неделю, churn за месяц. Беда в том, что в каждой такой цифре перемешаны пользователи разного «возраста», и вы не понимаете главного: продукт действительно стал лучше или вы просто подлили трафика.

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

    Что такое когорта

    Когорта — это группа пользователей (или аккаунтов, компаний), объединённых общим событием либо условием. Чаще всего когорту формируют по времени первого касания (все, кто зарегистрировался в первую неделю января или установил приложение в марте. Реже, но не менее полезно), по источнику (пришедшие из TikTok Ads или по реферальной ссылке), по раннему поведению (создавшие три проекта за первую неделю или прошедшие онбординг до конца) и по версии продукта или эксперименту (те, кто видел новый онбординг, или попал в A/B-тест цен). Выбор признака и определяет, на какой вопрос когорта ответит.

    Как читать когортную таблицу

    Формат почти всегда один. По строкам идут когорты, например, недели регистрации. По столбцам — «возраст» когорты: неделя 0, 1, 2, 3 или день 0, 1, 7, 14. В ячейках стоит метрика: retention, выручка, конверсия, активность.

    Смысл ячейки проще всего понять на числах. Если в когорте «2025-W01» было 1000 пользователей, а на второй неделе активными остались 180, то retention этой недели равен 180 / 1000 = 18%. Ценность таблицы именно в том, что она показывает динамику по времени жизни, а не по календарю, поэтому когорты можно сравнивать честно.

    Девять задач, ради которых это делают

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

    Отсюда вытекает вторая задача — измерять эффект изменений. Выкатили новый онбординг — сравниваете когорты «до» и «после» по D1/D7/D30 retention, по скорости достижения ценностного события и по конверсии в оплату на первой-второй неделе. Похожим образом когорты сравнивают качество маркетинговых каналов, но не по CPL или CPA, а по окупаемости: дешёвый лид не равен хорошему, и retention, LTV и payback period по каналам расставляют всё по местам.

    Дальше идут более тонкие вещи. Сезонность и «пакетные» эффекты: декабрьские когорты нередко удерживаются хуже из-за праздников, а январские лучше, потому что люди «начинают новую жизнь». Дыра в жизненном цикле: типичная картина, когда D1 отличный, D7 средний, а на D14 всё резко проседает, — сигнал, что ценность одноразовая или привычка не закрепляется. Разделение проблемы продукта и проблемы привлечения: если новые когорты держатся хорошо, но роста нет — дело в acquisition; если привлечения много, а свежие когорты хуже старых — дело в продукте, аудитории или обещании в рекламе.

    Монетизацию когорты тоже разбирают по времени жизни: когда пользователь впервые платит, сколько платит к 30, 60 и 90 дню, как меняется ARPU и ARPPU от когорты к когорте. Тот же приём доказывает ценность фичи, которая всем нравится, но денег будто не приносит: разрез по признаку «сделал фичу X в первую неделю» часто показывает, что такие люди удерживаются лучше, платят чаще и дают более высокий LTV. И, наконец, устойчивые кривые удержания и выручки по когортам позволяют прогнозировать: будущую выручку, эффект от роста retention на пару пунктов, окупаемость каналов.

    Метрики, которые считают в ячейках

    Самая популярная — retention. Классическая формула для периода t: Retention(t) = ActiveUsers(t) / CohortSize, где ActiveUsers(t) — пользователи когорты, совершившие целевое действие в период t. Считают её как D1/D7/D30, как weekly или monthly. Рядом стоит rolling retention (скользящее удержание): пользователь считается удержанным, если был активен в этот день или позже. Оно полезно, когда ценность не обязана проявляться строго по расписанию и вам важна «выживаемость» когорты в целом.

    Churn — обратная сторона: Churn(t) = 1 − Retention(t). Важно, чтобы churn и retention опирались на одно и то же определение активности, иначе получится аналитическая каша.

    Когорты выручки показывают в ячейке либо ARPU, либо накопленную выручку, либо долю сделавших покупку. LTV по когортам чаще считают как накопленную выручку на пользователя к определённому возрасту: LTV_30 = cumulative revenue до 30 дня / cohort size; в подписке к этому добавляют удержание платящих, средний чек и апгрейды с даунгрейдами. Отдельно стоит смотреть активацию, не только «остался ли», но и «дошёл ли до ценности»: долю пользователей, достигших aha-момента за первые 24–72 часа, медианное время до первого ценностного события, конверсию в завершение онбординга. А когортный разрез воронки показывает конверсию по шагам (регистрация → первое действие → повторное действие → оплата) в зависимости от возраста пользователя.

    Какие когорты под какой вопрос

    Временные когорты — базовый «пульс» продукта: просты и понятны, но саму причину различий не объясняют. Канальные нужны для оптимизации маркетинга и качества трафика: они не дают переплачивать за плохие каналы, но требуют приличной атрибуции. Поведенческие («в первую неделю сделал ≥ 3 ключевых действия») ищут драйверы удержания и монетизации и отвечают на вопрос, что делает пользователя успешным, с одной оговоркой: здесь легче всего перепутать корреляцию с причинностью. Когорты по эксперименту или версии («новый онбординг против старого») ближе всего к причинности, но требуют аккуратного сбора данных и неизменных определений событий.

    В B2B единицей анализа часто должен быть не пользователь, а аккаунт: «аккаунты, созданные в январе», «аккаунты, где активировано три места», «аккаунты, где подключён интеграционный коннектор». Спутаете user и account — исказите и retention, и LTV.

    Порядок построения

    Всё начинается с бизнес-вопроса в измеримом виде. «Как у нас retention?» — плохой вопрос. «Выросло ли удержание новых пользователей после обновления онбординга?», «какой канал даёт лучший D30 retention?», «какое раннее поведение предсказывает оплату?» — рабочие.

    Дальше выбирают единицу анализа: user_id, device_id (осторожно, если нет логина), account_id для B2B, subscription_id для подписок — ошибка здесь ломает всё остальное. Затем определяют событие, формирующее когорту: обычно signup, install или first_open, иногда first_purchase или первое событие активации; «первая дата» должна быть однозначной. Параллельно задают целевое событие активности, и это не «заходил», если ценность продукта не в заходе. Лучше брать событие, близкое к ценности: создал проект, отправил сообщение, сделал оплату, сгенерировал отчёт, загрузил файл.

    Остаётся выбрать гранулярность времени: для B2C это дни и недели, для B2B недели и месяцы; слишком мелко даёт шум, слишком крупно съедает сигнал. После этого считается сама таблица: метрика по каждой когорте в разрезе возраста. И последний шаг, который чаще всего пропускают, — интерпретация. Таблица показывает, где отличается, но не почему; причину вытаскивают сегментацией (канал, гео, устройство, план), качественными исследованиями, разбором изменений в продукте и экспериментами.

    Мини-пример расчёта

    Пусть когорты нарезаны по неделе регистрации. В первой когорте 1000 регистраций; на второй неделе активны 250, на третьей — 180, на четвёртой — 150. Тогда W1 retention (неделя 2) = 250/1000 = 25%, W2 retention (неделя 3) = 180/1000 = 18%, W3 retention (неделя 4) = 150/1000 = 15%. Если следующая когорта (Неделя 2) даёт W1 = 30%, W2 = 22%, W3 = 20% — качество новой когорты явно выросло, и это видно без всякой статистики.

    Где искать рычаги роста

    Когорта — не отчёт ради отчёта, а способ нащупать рычаг. Где именно проседает кривая, туда и указывает, что чинить:

    • Провал между week0 и week1 почти всегда означает, что люди не доходят до первого результата: рычаг здесь во времени до ценностного события, доле дошедших до aha и шагах онбординга с самым большим отвалом.
    • Провал на второй-третьей неделе — это про привычку: нет повода вернуться, продукт не встроен в рутину, ценность одноразовая; работают частота ключевого действия, повторяемость сценария и триггеры возврата: уведомления, задачи, контент.
    • Удержание в порядке, а денег мало — тогда дело в монетизации: слабый paywall, неверная цена, непоказанная ценность платных функций, кривая упаковка, и разбирают это через конверсию в оплату по возрасту, накопительные когорты выручки и апгрейды с даунгрейдами.

    Из-за чего когорты начинают врать

    Первая ловушка — определить активность как любой визит. В части продуктов «зашёл» не равно «получил ценность», и тогда retention выглядит нормально, а продукт не растёт. Вторая — смешать единицы анализа: если один человек ходит с двух устройств, а вы считаете device_id за пользователей, retention и LTV поедут. Третья — забыть про правую цензуру: свежая когорта физически не может иметь D30, ей ещё нет тридцати дней, и сравнивать полные данные с неполными без пометок нельзя.

    Дальше идёт размер. В когорте на 50 человек один случайный крупный клиент искажает выручку; лечится минимальным размером когорты, укрупнением дней до недель и доверительными интервалами, если умеете их строить. Отдельная беда — молча поменять определение события «active user» и «улучшить retention на бумаге»: определения нужно фиксировать как договорённости и версионировать трекинг, иначе вы сравниваете разные вещи. Не забывайте и про внешние факторы: сезонность, промо, сбои, изменения в каналах порой двигают когорты сильнее любой фичи. И самое коварное — путаница корреляции и причинности в поведенческих когортах: «те, кто сделал три действия, держатся лучше» может значить, что действие полезно, а может — что это и так были сильные пользователи. Развести одно от другого помогает только эксперимент (подтолкнуть часть людей к действию) или контролируемая сегментация.

    Как это выглядит в SQL

    Упрощённая схема weekly retention по дате регистрации и событию активности:

    -- Пример: weekly retention по когорте регистрации
    WITH cohort AS (
      SELECT
        user_id,
        DATE_TRUNC(MIN(event_time), WEEK) AS cohort_week
      FROM events
      WHERE event_name = 'signup'
      GROUP BY user_id
    ),
    activity AS (
      SELECT
        e.user_id,
        DATE_TRUNC(e.event_time, WEEK) AS activity_week
      FROM events e
      WHERE e.event_name = 'key_action'  -- событие ценности
    ),
    joined AS (
      SELECT
        c.cohort_week,
        a.activity_week,
        DATE_DIFF(a.activity_week, c.cohort_week, WEEK) AS age_week,
        c.user_id
      FROM cohort c
      JOIN activity a
        ON a.user_id = c.user_id
      WHERE DATE_DIFF(a.activity_week, c.cohort_week, WEEK) >= 0
    ),
    cohort_size AS (
      SELECT cohort_week, COUNT(DISTINCT user_id) AS users
      FROM cohort
      GROUP BY cohort_week
    ),
    retention AS (
      SELECT
        cohort_week,
        age_week,
        COUNT(DISTINCT user_id) AS active_users
      FROM joined
      GROUP BY cohort_week, age_week
    )
    SELECT
      r.cohort_week,
      r.age_week,
      r.active_users,
      cs.users AS cohort_users,
      SAFE_DIVIDE(r.active_users, cs.users) AS retention_rate
    FROM retention r
    JOIN cohort_size cs USING (cohort_week)
    ORDER BY r.cohort_week, r.age_week;
    

    Под конкретный продукт подстраивают четыре вещи: событие формирования когорты (signup/install/first_purchase), событие ценности (key_action), единицу анализа (user_id/account_id) и гранулярность (DAY/WEEK/MONTH).

    Проверка готовности и здравого смысла

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

    Читая готовую таблицу, держите в голове несколько простых правил. Сравнивайте только когорты одного типа с одинаковыми определениями. Помните о неполных периодах у свежих когорт и о шуме на маленьких размерах. Не делайте причинных выводов без проверки и всегда смотрите разрезы — канал, гео, устройство, план. А если retention падает именно у новых когорт, проверяйте в таком порядке: изменения в привлечении (новые каналы, аудитории, обещания), качество онбординга и time-to-value, баги, перформанс и краши, не сломалось ли само событие активности, и обязательно сегментируйте, чтобы увидеть, где просадка сильнее.

    Три сценария, где эффект приходит быстро

    Много регистраций, а продукт не растёт: когортная таблица обычно показывает либо нормальный D1 при низком D7 (не закрепили привычку), либо низкий D1 (люди не доходят до ценности), и вы сразу знаете, копать ли в онбординг или в engagement. «Все говорят, что новый онбординг классный» — сравниваете когорты до и после по доле дошедших до ключевого действия, по времени до него и по D7/D30, и очень часто «нравится» оказывается не равно «работает». Спор маркетинга и продукта о том, кто виноват в падении выручки, когортный разрез по каналам и возрасту превращает в диагностику: либо просел вход (качество когорт), либо продукт стал хуже удерживать новых везде.

    Не отчёт, а привычка

    Сильнее всего когортный анализ работает не как разовая выгрузка, а как постоянный монитор: раз в неделю смотреть свежие когорты по ранним метрикам, раз в месяц — зрелые по D30/D60/D90, и каждый раз связывать изменения продукта и маркетинга с формой кривых. Заведите этот ритм, и команда перестанет жить средними цифрами и начнёт видеть, какие именно решения меняют траекторию пользователей. С этого стоит начать уже на ближайшей неделе: выбрать одно ценностное событие и построить первую таблицу удержания на нём.

    Похожие статьи