- TikTok Events API отправляет события конверсий с сервера в TikTok, поэтому покупка не зависит от того, работает ли пиксель TikTok в браузере покупателя.
- TikTok переименовал CompletePayment в Purchase, но по-прежнему принимает старое название; для дедупликации пиксель и сервер должны использовать одно и то же название.
- TikTok дедуплицирует событие пикселя и серверное событие, когда у них одинаковые название события и event_id, и записывает первую полученную копию.
- Click id ttclid, cookie _ttp, хешированные email и телефон, IP-адрес и user agent — это ключи, по которым TikTok сопоставляет событие с человеком.
- Сначала тестируйте с кодом тестового события и отключите пиксель в любом другом приложении, которое его отправляет, иначе TikTok будет считать покупки дважды.
TikTok Events API — это серверное подключение TikTok для данных о конверсиях. Вместо того чтобы полагаться только на пиксель TikTok в браузере покупателя, ваш магазин или инструмент вроде ROASaurus отправляет события, например покупки, прямо в TikTok. TikTok рекомендует запускать Events API рядом с пикселем и дедуплицировать их по общему event_id.
Это руководство охватывает то, что Events API отправляет из магазина Shopify, названия событий Purchase и CompletePayment, click id и cookie, по которым сопоставляет TikTok, работу дедупликации, тестирование в TikTok Events Manager и настройку всего этого в ROASaurus.
Что такое TikTok Events API?
Пиксель TikTok — это скрипт на вашем магазине. Он отправляет события из браузера покупателя, поэтому считает только то, что происходит, пока скрипт загружается и работает. Остановить его могут блокировщик рекламы, ошибка скрипта или покупатель, закрывший вкладку до загрузки подтверждения заказа.
Events API отправляет такие же события с сервера. В Shopify самая надёжная запись о покупке — сам заказ. Shopify сообщает о каждом оплаченном заказе вебхуком, запускался ли скрипт в браузере или нет. Это и есть идея серверного трекинга в Shopify.
Это не альтернативы. Совет TikTok — передавать события обоими путями, сохранять их согласованными на всём пути покупателя и позволить TikTok удалять дубликаты.
- Работает в браузере покупателя
- Может быть остановлен блокировщиками рекламы и ошибками скриптов
- По умолчанию передаёт IP-адрес и user agent
- Отправляет просмотры страниц и события просмотра по мере их возникновения
- Работает на сервере, из данных заказа
- Не зависит от загрузки скрипта в браузере
- Отправитель должен добавить IP-адрес и user agent
- Отправляет каждый оплаченный заказ, даже если пиксель не сработал
Какие события ROASaurus отправляет в TikTok?
Для оптимизации TikTok в магазине Shopify важны четыре момента: просмотр товара, добавление в корзину, начало чекаута и покупка. ROASaurus отправляет все четыре в Events API и запускает те же четыре через пиксель TikTok с теми же event id. Просмотры страниц идут только через пиксель.
| Действие покупателя | Событие TikTok | Пиксель (браузер) | Events API (сервер) |
|---|---|---|---|
| Просматривает страницу | Просмотр страницы | Да | Нет |
| Просматривает товар | ViewContent | Да | Да |
| Добавляет в корзину | AddToCart | Да | Да |
| Начинает чекаут | InitiateCheckout | Да, с пикселем чекаута | Да |
| Завершает заказ | CompletePayment | Да, с пикселем чекаута | Да, из заказа |
В настройках пикселя можно снять отметки с серверных событий, которые вы не хотите отправлять, и добавить фильтры, например по стране или минимальной сумме заказа.
Purchase или CompletePayment?
TikTok переименовал событие покупки. Текущее название — Purchase. Старое название, CompletePayment, по-прежнему работает: TikTok преобразует прежние названия у себя, показывает их под новым названием в отчётности, аудиториях и оптимизации и заявляет, что CompletePayment будет поддерживаться бессрочно. Для новых настроек пикселя TikTok просит использовать Purchase.
ROASaurus отправляет CompletePayment — и в пикселе, и в Events API. В TikTok Events Manager и Ads Manager эти события отображаются как Purchase. Для дедупликации важно, чтобы обе копии покупки использовали одно и то же название события, и так оно и есть.
Как TikTok сопоставляет событие с покупателем?
Событие помогает вашим кампаниям, только если TikTok может связать его с человеком, который увидел рекламу или кликнул по ней. TikTok называет эти идентификаторы ключами сопоставления (match keys), а в руководстве по Events API просит передавать обратно все подходящие ключи, чтобы повысить долю сопоставления. Events Manager показывает результат как оценку Event Match Quality — средневзвешенное того, как часто присутствует каждый ключ.
| Ключ сопоставления | Откуда он берётся | Отправляется как |
|---|---|---|
| ttclid | Click id, который TikTok добавляет в URL лендинга, когда кто-то кликает по рекламе | Значение как есть |
| cookie _ttp | First-party cookie пикселя TikTok на домене вашего магазина | Значение как есть |
| Заказ Shopify | Хеш SHA-256 | |
| Телефон | Заказ Shopify | Хеш SHA-256 |
| external_id | id клиента Shopify или id посетителя ROASaurus | Хеш SHA-256 |
| IP-адрес и user agent | Сессия чекаута покупателя или заказ | Значение как есть |
TikTok отмечает, что пиксель по умолчанию передаёт IP-адрес и user agent, а в Events API их нужно добавлять вручную. ROASaurus берёт их из сессии чекаута покупателя или из заказа, если сессии не было. В Shopify внимания требуют ещё два ключа.
ttclid: click id TikTok
Когда покупатель кликает по рекламе TikTok, TikTok добавляет ttclid в URL лендинга. Если ваш магазин не сохраняет его на этой первой странице, к моменту прихода заказа, через несколько страниц, он уже потерян. ROASaurus считывает ttclid на лендинге, сохраняет его вместе с id посетителя, записывает в корзину Shopify и добавляет в серверное событие, когда приходит заказ.
_ttp: cookie пикселя
Cookie _ttp — это first-party cookie, который пиксель TikTok использует на вашем домене. ROASaurus считывает его на витрине и в чекауте и отправляет как ttp в серверном событии. Это ещё одна причина держать пиксель включённым рядом с Events API.
{
"event_source": "web",
"event_source_id": "CXXXXXXXXXXXXXXXXXXX",
"data": [{
"event": "CompletePayment",
"event_time": 1793016000,
"event_id": "order-5512345678901",
"user": {
"email": "a3f1…9c2e",
"phone": "7b40…11d8",
"external_id": "e05c…4a7f",
"ttclid": "E.C.P.v3…",
"ttp": "2Xb7…",
"ip": "203.0.113.24",
"user_agent": "Mozilla/5.0 (iPhone; …)"
},
"page": { "url": "https://example-store.com/checkouts/…/thank-you" },
"properties": {
"currency": "USD",
"value": 84,
"content_type": "product",
"contents": [{ "content_id": "44123456789", "content_name": "Linen shirt", "quantity": 2, "price": 42 }],
"order_id": "5512345678901"
}
}]
}Как работает дедупликация?
Когда пиксель и Events API сообщают об одной и той же покупке, TikTok получает два события на один заказ. Чтобы оставить только одно, TikTok нужно, чтобы в обеих копиях совпадали два значения: название события и event_id. Тогда TikTok записывает для измерений и отчётности первую полученную копию, и заказ учитывается один раз. Это работает для совпадающих копий, которые приходят в пределах 48 часов от первой.
ROASaurus формирует event id покупки из id заказа Shopify. Покупка из заказа 5512345678901 получает event id order-5512345678901 — и в пикселе чекаута, и на сервере. События витрины, например просмотры товаров и добавления в корзину, получают случайный id в момент возникновения, и копия из браузера и копия с сервера используют его совместно.
Вот что это значит для чисел. Возьмём примерный магазин с 200 заказами в неделю. Пиксель срабатывает для 150 из них. Остальные 50 покупателей использовали блокировщик рекламы, отклонили маркетинговые cookie или ушли до загрузки страницы подтверждения. Events API отправляет все 200.
Число 350 — то, из-за чего стоит беспокоиться. Оно сделало бы число покупок в TikTok и основанный на нём ROAS на 75% выше реальности, потому что 350 ÷ 200 = 1.75. TikTok использует эти события и для оптимизации и таргетинга, поэтому его ставки учились бы на 150 покупках, которых не было.
Почему покупки считаются дважды в Shopify?
Двойной учёт происходит, когда TikTok получает две копии покупки, которые не может сопоставить. Проверьте эти причины, прежде чем доверять скачку покупок в TikTok:
- Два инструмента отправляют один и тот же пиксель. Приложение канала продаж TikTok в Shopify тоже может отправлять события для вашего пикселя. Его event id не совпадают с id, которые использует ROASaurus, поэтому TikTok считает каждый заказ дважды. Отключите пиксель в этом приложении.
- Пиксель есть и в коде темы. Фрагмент пикселя, вставленный в тему, отправляет собственные события без ваших event id. Удалите его и пусть пиксель загружает один инструмент.
- У одной из сторон нет event_id. Серверную покупку без event_id или с новым случайным id нельзя сопоставить с копией пикселя.
- Названия событий различаются. TikTok дедуплицирует только одинаковые события. Обе копии покупки должны использовать одно и то же название события.
В справочной статье о двойном учёте те же проверки разобраны для Meta и других платформ.
Как протестировать Events API в TikTok Events Manager?
В TikTok Events Manager есть вкладка Test events для событий из браузера и с сервера. Воспользуйтесь ею, прежде чем полагаться на данные:
- Скопируйте код тестового события
В TikTok Events Manager откройте свой пиксель и перейдите в Test events. Скопируйте код тестового события.
- Вставьте его в ROASaurus
Откройте Tracking & platforms, измените пиксель TikTok и вставьте код в поле Test event code. Теперь серверные события несут его.
- Оформите тестовый заказ
Зайдите в свой магазин, посмотрите товар, добавьте его в корзину и оформите заказ.
- Проверьте обе стороны
В Test events отфильтруйте события из браузера и с сервера. Покупка должна быть видна в обоих. В ROASaurus Event log показывает каждую серверную отправку как отправленную или завершившуюся ошибкой.
- Удалите тестовый код
Когда закончите, удалите код тестового события, чтобы ваши рабочие серверные события больше не отправлялись как тестовые.
TikTok может ответить на запрос HTTP 200 и всё равно отклонить событие, указав код ошибки в теле ответа. ROASaurus читает этот код, поэтому отклонённое событие отображается в Event log как неудачное, а не проходит молча.
После суток живого трафика откройте обзор пикселя в Events Manager. В нём перечислены все события с методом подключения, оценкой Event Match Quality и временем последнего получения. Сведения о событии включают информацию о сопоставлении и дедупликации, а Diagnostics перечисляет проблемы качества с советами по их исправлению.
Как настроить TikTok Events API в Shopify с ROASaurus
Вам нужен магазин Shopify с приложением ROASaurus и доступ к TikTok Events Manager. На странице интеграции с TikTok перечислены все поля, которые отправляет ROASaurus.
- Подключите магазин Shopify
Перейдите в Add a store › Shopify, нажмите Install app и включите встроенное приложение ROASaurus (app embed) в редакторе тем. Оно захватывает ttclid и cookie _ttp на каждой странице. Каждый шаг показан в руководстве по настройке Shopify.
- Добавьте пиксель чекаута
В Shopify admin › Settings › Customer events добавьте пользовательский пиксель с именем ROASaurus и вставьте сниппет со страницы Tracking & platforms. Он запускает пиксель TikTok в чекауте, включая копию покупки из браузера.
- Создайте токен доступа
В TikTok Events Manager откройте свой пиксель и создайте токен доступа Events API в его настройках. Скопируйте токен и код пикселя.
- Добавьте пиксель TikTok в ROASaurus
Перейдите в Tracking & platforms, нажмите Add pixel на карточке TikTok и заполните Pixel code и Events API access token. Оставьте отмеченным Also load the browser pixel (recommended, deduplicated), чтобы события из браузера и с сервера использовали общие id.
- Добавьте расходы (по желанию)
Заполните Advertiser ID for spend и Marketing API token. Тогда ROASaurus импортирует расходы TikTok, и кампании TikTok показывают ROAS и CPA рядом с другими вашими каналами.
- Протестируйте и запускайте
Отправьте тестовый заказ с кодом тестового события, как описано выше, затем удалите код.
При включённой настройке Respect visitor consent, которая включена по умолчанию, ROASaurus следует выбору покупателя в cookie-баннере Shopify. Если покупатель отклоняет маркетинговые cookie, ROASaurus не загружает для него пиксель TikTok, не задаёт id посетителя, поэтому его клики с ним не связываются, и не отправляет в TikTok его события просмотра. Его оплаченный заказ всё равно уходит с сервера в Events API с хешированными данными заказа, а также с IP-адресом и user agent из заказа, но без ttclid и _ttp. Что хранится и отправляется, объясняет руководство по согласию и конфиденциальности.
Когда расходы синхронизированы, кампании TikTok появляются в отчётах по атрибуции рядом с Meta, а аналитика креативов добавляет статистику видео TikTok по каждому объявлению. ROASaurus засчитывает заказы кликам по рекламе и UTM, которые записал, а view-through конверсии учитывает только как смоделированную оценку в своей модели Clicks & views, поэтому его итоги обычно отличаются от TikTok Ads Manager. О других платформах с серверной отправкой читайте в руководстве по Pinterest Conversions API и руководстве по Meta Conversions API.
Источники
- TikTok For Business: About Events API
- TikTok Ads Manager: About Event Deduplication
- TikTok Ads Manager: How to Adopt TikTok's Updated Standard Events
- TikTok Ads Manager: How to set up matching events with Events API
- TikTok Ads Manager: About diagnostic and monitoring tools in TikTok Events Manager
В ROASaurus
- Интеграция с TikTok
- Серверный трекинг в ROASaurus
- Справка: как избежать двойного учёта
- Справка: настройка ROASaurus в Shopify