Ми часто бачимо, як команди орієнтуються на DAU, але не помічають, що retention падає. Наш досвід показує: day-1 retention 40% і day-7 retention 20% — ознаки різних проблем. Когортний аналіз — єдиний спосіб побачити реальну поведінку користувачів. Він показує, як поводяться користувачі одного тижня встановлення через 7, 14, 30 днів після першого запуску. Агрегований DAU приховує деградацію: якщо нові користувачі приходять швидше, ніж ідуть старі, DAU зростає — а утримання падає. Когорти це показують. Поняття когортного аналізу широко використовується в мобільній аналітиці. Однак на практиці стикаються з типовими помилками: нестабільний ідентифікатор користувача, неправильний вибір першої цінної дії, відсутність розбивки за версіями. Ці проблеми спотворюють дані, вводячи команду в оману. Зв'яжіться з нами, щоб налаштувати когортний аналіз коректно.
Що потрібно для когортного аналізу
Дві обов'язкові умови: стабільний user_id і подія активації. Без них когорта не будується коректно. Економія на рекламному бюджеті після точного налаштування може досягати 20%.
User ID має бути однаковим при перевстановленні застосунку. Якщо генерувати новий щоразу, користувач завжди буде в новій когорті. Рішення:
- iOS: Keychain для зберігання згенерованого UUID (переживає видалення застосунку)
- Android: AccountManager або server-side ID після реєстрації
- Після авторизації: Analytics.setUserId(serverUserId) — користувач прив'язується до акаунту
Порада: перевірте, чи зберігається ID при перевстановленні
Встановіть тестовий білд, видаліть застосунок і перевстановіть. Якщо user_id залишився тим самим — все гаразд. Якщо ні — налаштуйте Keychain або AccountManager.
Подія активації — перша дія, яка показує цінність продукту. Для різних застосунків різна:
| Тип застосунку |
Подія активації |
| Маркетплейс |
first_purchase |
| Стрімінг |
content_played (3+ хвилини) |
| Фітнес |
workout_completed |
| Гра |
level_2_started |
| Соцмережа |
first_post або 5_connections |
Вибір події активації впливає на те, що показує когорта. app_open — занадто широко, включає випадкових користувачів. premium_purchase — занадто вузько для аналізу утримання всієї аудиторії.
Чому важливий stable user_id?
Без стабільного ідентифікатора ви не зможете відрізнити нового користувача від того, хто повернувся після перевстановлення. Це призводить до завищення кількості нових користувачів і заниження утримання. Ми гарантуємо правильне налаштування Keychain та AccountManager на основі вашої платформи. За нашими даними, 90% клієнтів до налаштування мали нестабільність user_id, що спотворювало когорти на 50% і більше. Отримайте аудит поточної аналітики — оцінимо стабільність user_id та коректність подій безкоштовно.
Як вибрати подію активації?
Подія активації має відображати перший момент, коли користувач отримує користь. Наприклад, для фітнес-застосунку це workout_completed, а не app_open. Один із наших клієнтів (фітнес-застосунок) після налаштування когорт за workout_completed виявив, що утримання у тих, хто завершив перше тренування в перші 2 дні, на 30% вище. Ми змінили онбордінг, підштовхуючи до першого тренування, і retention виріс на 15% за місяць. Зверніться за консультацією, щоб підібрати подію активації для вашого застосунку.
Реалізація когортного аналізу
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 дозволяє порівнювати когорти поруч — зручно бачити, чи покращилося утримання після продуктового оновлення.
Mixpanel
У Mixpanel розділ Retention будує класичну retention-матрицю. Додатково є Lifecycle — показує, який відсоток користувачів повертається після тривалої відсутності. Для казуальних ігор це важлива метрика.
Порівняння інструментів для когортного аналізу
| Критерій |
Firebase + BigQuery |
Amplitude |
Mixpanel |
| Гнучкість |
Висока (SQL) |
Середня (UI) |
Середня (UI) |
| Поведінкові когорти |
SQL |
Нативні |
Lifecycle |
| Складність налаштування |
Висока |
Низька |
Низька |
| Вартість |
Запити в BigQuery |
Підписка |
Підписка |
Поведінкові когорти
Крім часових когорт (за датою встановлення) корисні поведінкові когорти — групи користувачів, які виконали певну дію. Наприклад, в Amplitude Behavioural Cohorts можна сегментувати користувачів за діями: "додав у кошик", "поділився контентом".
# Приклад логіки в BigQuery:
# Когорта: користувачі, які завершили онбордінг
# Питання: який їхній retention vs користувачі, які пропустили онбордінг?
Якщо утримання у тих, хто завершив онбордінг, в 2 рази вище — це доказ, що онбордінг потрібно покращувати, а не скорочувати.
Типові проблеми при налаштуванні когортного аналізу
- Нестабільний user_id — дані спотворені.
- Неправильна подія активації — когорта не відображає цінність.
- Використання лише app_open як повернення — змішуються сесії та активні користувачі.
- Відсутність breakdown за версіями — не видно ефекту оновлень.
Наш досвід включає налаштування когортного аналізу для застосунків з аудиторією від 10 000 до 5 млн користувачів. Ми гарантуємо коректне відображення retention та LTV.
Що входить у роботу
- Аудит стабільності user_id в поточній реалізації
- Визначення подій активації спільно з продакт-менеджером
- Налаштування когортного аналізу в Firebase + BigQuery / Amplitude / Mixpanel
- SQL-запити для кастомних когортних звітів
- Налаштування поведінкових когорт для ключових гіпотез
- Документація та передача команді
Строки
Налаштування когортного аналізу в готовому інструменті (Amplitude/Mixpanel): 1–2 дні. BigQuery + кастомні SQL-запити: 2–4 дні. Вартість розраховується індивідуально.
Отримайте аудит поточної аналітики — оцінимо стабільність user_id та коректність подій безкоштовно.
Аналітика мобільних застосунків: Firebase, Amplitude, AppsFlyer та атрибуція
Наша команда регулярно стикається з проектами, де аналітика вже «налаштована», але реальних інсайтів немає. Типовий приклад — стартап з 50k DAU: трекінг десятків подій без жодної відповіді на питання «чому користувачі не доходять до оплати». За два тижні ми побудували базову воронку і з'ясували, що 70% аудиторії відвалюється на екрані верифікації номера телефону. Після локалізації бага retention зріс на 12%. Висновок: аналітика повинна починатися з конкретних питань, а не з трекінгу всього підряд.
Чому таксономія подій — основа аналітики мобільних застосунків?
Firebase Analytics, Amplitude, Mixpanel — технічно схожі. Різниця в тому, що ви в них кладете. Типова помилка: події screen_view, button_tap_1, button_tap_2 без контексту. Через місяць ніхто не пам'ятає, що таке button_tap_2.
Правильна таксономія: об'єкт + дія + контекст. product_viewed, checkout_started, payment_completed з параметрами product_id, category, price, source. Це дозволяє будувати воронки, когортний аналіз та retention без додаткового трекінгу.
Ми фіксуємо naming convention у tracking plan — документі (Google Sheet або Amplitude Data Catalog), де описано кожну подію, її параметри та умови спрацьовування. Tracking plan синхронізується з командою аналітиків до початку розробки, а не після. Такий підхід гарантує, що через місяць дані залишаться інтерпретованими, а не перетворяться на звалище. Досвід впровадження на 50+ проектах підтверджує: при відсутності tracking plan вартість підтримки аналітики зростає у 2-3 рази за рахунок переробок.
Що обрати для аналітики мобільних застосунків: Firebase, Amplitude чи Mixpanel?
Таблиця нижче показує ключові відмінності трьох популярних платформ. Вибір залежить від бюджету, трафіку та завдань.
| Критерій |
Firebase Analytics |
Amplitude |
Mixpanel |
| Безкоштовний ліміт |
Безліміт (в рамках Spark-плану) |
До 10 млн events/міс |
До 1 тис. MTU/міс (Special) |
| Затримка даних |
До 24 годин (стандарт) |
Хвилини (real-time) |
Хвилини (real-time) |
| Воронки та когорти |
Базові воронки, обмежена кількість |
Глибокі воронки, Journeys, когорти |
Funnels, Retention, Insights |
| BigQuery-експорт |
Так (безкоштовно, сирі дані) |
Так (підписка) |
Так (Enterprise) |
| Session Replay |
Ні |
Є (iOS/Android SDK) |
Ні |
| Інтеграція з рекламою |
Google Ads (нативна) |
Через Universal Links |
Через партнерів |
Firebase Analytics — безкоштовно, глибока інтеграція з Google Ads, BigQuery-експорт для сирих даних. Обмеження: затримка даних до 24 годин, обмежені воронки. Для стартапів з Google Ads трафіком — перший вибір.
Amplitude — продуктова аналітика з акцентом на когорти та шляхи користувача. Journeys (колишній Pathfinder) показує реальні шляхи між подіями — не передбачувані воронки, а фактичні маршрути. Session Replay — запис сесій для UX-аналізу. Безкоштовний тир до 10 млн events/місяць достатній для більшості продуктів на старті.
Mixpanel — ближче до Amplitude, сильніший у сегментації в реальному часі. Insights, Funnels, Retention — базові інструменти, які закривають 90% аналітичних завдань продакта.
Більш формальні визначення цих платформ можна знайти у Wikipedia (Firebase) та Wikipedia (Amplitude).
Як вирішити проблему мультиканальної атрибуції з AppsFlyer?
Знати звідки прийшов користувач — окреме завдання. Firebase Attribution працює лише всередині Google-екосистеми. Для мультиканальної атрибуції (Facebook Ads, TikTok, Apple Search Ads, programmatic) потрібен MMP — Mobile Measurement Partner.
AppsFlyer — лідер ринку. OneLink — universal deep link, який працює на iOS та Android і коректно атрибутує встановлення з будь-якого каналу. Protect360 — вбудований захист від fraud (фейкові встановлення, click injection на Android). Adjust та Branch — конкуренти з подібним функціоналом. Branch сильний у deep linking; Adjust популярний у gaming.
Згідно з Apple, з iOS 14.5 застосунки повинні отримувати дозвіл користувача через ATT перед збором IDFA для відстеження. AppsFlyer використовує probabilistic matching (IP + user agent + timing) для цих користувачів — точність нижча, але краще ніж нічого. SKAdNetwork та Privacy Preserving Attribution надають агреговані дані від Apple із затримкою 24-72 години.
Як налаштувати crash-аналітику, щоб не пропускати баги?
Firebase Crashlytics — стандарт для crash reporting. Автоматично групує креші за стектрейсом, показує affected users %, velocity alerts при зростанні crash rate більш ніж на 10% за годину.
Важливо: символікація. На iOS .dSYM файли повинні автоматично завантажуватися при кожній збірці — через Fastlane upload_symbols_to_crashlytics або Xcode Cloud built-in. Без символів креш у Crashlytics виглядає як набір адрес пам'яті. Це трапляється частіше, ніж здається при переході на новий CI — в одному проекті з аудиторією 500k користувачів ми виявили, що 40% крешів залишалися несимволізованими через пропущений етап у CI/CD. Після автоматизації час реакції на баги скоротився з 3 годин до 15 хвилин.
Для React Native та Flutter — @sentry/react-native та sentry_flutter дають додатковий контекст: breadcrumbs, мережеві запити перед крешем, стан Redux/Provider.
Нижче — порівняння популярних інструментів crash-аналітики для вибору під свої завдання.
| Критерій |
Firebase Crashlytics |
Sentry |
Instabug |
| Безкоштовний ліміт |
Безліміт (в рамках Spark) |
5k events/міс |
250 MAU |
| Групування |
За стектрейсом + параметри |
За fingerprint |
За стектрейсом + метадані |
| Символікація |
Автоматична (через файл) |
Автоматична (через CLI) |
Автоматична |
| Velocity alerts |
Так (за % зміни) |
Так (за кількістю) |
Так (за порогом) |
| Дод. контекст |
Logs, Keys, Custom Keys |
Breadcrumbs, User, Tags |
User steps, мережеві запити |
| Ціна |
Безкоштовно (у Firebase) |
Від $26/міс (Team) |
Від $99/міс |
Налаштування оточення
Три оточення з окремими Firebase проектами: dev, staging, production. Змішувати аналітику з тестових сесій і production — поширена помилка, яка спотворює всі метрики. На iOS через GoogleService-Info.plist для кожної схеми, на Android через google-services.json у папці кожного flavor.
Терміни: базова аналітика з Firebase + Crashlytics — 3-5 днів. Повноцінний tracking plan + Amplitude/Mixpanel з воронками та когортами — 2-3 тижні. Атрибуція через AppsFlyer з deep linking та fraud protection — 1-2 тижні. Вартість розраховується індивідуально залежно від складності інтеграцій.
Що входить у нашу роботу
В рамках впровадження аналітики ми надаємо:
- Розробку та узгодження tracking plan з командами продукту та маркетингу.
- Інтеграцію SDK (Firebase, Amplitude, Mixpanel, AppsFlyer) з урахуванням вашого стеку (Swift/Kotlin/Flutter/React Native).
- Налаштування воронок, когорт, дашбордів та алертів.
- Автоматизацію символікації та завантаження .dSYM через Fastlane.
- Документацію щодо подій та параметрів.
- Навчання команди роботі з аналітичною платформою.
- Два тижні пост-релізної підтримки та коригування трекінгу.
Наш досвід — 7 років впровадження аналітики та понад 80 успішних проектів у сфері мобільної розробки. Ми гарантуємо коректність даних і прозорість кожного етапу.
Зв'яжіться з нами, щоб отримати консультацію з налаштування аналітики вашого застосунку. Замовте аудит поточної аналітики — і ми покажемо, які метрики ви втрачаєте.