Отправка конверсий TikTok Events API для аффилейт-трекеров: гайд
event_id Конверсии доходят до TikTok, даже когда браузерный пиксель заблокирован. Events API отправляет те же данные серверным POST-запросом, без зависимости от браузера посетителя. Адблокеры, ITP и ограничительные заголовки CSP останавливают скрипт пикселя - серверный канал продолжает работать. Отправка конверсий TikTok Events API из Keitaro или Binom разбирается по всему пути: захват ttclid, форматирование user_data, дедупликация между пикселем и сервером, тестирование и траблшутинг.
Что даёт отправка конверсий TikTok Events API?
Events API доставляет конверсии серверным POST-запросом. Событие доходит до TikTok, даже когда браузерный пиксель заблокирован адблокером, срезан ITP или остановлен заголовком Content-Security-Policy. Пиксель по-прежнему важен: он собирает клиентские сигналы (cookie _ttp, автоматический сбор IP и User-Agent), которые улучшают качество матчинга. Работать обоими каналами одновременно и давать TikTok дедуплицировать - стандартная схема.
Events API работает и без cookie, что важно для трафика, где согласие на сторонние cookie не получено. Одно ограничение: серверная доставка не отменяет платформенные решения о приватности. Пользователи, отказавшиеся от трекинга через ATT на iOS 14.5+ или через европейские требования к согласию, не отслеживаются ни одним из каналов.
Что такое ttclid и как его использовать?
ttclid - URL-параметр, который TikTok добавляет к ссылке вашего лендинга в момент клика. Это ключ матчинга с наивысшим приоритетом для атрибуции конверсии к конкретному клику по рекламе. В запросе Events API ttclid передаётся без хеширования - это идентификатор клика, а не PII.
Срок его действия равен click-through окну атрибуции вашего аккаунта в Attribution Manager. По умолчанию это 7 дней, но если вы меняли окно (click-окна бывают 1, 7, 14 или 28 дней), валидность ttclid следует за этой настройкой. Проверяйте текущую конфигурацию атрибуции в TikTok Ads Manager, а не исходите из фиксированных 7 дней.
Чтобы получать ttclid, шаблон URL лендинга должен содержать макрос __CLICKID__:
tracker.example/click?ttclid=__CLICKID__TikTok заменяет __CLICKID__ на реальный идентификатор клика в момент клика.
Как захватить ttclid в Keitaro?
В Keitaro используйте макрос __CID__ в настройках источника трафика TikTok. Трекер сохраняет ttclid, IP клиента и User-Agent в момент клика, а затем передаёт данные о конверсиях на эндпоинт Events API по почасовому расписанию.
Два момента, которые нужно проверить:
- Advertiser ID в интеграции должен совпадать с выбранной кампанией. При несовпадении возникает ошибка и события не уходят.
- IP, который вы передаёте, должен быть IP клиента, а не сервера трекера. Если сервер стоит за прокси или CDN, убедитесь, что Keitaro захватывает реальный адрес посетителя. Несовпадение IPv4/IPv6 между кликом и конверсией - известная причина проваленного матчинга.
Если вы уже гоняете Facebook CAPI через Keitaro, паттерн тот же: макрос источника трафика захватывает идентификатор клика, а трекер пересылает его серверно.
Как захватить ttclid в Binom?
Минимальная рабочая конфигурация Binom для TikTok Events API - ttclid плюс IP клиента плюс User-Agent. Добавьте макрос __CLICKID__ в шаблон URL лендинга, чтобы Binom сохранял идентификатор клика как параметр subid в момент клика.
Когда срабатывает конверсия (через постбек от CPA-сети или рекламодателя), Binom связывает её с сохранённым ttclid и передаёт тройку на эндпоинт Events API. Та же осторожность с IPv4/IPv6: если клик пришёл по IPv4, а постбек резолвит сервер по IPv6, ключ матчинга по IP ломается.
Автоматизируйте весь поток
Most поддерживает передачу конверсий TikTok из трекера в Events API. Или проверьте пиксель и токен за секунды в бесплатном Активаторе пикселей.
Что входит в user_data - и что хешировать?
TikTok Events API делит ключи матчинга на две категории: поля, которые отправляются в открытом виде, и PII-поля, требующие хеширования SHA-256. Ошибка здесь - самая частая причина падения качества матчинга.
| Поле | Формат | Хеширование |
|---|---|---|
| ttclid | строка с идентификатором клика как есть | нет |
| ip | IPv4 или IPv6 клиента | нет |
| user_agent | полная строка UA браузера | нет |
| _ttp | значение first-party cookie (ключ второго тира) | нет |
| email (em) | нижний регистр, обрезка | SHA-256 |
| phone (ph) | формат E.164 (+код страны, без пробелов и дефисов) | SHA-256 |
| external_id | ваш внутренний ID пользователя, нижний регистр | SHA-256 |
| first_name, last_name | нижний регистр, обрезка | SHA-256 |
| city, country, zip | нижний регистр, обрезка | SHA-256 |
Телефонные номера нужно нормализовать до E.164 перед хешированием. Номер вида 8 (912) 345-67-89 превращается в +79123456789, и уже эту строку хешируете SHA-256.
Валюты указываются кодами ISO 4217 (USD, EUR и т.д.), а content_type принимает значения product или product_group.
Как работает дедупликация между пикселем и Events API?
TikTok дедуплицирует по комбинации event_id и event_name в окне 48 часов. Если и браузерный пиксель, и ваш сервер отправили событие с одинаковым event_id и одинаковым event_name (точное совпадение регистра), TikTok засчитывает одну конверсию. Без совпадающего event_id два события считаются отдельными конверсиями, и цифры раздуваются.
Есть и более короткое окно авто-слияния: события, пришедшие с разницей примерно в 5 минут из одного источника, могут объединиться даже без явного event_id. Не рассчитывайте на это. Всегда генерируйте уникальную строку event_id на каждую конверсию и используйте идентичное значение и в вызове пикселя, и в серверном запросе. Один ID на конверсию.
Когда дедупликация срабатывает, TikTok оставляет одно событие. По данным партнёрской документации, сохраняется событие с наибольшим количеством параметров (обычно серверное). Механика построения стабильного event_id - тот же принцип, что описан в статье event_id и дедупликация: на каждую конверсию - один event_id, одинаковый во всех каналах.
Какие окна атрибуции у TikTok - и почему цифры в трекере отличаются?
По данным партнёрской документации, окно атрибуции по умолчанию - 7 дней click-through плюс 1 день view-through. TikTok предлагает и гибкие окна: click можно выставить на 1, 7, 14 или 28 дней; view - на 0, 1 или 7 дней; engaged view (просмотр не менее 6 секунд без клика) - на 1 или 7 дней. Проверяйте текущие настройки в Attribution Manager внутри TikTok Ads Manager, потому что значения настраиваются для каждой кампании.
Расхождения между трекером и Ads Manager обычно возникают из двух источников:
- Несовпадение окон атрибуции. Трекер засчитывает конверсию в момент срабатывания постбека; TikTok атрибутирует её только если клик попадает в настроенное окно.
- Тайминг батчей. Keitaro, например, отправляет данные раз в час. Конверсия в 14:59 может появиться в отчётности TikTok на час позже, чем в реальном времени вашего трекера.
Ни то, ни другое не баг. Сравнивайте цифры после закрытия окна атрибуции и учитывайте интервал батча.
Как протестировать настройку через test_event_code?
Добавьте параметр test_event_code в запрос Events API. Тестовые события появляются на вкладке Test Events на events.tiktok.com, обычно в течение 60 секунд, и не влияют на продакшн-оптимизацию и ставки.
Где найти базовый код пикселя и настройки: в TikTok Ads Manager откройте Assets, затем Web Events, выберите ваш Pixel, откройте Settings и посмотрите базовый код. test_event_code генерируется там же.
Уберите test_event_code из продакшн-запросов перед запуском. События, отправленные с тестовым кодом, не учитываются в оптимизации, так что оставленный в проде код молча обнуляет ваш конверсионный сигнал.
Почему конверсии не доходят до TikTok? Траблшутинг
Проверьте четыре вещи в первую очередь:
- Валидность и права токена. Токены доступа истекают или имеют недостаточные права для целевого пикселя. В документации TikTok указано, что токен доступа не хранится после первоначального показа в Events Manager - если не скопировали при создании, генерируйте новый.
- Совпадение pixel_code / event_source_id. Идентификатор в запросе должен соответствовать пикселю, подключённому к рекламному аккаунту, на котором крутится кампания.
- Наличие event_id. Без
event_idдедупликация не работает и вы получаете двойной подсчёт вместо нуля событий - но отсутствующая или кривая структура события может вызывать молчаливые потери. - События видны на вкладке Test Events, но не в продакшн-отчётности? Тестовый код всё ещё в запросах. Уберите
test_event_code.
Это тот же класс проблем, что и в настройке токена и Pixel ID Facebook: токен показывается один раз, идентификаторы должны совпадать точно, а при несовпадении - молчаливый сбой. Пошаговый гайд для TikTok: Найдите Pixel ID TikTok и сгенерируйте токен Events API.
Что такое Event Match Quality и как его читать?
Event Match Quality (EMQ) показывает, сколько ваших ключей матчинга TikTok может успешно связать с аккаунтом пользователя. Единого универсального порога для хорошего показателя нет - он зависит от отрасли, типа события и набора идентификаторов, которые вы отправляете.
Практические шаги для повышения EMQ:
- Всегда включайте ttclid (наивысший приоритет), IP клиента и User-Agent.
- Добавляйте хешированные email или телефон, если воронка их собирает.
- Убедитесь, что PII-поля действительно хешированы (SHA-256, нижний регистр, обрезка), а IP и UA не хешированы.
- Проверьте, что нет несовпадения IPv4/IPv6 между кликом и событием конверсии.
Какие ограничения приватности влияют на трекинг через Events API?
Events API не отслеживает пользователей, отказавшихся от трекинга через App Tracking Transparency на iOS 14.5+ или через европейские требования к согласию. Если пользователь отклонил отслеживание, событие не сматчится с его аккаунтом независимо от количества отправленных идентификаторов.
Серверная доставка по-прежнему работает без cookie для пользователей, давших согласие, - это преимущество перед браузерным пикселем в средах, где сторонние cookie срезаются. Events API убирает браузер как точку сбоя; решение пользователя о согласии при этом продолжает действовать.
Как автоматизировать отправку TikTok Events API из трекера?
Ручная настройка означает следить за истечением токена, корректно форматировать поля user_data при каждой отправке, генерировать уникальные event_id и держать пиксельные и серверные события в синхроне для дедупликации. На объёмах это регулярная задача по поддержке.
Most поддерживает TikTok как направление для автоматической доставки конверсий из трекера. Для деталей по вашей конфигурации смотрите напрямую в Most.
Если вы прогреваете новый пиксель TikTok историческими конверсиями из трекера, работают те же принципы прогрева пикселя: заводите сигнал постепенно, а не выгружайте весь бэклог разом.
Как быстро проверить пиксель и токен?
Перед подключением полной автоматизации проверьте креденшелы изолированно:
- Откройте бесплатный Активатор пикселей.
- Вставьте Pixel ID (
event_source_id) и токен Events API. - Отправьте тестовое событие и подтвердите, что оно появилось на вкладке Test Events в TikTok.
Это ловит опечатки в токене, истёкшие токены и несовпадение pixel_code за секунды. Когда тест прошёл - переключайтесь на Most для автоматического пути: доставка по расписанию, дедупликация и маппинг полей без ручных cURL-запросов.
Нужна помощь с поиском Pixel ID или генерацией токена? Пошаговый гайд: Найдите Pixel ID TikTok и сгенерируйте токен Events API.
