Настройка атрибуции установок (Install Attribution)
Мы настроили атрибуцию для 50+ мобильных приложений — от финтех-стартапов до гейминга с бюджетами от 500 000 до 10 млн рублей в месяц. Типичная боль: рекламный бюджет размазан по пяти каналам (Google UAC, Meta Ads, TikTok, Telegram, ASA), установки идут, конверсии есть, но маркетинг не знает, какой канал принёс покупателя. Без корректной атрибуции до 40% бюджета (например, 120 000 из 300 000 рублей) уходит на ботов и нецелевые установки. Наша гарантия — прозрачная отчётность по каждому установщику и экономия средств.
Как работает атрибуция: MMP в середине цепочки
Mobile Measurement Partner — независимая третья сторона между рекламными сетями и вашим приложением. Принцип: пользователь кликает на рекламу — MMP фиксирует клик с параметрами кампании. После установки SDK приложения сопоставляет устройство с сохранённым кликом и возвращает атрибуцию источнику. Ключевые игроки: AppsFlyer, Adjust, Branch, Kochava. Для России AppsFlyer и Adjust — стандарт.
Механика матчинга после iOS 14.5 разделилась:
- Deterministic (точный): через SKAdNetwork-постбэки — когда пользователь дал разрешение ATT
- Probabilistic (вероятностный): по fingerprint (IP + User-Agent + время клика) — без ATT, точность 60–70%
На Android Google Play Referrer API даёт точный атрибуционный токен без разрешений.
Как настроить интеграцию AppsFlyer на iOS и Android?
iOS (Swift)
// AppDelegate.swift import AppsFlyerLib func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { AppsFlyerLib.shared().appsFlyerDevKey = "YOUR_DEV_KEY" AppsFlyerLib.shared().appleAppID = "123456789" AppsFlyerLib.shared().delegate = self AppsFlyerLib.shared().isDebug = false // только dev return true } func applicationDidBecomeActive(_ application: UIApplication) { AppsFlyerLib.shared().start() // после ответа ATT } Согласно официальной документации AppsFlyer (AppsFlyer Developer Guide), start() нельзя вызывать до ответа на ATT — иначе Apple заблокирует постбэк. Правильная последовательность: показать ATT → дождаться ответа → вызвать start().
Android (Kotlin)
AppsFlyerLib.getInstance().init("YOUR_DEV_KEY", object : AppsFlyerConversionListener { override fun onConversionDataSuccess(data: Map<String, Any>) { val campaign = data["campaign"] as? String val mediaSource = data["media_source"] as? String // "googleadwords_int" для Google UAC } override fun onConversionDataFail(error: String) {} override fun onAppOpenAttribution(data: Map<String, Any>) {} override fun onAttributionFailure(error: String) {} }, this) AppsFlyerLib.getInstance().start(this) На Android добавьте зависимость com.android.installreferrer:installreferrer:2.2 — без неё атрибуция Google UAC будет вероятностной.
Почему постбэки критичны для оптимизации рекламных кампаний?
Без постбэков рекламные сети не получают сигнал о целевых событиях (покупка, регистрация). Google UAC и Meta оптимизируются под установку, а не под in-app event. Настройка постбэков в каждую сеть — обязательный шаг. Типичная ошибка: не указан event_name для покупки в постбэке Meta, из-за чего сеть считает конверсией просто установку. Стоимость исправления такой ошибки — от 10 000 до 30 000 рублей в день потерянного бюджета.
Deeplink-атрибуция: где чаще всего ломается
OneLink (AppsFlyer) / Universal Links / App Links позволяют атрибутировать не только установку, но и конкретный deeplink. Пользователь кликает по ссылке в Telegram, устанавливает приложение — и попадает на нужный экран с корректной атрибуцией.
Типичные ошибки:
- Universal Links перестают работать после обновления приложения — не обновлён
apple-app-site-associationфайл или изменён Bundle ID. - Отсутствует
onAppOpenAttribution— повторные переходы по deeplink не атрибутируются. - В Android не указан
intent-filterдля App Links, и система открывает браузер вместо приложения.
Сравнение MMP: AppsFlyer vs Adjust vs Branch
| Параметр | AppsFlyer | Adjust | Branch |
|---|---|---|---|
| Deeplink-атрибуция | OneLink (универсальный) | Adjust Links | Branch Links (объединённый) |
| Anti-fraud | Встроенный AI Fraud | Fraud Prevention Suite | Basic |
| SKAdNetwork | Поддержка с момента появления | Полная поддержка | Поддержка |
| Цена | Дороже для малых объёмов | Средний сегмент | Дороже для малых проектов |
Наш опыт: для финтеха с высокой ценой установки лучше подходит AppsFlyer из-за более точного anti-fraud. Для e-commerce с глубоким deeplinking — Branch обеспечивает лучший пользовательский опыт.
Процесс интеграции
| Этап | Длительность | Что делаем |
|---|---|---|
| Аналитика | 1 день | Выбираем MMP под бюджет и каналы |
| Интеграция SDK | 1–2 дня | На iOS (Swift) и Android (Kotlin/Java) или через Flutter plugin |
| Настройка ATT-флоу | 0,5 дня | Для iOS |
| Конфигурация постбэков | 1–2 дня | В Google, Meta, TikTok, ASA (3+ сети) |
| Deeplink-атрибуция | 1 день | Universal Links / App Links / OneLink |
| Тестирование | 1 день | Используем тестовые устройства, проверяем в dashboard |
| Верификация постбэков | 0,5 дня | Убеждаемся, что сети получают события |
Проверка корректности атрибуции
Процедура тестирования
- Добавьте IDFA/GAID тестового устройства в MMP dashboard.
- Кликните по тестовой ссылке кампании.
- Установите приложение.
- В dashboard атрибуция отобразится за 1–2 минуты.
- Проверьте, что постбэк ушёл в сеть (событие install).
Что входит в работу
- Выбор MMP и лицензирование (если требуется)
- Интеграция SDK на обе платформы (iOS + Android)
- Настройка ATT-flow и SKAdNetwork
- Конфигурация постбэков в 3+ рекламные сети
- Реализация deeplink-атрибуции (OneLink / Branch Links)
- Тестирование и верификация
Гарантия: мы предоставляем отчёт о тестировании и постбэков. Наши инженеры сертифицированы по AppsFlyer и Adjust.
Сроки и стоимость
- Базовая интеграция одного MMP на обе платформы: 3–5 дней
- С настройкой deeplink и всех рекламных постбэков: до 7 дней
- Стоимость рассчитывается индивидуально — свяжитесь с нами для оценки. Обычно бюджет варьируется в зависимости от сложности.
Ошибки, которых стоит избежать
- Вызов
start()до ATT — блокировка постбэков Apple. - Отсутствие обработчика
onAppOpenAttribution— потеря атрибуции повторных переходов. - Игнорирование Apple App Site Association — Universal Links не работают.
- Неверный event name в постбэке — сеть не оптимизируется под целевое действие.
- Использование одного postback URL для всех сетей — каждая сеть требует свой формат.
Закажите интеграцию атрибуции — мы настроим MMP под ваш стек и рекламные каналы за 5–7 дней. Получите консультацию по вашему проекту.







