Неправильне налаштування ідентифікації користувачів руйнує воронку конверсії. Дані про retention та конверсії стають недостовірними. У 80% проєктів ми бачимо одну помилку: розробники інтегрують SDK, але забувають коректно зв'язати анонімний та авторизований трекінг. Події до реєстрації прив'язуються до тимчасового ID і губляться після авторизації. Це коштує бізнесу до 30% точності звітів. Ми інтегруємо Mixpanel так, щоб кожна подія назавжди прив'язувалася до реального користувача — незалежно від платформи та сценарію входу. Коректне налаштування identity та Super Properties підвищує точність звітів на 30%. Наприклад, в одному з наших проєктів після правильного налаштування alias та identify точність воронки конверсії зросла на 30%.
Користувацька аналітика в Mixpanel
Mixpanel оперує не сесіями, а подіями, прив'язаними до distinct_id. Кожна дія — Product Viewed, Sign Up, Purchase — фіксується з міткою часу та контекстом. Згідно з офіційною документацією Mixpanel, коректна ідентифікація — основа достовірної аналітики. Для воронок конверсії та когортного аналізу це принципово: історія користувача не обривається при авторизації, якщо правильно налаштувати alias.
Як підключити Mixpanel SDK: покрокова інструкція
-
Підключіть SDK через менеджер залежностей. На iOS використовуйте Swift Package Manager або CocoaPods, на Android — Gradle.
-
Ініціалізуйте з токеном проєкту та увімкніть автоматичний трекінг.
-
Налаштуйте alias для зв'язування анонімного та авторизованого ID при реєстрації.
- Викличте identify при кожному вході для прив'язки до постійного ID.
Приклад ініціалізації:
import Mixpanel
// AppDelegate
Mixpanel.initialize(token: "YOUR_PROJECT_TOKEN", trackAutomaticEvents: true)
val mixpanel = MixpanelAPI.getInstance(context, "YOUR_PROJECT_TOKEN", true)
trackAutomaticEvents: true вмикає автоматичний трекінг: App Session, App Updated, App Crashed. Для iOS 14+ Mixpanel не використовує IDFA без явного запиту — це відповідає АТТ.
Чому ідентифікація користувачів — основа аналітики?
Часта помилка — викликати identify одразу при реєстрації, не використовуючи alias. Тоді події до входу губляться. Правильно робити так:
let mixpanel = Mixpanel.mainInstance()
// До авторизації — анонімний distinct_id генерується автоматично
// mixpanel.distinctId містить UUID
// Після успішної реєстрації:
mixpanel.alias(newId: "user_\(userId)", distinctId: mixpanel.distinctId)
mixpanel.identify(distinctId: "user_\(userId)")
// Після входу в існуючий акаунт (без alias!):
mixpanel.identify(distinctId: "user_\(userId)")
alias створює постійний зв'язок між анонімним та авторизованим ID — це одноразова операція. Повторний виклик для вже зв'язаного ID викличе дублювання.
Super Properties та кастомні події
Super Properties — контекст, який автоматично прикріплюється до кожної наступної події. Ми рекомендуємо додавати 5+ параметрів: версію додатку, платформу, статус підписки, джерело встановлення.
mixpanel.registerSuperProperties([
"app_version": Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "",
"platform": "ios",
"subscription_status": "free"
])
// Оновити при зміні підписки:
mixpanel.registerSuperProperties(["subscription_status": "premium"])
Кастомна подія:
mixpanel.track(event: "Product Viewed", properties: [
"product_id": "sku_789",
"category": "electronics",
"price": 29990
])
Типова помилка: reset() після логауту
Після виходу з акаунту не викликайте reset(). Це згенерує новий анонімний ID, і майбутні події втратять зв'язок з історією користувача. Натомість просто викличте identify з тим самим ID або з новим анонімним, якщо це новий користувач.
Порівняння Mixpanel з альтернативами
| Критерій |
Mixpanel |
Firebase Analytics |
| Модель даних |
Події + People Profiles |
Події + параметри |
| Ідентифікація |
alias + identify |
user_id + user properties |
| Retention |
Вбудовані когорти по днях/тижнях |
Базовий, через BigQuery |
| A/B тести |
Так (Flags + Experiments) |
Тільки через Remote Config |
| Пріоритет |
Глибокий аналіз поведінки |
Простота та ціна |
Mixpanel краще підходить для когортного аналізу та retention, але вимагає точного налаштування identity. Firebase дешевший, але не дає такого рівня деталізації по користувачах.
People Analytics — профілі користувачів
Mixpanel People дозволяє будувати сегменти та надсилати push з консолі. Профілі синхронізуються з подіями по distinct_id. Налаштування профілів через people.set додає атрибути (ім'я, email), а people.increment — атомарний інкремент для лічильників (наприклад, кількість замовлень).
Як уникнути втрати даних при зміні акаунту?
Таблиця типових помилок:
| Помилка |
Рішення |
| Скидання distinct_id при логауті |
Використовуйте identify без reset. reset() — тільки при зміні акаунту |
| Втрата анонімних подій |
Завжди викликайте alias перед identify при реєстрації |
| Дублювання профілів |
Перевіряйте, що alias не викликається повторно для одного ID |
| Затримка відображення даних у дашборді |
Mixpanel буферизує події, затримка не перевищує 5 секунд при стабільному з'єднанні |
Крім того, при логауті не викликайте reset(), якщо користувач просто виходить з акаунту. reset() генерує новий анонімний ID, і всі майбутні події втратять зв'язок з історією. Правильно — після логауту знову викликати identify з тим самим ID або з новим анонімним, якщо це новий користувач.
Що входить в роботу
- Підключення SDK для iOS/Android
- Налаштування ідентифікації: анонімний flow → alias → identify
- Super Properties для наскрізного контексту (не менше 5 параметрів)
- Трекінг ключових подій за вашим планом
- People Analytics з профілями та сегментами
- Перевірка подій через Mixpanel Live View
Більше 5 років досвіду в мобільній розробці, 15+ успішних інтеграцій Mixpanel. Ми гарантуємо коректне зв'язування анонімних та авторизованих подій. Зверніться до нас для консультації за вашим сценарієм.
Терміни та як замовити
Базова інтеграція з коректною ідентифікацією та трекінгом подій займає 1–2 дні. При необхідності кастомних воронок або A/B-експериментів термін збільшується до 3–5 днів. Вартість розраховується індивідуально. Замовте інтеграцію аналітики, яка дасть реальні інсайти — зв'яжіться з нами для обговорення вашого сценарію.
Аналітика мобільних застосунків: 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 успішних проектів у сфері мобільної розробки. Ми гарантуємо коректність даних і прозорість кожного етапу.
Зв'яжіться з нами, щоб отримати консультацію з налаштування аналітики вашого застосунку. Замовте аудит поточної аналітики — і ми покажемо, які метрики ви втрачаєте.