Мы часто сталкиваемся с ситуацией: команда запускает рекламную кампанию в четырёх каналах, но не может понять, какой из них приносит реальные установки и покупки. Расходы выгружают вручную, данные разрозненны, a SKAdNetwork от Apple скрывает когортную статистику на уровне устройств. Singular — Marketing Analytics Platform, которая решает эту проблему: она агрегирует расходы из Meta Ads, Google Ads, TikTok и Apple Search Ads, автоматически считает ROAS и даёт единую панель управления. В отличие от обычных MMP, Singular обрабатывает данные в 3 раза быстрее и не требует ручного ввода расходов. Наша команда с 5-летним опытом успешно интегрировала Singular в 50+ проектов, и средний срок внедрения — до 5 дней с окупаемостью за первый месяц кампании.
Почему Singular, а не стандартный MMP?
Большинство MMP (AppsFlyer, Adjust) фокусируются только на атрибуции установок. Singular работает на уровень выше: импортирует данные о расходах из рекламных кабинетов и считает маржинальную прибыль без ручных отчётов. Встроенный Conversion Studio позволяет управлять conversion values SKAdNetwork из дашборда, а не через конфигурационные файлы Xcode. Для крупных рекламодателей этот подход сокращает время на подготовку отчётов в 3 раза. Как указано в документации Singular, автоматический импорт расходов через OAuth исключает ошибки ручного ввода.
Подключение SDK
iOS
// SPM: https://github.com/singular-labs/Singular-Swift-Package
import Singular
// AppDelegate
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let config = SingularConfig(apiKey: "API_KEY", andSecret: "API_SECRET")
config?.skAdNetworkEnabled = true
config?.waitForTrackingAuthorizationWithTimeoutInterval = 300 // 5 минут на запрос ATT
Singular.start(config)
return true
}
waitForTrackingAuthorizationWithTimeoutInterval — критичный параметр. Если SDK стартует до ответа пользователя на ATT, conversion values привязываются к анонимной сессии. 300 секунд даёт достаточно времени для pre-prompt и системного диалога. Мы гарантируем, что тайм-аут настроен с учётом вашего UX-дизайна.
Android
implementation("com.singular.sdk:singular_sdk:12.+")
val config = SingularConfig("API_KEY", "API_SECRET")
.withSessionTimeoutInSec(60)
.withFCMDeviceToken(fcmToken) // для push-атрибуции
Singular.init(this, config)
withFCMDeviceToken атрибутирует установки через push-кампании — пользователь получил пуш, установил приложение, Singular связывает события. Наши инженеры проверяют правильность работы push-атрибуции на этапе тестирования.
Настройка событий и SKAdNetwork
Singular предоставляет стандартные события, которые автоматически мэппятся на форматы Meta, Google, TikTok:
// Покупка
Singular.revenue("USD", amount: 9.99, productSKU: "premium_monthly",
productName: "Premium Subscription", productCategory: "Subscription",
quantity: 1, receipt: receiptData)
// Кастомное событие
Singular.event("level_complete", withArgs: [
"level": 15,
"score": 8420,
"time_spent": 142
])
Singular.revenue с receipt запускает верификацию покупок на стороне Singular. Фальшивые транзакции отсекаются до попадания в статистику. Для высокой точности ROAS мы рекомендуем передавать все revenue события, включая подписки (типичная ошибка — передавать только первую покупку).
Как настроить SKAdNetwork с нуля?
Singular управляет conversion schema через дашборд — Conversion Studio. Выполните следующие шаги:
- Откройте Conversion Studio в дашборде Singular.
- Создайте новую схему, указав окно конверсии (6–24 часов).
- Определите конверсионные значения для ключевых событий (установка, регистрация, покупка).
- Запустите тестовую кампанию для калибровки.
- Финализируйте схему перед запуском массовых кампаний.
Важно: схему нужно финализировать до запуска — если изменить её после первых установок, данные по ним останутся неполными. В нашем сертифицированном процессе мы всегда создаём схему на этапе тестовой кампании.
Deeplink-атрибуция
// Universal Links
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
if let url = userActivity.webpageURL {
Singular.continueUserActivity(userActivity) { deeplink, error in
if let path = deeplink?.passthrough {
NavigationRouter.shared.handleDeeplink(path)
}
}
}
return true
}
Singular поддерживает Singular Links — аналог Branch Links с трекингом клика. Создаются в дашборде, передаются в объявления. Мы настраиваем Universal Links (iOS) и App Links (Android) за 1 день.
Интеграция расходов из рекламных кабинетов
Это ключевая особенность, недоступная в базовых MMP. В Singular → Integrations подключаем аккаунты Meta, Google, Apple Search Ads, TikTok через OAuth или API-ключи. После этого дашборд показывает единую разбивку:
| Канал | Installs | Cost | Revenue | ROAS |
|---|---|---|---|---|
| Meta Ads | 1 240 | $3 100 | $4 960 | 1.60x |
| Apple Search Ads | 890 | $2 450 | $5 340 | 2.18x |
| TikTok | 560 | $1 800 | $1 960 | 1.09x |
Данные обновляются ежедневно. Для точного ROAS важно передавать все revenue события — иначе цифры будут занижены.
Типичные проблемы при интеграции
- SKAdNetwork conversion values не обновляются. Conversion Studio настраивается до запуска кампаний — это обязательно для чистоты данных. Если схема создана постфактум, конверсии первой когорты потеряны.
- Дублирование событий с Firebase. Если в проекте уже стоит Firebase Analytics, одинаковые события не должны уходить дважды — Singular не умеет дедуплицировать автоматически. Мы настраиваем фильтры на стороне Singular или отключаем дублирующие события в Firebase.
Сравнение: Singular vs. стандартный MMP
| Критерий | Singular | Типовой MMP |
|---|---|---|
| Импорт расходов | Встроенный OAuth | Только CSV или API с лимитами |
| SKAdNetwork | Conversion Studio | Ручной конфиг Xcode |
| ROAS-отчёт | Автоматический | Требует выгрузки |
| Поддержка postback | Да, с ретрансляцией | Ограниченно |
Singular выигрывает по времени настройки и точности отчётов — в наших проектах экономия времени аналитика составляет до 10 часов в неделю.
Что входит в работу
- Подключение SDK (iOS SPM / Android Gradle / Flutter / React Native)
- Настройка SKAdNetwork и Conversion Studio
- Конфигурация ATT flow с корректным тайм-аутом
- Реализация событий и revenue с верификацией чеков
- Подключение deeplink обработки (Universal Links / App Links)
- Интеграция рекламных аккаунтов для импорта расходов
- Тестирование через Singular SDK Console
Сроки и стоимость
Базовая атрибуция с событиями — 1–2 дня. Полная интеграция с диплинками и настройкой рекламных каналов — 3–5 дней. Стоимость рассчитывается индивидуально. Закажите аудит текущей аналитики — мы подскажем, какие доработки нужны и сколько времени займёт интеграция.
Свяжитесь с нами для консультации — оценим ваш проект и предложим оптимальное решение.







