Сквозная аналитика расходов: FB, TikTok, Директ и push-сети
Расход из кабинетов, доход из постбеков и деньги в одном отчёте — без ежедневной таблицы. Как это устроено и где подводные камни.
У большинства команд расходы живут в одном месте, доходы — в другом, а ROI — в таблице, которую кто-то обновляет по утрам. Пока источник один, это терпимо. Когда источников пять, а баеров десять, таблица отстаёт на день и врёт на копейки, которые в сумме превращаются в серьёзные деньги.
Сквозная аналитика — это когда расход, клик, конверсия и выплата связаны одним ключом и лежат в одном отчёте. Ниже — как это устроено в трекере на примере Facebook, TikTok, Яндекс.Директа и push-сетей, и где обычно ломается.
Три вопроса сквозной аналитики
- Откуда берётся расход — из API кабинета, вручную или из параметра ссылки.
- Как расход связывается с кликами — по какому ключу трекер понимает, что эти 1000 рублей потрачены на эту кампанию.
- В какой валюте всё считается — расход в долларах, выплата в рублях, налог в рублях, а смотреть хочется в одной цифре.
Ответ на каждый вопрос определяет, будет ли ROI в отчёте правдой.
Откуда берутся расходы
Рекламные кабинеты по API
inotrack забирает расходы из пяти кабинетов:
| Кабинет | Как подключается | Уровень данных |
|---|---|---|
| Яндекс.Директ | OAuth одной кнопкой | кампания, группа, объявление; без НДС |
| VK Реклама | OAuth одной кнопкой | кампания, группа, объявление |
| токен доступа и ID рекламного аккаунта | кампания, группа, объявление | |
| TikTok | токен доступа и ID рекламодателя | кампания, группа, объявление |
| Google Ads | OAuth-ключи и developer token | кампания, группа, объявление |
Синхронизация идёт каждый час: трекер забирает расход, показы и клики за текущий день, а в начале нового дня ещё раз перечитывает вчерашний — кабинеты часто досчитывают расходы задним числом. Токены хранятся на вашем сервере в зашифрованном виде (AES-256-GCM).
Подробно о каждой интеграции — на странице импорта расходов и в каталоге интеграций.
Push-сети
Синхронизации расходов по API с push-сетями в inotrack сейчас нет. Для них — и для попандеров, посевов, агентских кабинетов — есть ручной расход в карточке источника. Два режима:
- Сумма — вы вносите, сколько потрачено за период по источнику или кампании;
- CPC — вы указываете цену клика, и трекер сам умножает её на число кликов источника за период. Боты и тестовые клики в расчёт не входят.
Второй режим удобен для push-сетей с фиксированной ставкой: расход растёт вместе с трафиком без ежедневного ввода. Ручной расход сразу попадает в отчёты и P&L так же, как импортированный, а валюта выбирается при вводе — рубли, доллары или евро.
Почему не из параметра ссылки
Некоторые трекеры принимают стоимость клика параметром в ссылке. В inotrack такого нет намеренно: расходы идут из интеграции источника или вручную. Цена из ссылки — это ставка, а не списание: она не учитывает скидки, возвраты, перерасход и досчёты кабинета.
Как расход связывается с кликами
Это самая частая причина «кривого» ROI. Трекер должен понять, что строка расхода из кабинета и клики в его базе относятся к одной кампании. В inotrack связка идёт по трём ключам: кампания, группа и объявление. Клик берёт их из параметров ссылки — utm_campaign, utm_content, utm_term (или campaign, adset, creative), а интеграция пишет расход в те же ключи.
Готовые шаблоны ссылок, при которых расход ложится на те же клики:
- Яндекс.Директ:
utm_campaign={campaign_id}&utm_content={gbid}&utm_term={ad_id} - VK Реклама:
utm_campaign={{ad_plan_id}}&utm_content={{campaign_id}}&utm_term={{banner_id}}— в макросах VKcampaign_idозначает группу объявлений - Google Ads:
utm_campaign={campaignid}&utm_content={adgroupid}&utm_term={creative}
У Директа и VK связка по умолчанию идёт по ID. У Facebook и TikTok — по названиям кампаний, групп и объявлений, поэтому в ссылку передаются их имена через динамические параметры площадки. Для Google Ads можно выбрать режим по ID или по названиям. Шаблоны ссылок подсказывает форма интеграции и конструктор ссылки потока в админке — вручную собирать не нужно.
Типичные ошибки связки
- Переименовали кампанию в Facebook. Связка по имени разорвалась: старые клики под одним именем, новый расход под другим. Переименовывайте до запуска, а не во время.
- Одинаковые имена у разных кампаний. Клон кампании с тем же названием смешает расходы двух кампаний.
- Шаблон ссылки не тот. Например, в Директе в
utm_contentпередаётся объявление вместо группы — расход ляжет мимо кликов. - Площадка не дописала свой click ID. Для отдачи конверсий в кабинет нужны gclid, yclid, rb_clickid и подобные — их площадки дописывают сами, если не отключена автопометка.
Валюты
Facebook считает в долларах, Директ — в рублях, сеть платит в рублях или в долларах. inotrack держит рубли, доллары и евро на равных: каждая строка расхода пересчитывается по курсу ЦБ на свою дату. Курсы обновляются раз в сутки, недостающая история догружается сама.
Важная деталь: строка из API без курса не записывается нулём, а попадает в ошибки синхронизации. Нулевой расход в отчёте опаснее отсутствующего — он делает убыточную кампанию «бесплатной».
ROI и P&L
Когда расходы связаны с кликами, метрики считаются в отчёте сами:
- профит = выплата − расход;
- ROI = профит / расход × 100%;
- CPC = расход / клики.
Отчёт строится по любым измерениям — источник, кампания, группа, объявление, гео, sub-метки — и раскрывается до отдельных кликов. Смотрите отчёты и аналитику.
Но ROI по кампании — ещё не прибыль команды. В финмодуле P&L считается как подтверждённый доход минус расход на трафик минус прочие расходы. В прочие расходы входят серверы, хостинг, домены и CDN: их стоимость трекер раз в сутки забирает из API Timeweb Cloud, Hetzner, Cloudflare и Namecheap.
Подтверждённый доход, а не ожидаемый
Сквозная аналитика честна, только если доход — это то, что сеть действительно засчитала. Поэтому в P&L идёт подтверждённый доход, а не лиды в холде. А чтобы проверить, что сеть засчитала всё, есть сверка: загружаете выгрузку из кабинета сети, трекер сопоставляет её со своими конверсиями по clickid и показывает расхождения. Как настроить постбеки так, чтобы сверка сходилась, — в статье о постбеках Unicom24, Leads.su и Admitad.
Боты и расходы
Кабинет списывает деньги за все клики, включая ботов. Трекер считает ботов отдельно, поэтому в отчёте видно, какая доля оплаченного трафика была мусором и в каких зонах. Для push-сетей это особенно полезно: зоны с высокой долей ботов трекер помечает сам, а дальше решаете вы — отключить зону в кабинете сети или блокировать её в трекере. Как устроен детект — в статье о бот-фильтрации.
Следить, а не только считать
Сквозной отчёт полезен, когда на него смотрят вовремя. Чтобы не открывать его каждый час, в inotrack есть три способа узнать о проблеме раньше:
- Аномалии. Трекер строит базовую линию кликов, CR и EPC и сообщает, когда метрика проваливается ниже неё, а отдельный алерт — когда постбеки перестают приходить. Это частые признаки того, что сломалась ссылка или сеть перестала слать постбеки, пока расход продолжает идти.
- Правила. Например: CR ниже порога за час — пауза оффера и алерт. Правило работает по метрикам трекера, а не по ощущениям баера.
- Telegram. Сводки
/today,/week,/roiи/balanceпрямо в чате, а алерты — о капе, падении CR и пропаже постбеков. Подробнее — на странице API, MCP и Telegram.
Так проблема со связкой всплывает в уведомлении, а не в утренней таблице, которую кто-то забыл обновить.
Как запустить за один день
- Подключите кабинеты. Директ и VK — OAuth одной кнопкой, Facebook, TikTok и Google Ads — токенами.
- Поправьте ссылки объявлений. Возьмите шаблон из формы интеграции и вставьте в объявления, иначе расход не ляжет на клики.
- Заведите ручные расходы. Для push-сетей и площадок без API — режим CPC или сумма за период.
- Дождитесь цикла. Через час расход появится в отчётах; вчерашний день досчитается на следующие сутки.
- Проверьте одну кампанию. Сравните расход в отчёте трекера с кабинетом за тот же день и в той же валюте.
- Отдайте конверсии обратно. Подключите исходящие постбеки в кабинеты, чтобы их алгоритм учился на заявках — подробнее на странице постбеков.
Итог
Сквозная аналитика держится не на красивом дашборде, а на трёх скучных вещах: расход приходит сам, ключ связки один и тот же в кабинете и в трекере, валюты пересчитываются по курсу на дату. Настройте их один раз — и утренняя таблица больше не понадобится.