TikTok Events API ломается не на отправке, а на типовых полях и валидации payload
Чаще всего проблемы не в токене и не в endpoint, а в том, как собран event. Для Purchase / CompletePayment / AddToCart проверьте минимум: event, event_time, event_id, user, properties. Если хотя бы одно поле пустое или названо “почти так же”, TikTok может принять запрос, но не использовать его для матчингa и оптимизации.
Что должно быть в payload:
— event_time в Unix seconds, не milliseconds
— event_id стабильный для дедупликации с пикселем
— user с минимумом идентификаторов: email_hash, phone_hash, external_id, ip, user_agent
— properties с value, currency, contents, content_id / content_type для e-commerce
Валидация ломается на нормализации: email и phone хешируются только после trim, lowercase и приведения телефона к E.164; event_name лучше держать в одном словаре, без “purchase”, “Purchase”, “buy”. Для contents важно не путать массив объектов и строку: TikTok ждёт структуру, а не текстовую склейку. Если передаёте click_id, проверьте, что он не обрезан и приходит в user или в нужное поле маппинга.
event_time: 1710000000
event_id: order_123
user: {email_hash, phone_hash, external_id, ip, user_agent}
properties: {value, currency, contents}
Если нужен стабильный проход через Events API, сначала валидируйте schema у себя, а уже потом отправляйте в TikTok. Ошибка в типе поля дешевле ловится в логах sGTM, чем в потерянной конверсии.
Server Attribution — sGTM, CAPI, Privacy Sandbox
@server_attribution
TikTok Events API ломается не на отправке, а на типовых полях и валидации payload
Этот пост опубликован в Telegram-канале Server Attribution — sGTM, CAPI, Privacy Sandbox. Подписаться можно по ссылке: @server_attribution.