Проблема: GAID йде — атрибуція залишається
Ваш додаток покладається на GAID для атрибуції встановлень та конверсій. Google поетапно замінює GAID на Privacy Sandbox APIs — вони зберігають конфіденційність, але ламають звичні пайплайни. Ми (команда з 7+ роками досвіду в мобільній розробці) вже налаштували Attribution Reporting API для десятків додатків з мінімальними втратами даних. Показуємо, як адаптувати атрибуцію без порушення правил Google Play та зі збереженням бюджетів.
Перехід на Privacy Sandbox — не просто технічна заміна одного API іншим. Він змінює всю логіку атрибуції: замість детермінованих ідентифікаторів — агреговані дані з шумом. Це потребує нових підходів до аналітики, постбеків та оптимізації кампаній. Без правильного налаштування ви ризикуєте втратити до 30% даних про конверсії. Але при грамотному впровадженні втрати мінімальні — менше 5% згідно з нашими тестами.
Чим Privacy Sandbox Attribution відрізняється від GAID?
З GAID атрибуція була детермінованою: рекламна мережа отримувала точний ідентифікатор пристрою. Privacy Sandbox працює інакше — дані агрегуються на пристрої, а не на сервері. Рекламна мережа отримує statistical noise (диференційна приватність), але не конкретні записи. Це змінює підхід до аналітики та оптимізації кампаній.
| Параметр |
GAID |
Privacy Sandbox Attribution |
| Ідентифікатор |
Унікальний ID пристрою |
Відсутній (шум + агрегація) |
| Тип даних |
User-level (точні кліки/встановлення) |
Агреговані + шум (до 3 біт на подію) |
| Затримка |
Реальний час |
2–30 днів (event-level) |
| Платформа |
Всі Android |
Android 13+ (SDK 33) |
| Серверна інфраструктура |
Не потрібна |
Aggregation Service (опціонально) |
Як ми налаштовуємо Privacy Sandbox Attribution?
Мінімальні вимоги: Android 13+ (SDK 33), дозвіл android.permission.ACCESS_ADSERVICES_ATTRIBUTION, файл res/xml/ad_services_config.xml з увімкненою атрибуцією.
Приклад маніфесту:
<uses-permission android:name="android.permission.ACCESS_ADSERVICES_ATTRIBUTION" />
<application>
<property
android:name="android.adservices.AD_SERVICES_CONFIG"
android:resource="@xml/ad_services_config" />
</application>
res/xml/ad_services_config.xml:
<ad-services-config>
<attribution shouldAllowAdServicesApi="true" />
</ad-services-config>
Покрокова інтеграція з MMP
Розгорніть для покрокової інструкції
- Виберіть MMP SDK, що підтримує Privacy Sandbox: AppsFlyer 6.10+, Adjust 4.36+.
- Додайте дозволи та конфігурацію Ad Services в маніфесті.
- Ініціалізуйте SDK з підтримкою Privacy Sandbox (SDK самі обробляють реєстрацію source/trigger).
- Зареєструйте тригери для ключових подій: встановлення, покупка, реєстрація. Приклад для AppsFlyer:
AppsFlyerLib.getInstance().init(devKey, conversionListener, context)
AppsFlyerLib.getInstance().start(context)
- Протестуйте на емуляторі Android 13+ з увімкненим Privacy Sandbox. Використовуйте adb для реєстрації тестового source і перевірте, що trigger реєструється через
MeasurementManager.
Для зворотної сумісності з Android 12 і нижче код повинен перевіряти версію ОС: на старих пристроях використовуйте GAID, на нових — Privacy Sandbox. MMP SDK автоматично вибирають правильний метод, якщо версія SDK підтримує динамічне перемикання.
Як зареєструвати тригер конверсії?
Після доставки реклами або in-app події викликаємо MeasurementManager.registerTrigger():
import android.adservices.measurement.MeasurementManager
import android.adservices.measurement.TriggerRequest
import android.net.Uri
import androidx.annotation.RequiresApi
@RequiresApi(33)
fun reportConversion(eventType: String, revenue: Double) {
val measurementManager = MeasurementManager.get(context)
// Використовуйте реальний endpoint вашої рекламної мережі
val triggerRequest = TriggerRequest.Builder(Uri.parse("https://real-ad-network.com/trigger")).build()
measurementManager.registerTrigger(
triggerRequest,
Executors.newSingleThreadExecutor()
) { outcomeReceiver ->
// outcomeReceiver.result = true при успішній реєстрації
}
}
Тригер матчиться з раніше зареєстрованим source на пристрої. Система сама вирішує, який source до якого trigger віднести, і відправляє звіт із затримкою. Згідно з документацією Google Developer, цей механізм гарантує приватність без втрати атрибуційних даних для рекламодавця.
Event-level vs Aggregatable: що обрати?
Event-level звіти налаштовуються в 3 рази швидше, не потребують серверної інфраструктури і підходять для більшості сценаріїв з об'ємом до 1000 конверсій на день. Якщо ваш додаток генерує більше — використовуйте Aggregatable звіти через Aggregation Service в TEE. Ми налаштовували Aggregation Service для клієнта з 50 000+ встановлень на місяць: перехід скоротив розбіжність даних на 40%.
| Тип звіту |
Об'єм даних |
Затримка |
Інфраструктура |
Коли використовувати |
| Event-level |
до 3 біт/подія |
2–30 днів |
Не потрібна |
До 1000 конверсій/день, тестування |
| Aggregatable |
Сумарні метрики |
~24 години |
Aggregation Service (TEE) |
Від 1000 конверсій/день, точні звіти |
Що входить в налаштування під ключ?
- Додавання дозволів та конфігурації Ad Services
- Інтеграція MMP SDK (AppsFlyer 6.10+ / Adjust 4.36+)
- Реєстрація тригерів для ключових подій (встановлення, покупка, реєстрація)
- Тестування на емуляторі Android 13+ з увімкненим Privacy Sandbox
- Налаштування постбеків та крос-девайс атрибуції
- Рекомендації щодо зворотної сумісності з GAID (Android 12 і нижче)
Строки та вартість
3–5 днів при роботі через MMP. Пряма інтеграція з Aggregation Service — до 2 тижнів. Вартість розраховується індивідуально — зв'яжіться з нами для оцінки вашого проекту за 1 робочий день. Замовте інтеграцію та забезпечте безшовний перехід атрибуції.
Гарантія результату
Ми реалізували понад 30 інтеграцій атрибуції для Android-додатків різного масштабу. Досвід з Privacy Sandbox — з моменту запуску бета-версії. Налаштовуємо так, щоб ви не втратили дані при переході та дотримувалися вимог Google Play. Всі роботи супроводжуються гарантією якості та технічною підтримкою.
Аналітика мобільних застосунків: 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 успішних проектів у сфері мобільної розробки. Ми гарантуємо коректність даних і прозорість кожного етапу.
Зв'яжіться з нами, щоб отримати консультацію з налаштування аналітики вашого застосунку. Замовте аудит поточної аналітики — і ми покажемо, які метрики ви втрачаєте.