Настройка когортного анализа мобильного приложения
Retention — самая важная метрика продукта. Day-1 retention 40% и Day-7 retention 20% означают разные продукты с разными проблемами. Когортный анализ отвечает на вопрос: как ведут себя пользователи, которые установили приложение в одну и ту же неделю, через 1, 7, 14, 30 дней?
Агрегированный DAU скрывает деградацию: если новые пользователи приходят быстрее, чем уходят старые, DAU растёт — а retention падает. Когорты это показывают.
Что нужно для когортного анализа
Два обязательных условия: стабильный user_id и событие активации. Без них когорта не строится корректно.
User ID должен быть одинаковым при переустановке приложения — если каждый раз генерировать новый, пользователь всегда будет в «новой» когорте. Решения:
- iOS:
Keychainдля хранения сгенерированного UUID (переживает удаление приложения) - Android:
AccountManagerили server-side ID после регистрации - После авторизации:
Analytics.setUserId(serverUserId)→ пользователь привязывается к аккаунту
Событие активации — первое действие, которое показывает ценность продукта. Для разных приложений разное:
| Тип приложения | Событие активации |
|---|---|
| Маркетплейс | first_purchase |
| Стриминг | content_played (3+ минуты) |
| Фитнес | workout_completed |
| Игра | level_2_started |
| Соцсеть | first_post или 5_connections |
Выбор события активации влияет на то, что показывает когорта. app_open — слишком широко, включает случайных пользователей. premium_purchase — слишком узко для анализа retention всей аудитории.
Реализация когортного анализа
Firebase / BigQuery
Firebase сам строит Retention Chart в разделе Analytics, но с ограниченной гибкостью. Для глубокого анализа — экспортируем сырые данные в BigQuery через Firebase → Integrations → BigQuery. Дальше SQL:
-- Когорта по неделям установки, retention на 7-й день
WITH cohorts AS (
SELECT
user_pseudo_id,
DATE_TRUNC(MIN(PARSE_DATE('%Y%m%d', event_date)), WEEK) AS cohort_week,
MIN(event_timestamp) AS first_open_ts
FROM `project.analytics_*.events_*`
WHERE event_name = 'first_open'
GROUP BY user_pseudo_id
),
activity AS (
SELECT DISTINCT
user_pseudo_id,
DATE_TRUNC(PARSE_DATE('%Y%m%d', event_date), WEEK) AS activity_week
FROM `project.analytics_*.events_*`
WHERE event_name = 'session_start'
)
SELECT
c.cohort_week,
DATE_DIFF(a.activity_week, c.cohort_week, WEEK) AS week_number,
COUNT(DISTINCT c.user_pseudo_id) AS cohort_size,
COUNT(DISTINCT a.user_pseudo_id) AS retained_users,
ROUND(COUNT(DISTINCT a.user_pseudo_id) / COUNT(DISTINCT c.user_pseudo_id) * 100, 1) AS retention_pct
FROM cohorts c
LEFT JOIN activity a ON c.user_pseudo_id = a.user_pseudo_id
GROUP BY 1, 2
ORDER BY 1, 2
Этот запрос даёт retention-таблицу по неделям.
Amplitude
В Amplitude когортный анализ — нативный инструмент в разделе Retention Analysis. Настраиваем:
-
Starting Event —
first_openили событие активации -
Return Event —
session_startилиapp_open - Группировка по дням/неделям
- Breakdown по: источнику установки, платформе, версии приложения
Amplitude позволяет сравнивать когорты бок о бок — удобно видеть, улучшился ли retention после продуктового обновления.
Mixpanel
В Mixpanel раздел Retention строит классическую retention-матрицу. Дополнительно есть Lifecycle — показывает, какой процент пользователей «воскресает» после длительного отсутствия. Для казуальных игр это важная метрика.
Поведенческие когорты
Кроме временных когорт (по дате установки) полезны поведенческие когорты — группы пользователей, совершивших определённое действие:
# Пример логики в BigQuery:
# Когорта: пользователи, завершившие онбординг
# Вопрос: каков их retention vs пользователи, которые пропустили онбординг?
Если retention у завершивших онбординг в 2 раза выше — это доказательство, что онбординг нужно улучшать, а не сокращать.
Что входит в работу
- Аудит user_id стабильности в текущей реализации
- Определение событий активации совместно с продукт-менеджером
- Настройка когортного анализа в Firebase + BigQuery / Amplitude / Mixpanel
- SQL-запросы для кастомных когортных отчётов
- Настройка поведенческих когорт для ключевых гипотез
- Документация и передача команде
Сроки
Настройка когортного анализа в готовом инструменте (Amplitude/Mixpanel): 1–2 дня. BigQuery + кастомные SQL-запросы: 2–4 дня. Стоимость рассчитывается индивидуально.







