Рекламные платформы и интернет-магазины

TikTok Events API для Shopify: настройка и дедупликация

TikTok Events API отправляет покупки из Shopify в TikTok с вашего сервера. Узнайте о событиях, ttclid и _ttp, дедупликации по event_id и тестировании.

·Обновлено ·10 мин чтения·От команды ROASaurus

Главное
  • 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 удалять дубликаты.

Пиксель TikTok (браузер)
  • Работает в браузере покупателя
  • Может быть остановлен блокировщиками рекламы и ошибками скриптов
  • По умолчанию передаёт IP-адрес и user agent
  • Отправляет просмотры страниц и события просмотра по мере их возникновения
Events API (сервер)
  • Работает на сервере, из данных заказа
  • Не зависит от загрузки скрипта в браузере
  • Отправитель должен добавить IP-адрес и user agent
  • Отправляет каждый оплаченный заказ, даже если пиксель не сработал
TikTok рекомендует оба: пиксель для сигналов браузера, Events API для каждого заказа, с дедупликацией по одному event_id.

Какие события ROASaurus отправляет в TikTok?

Для оптимизации TikTok в магазине Shopify важны четыре момента: просмотр товара, добавление в корзину, начало чекаута и покупка. ROASaurus отправляет все четыре в Events API и запускает те же четыре через пиксель TikTok с теми же event id. Просмотры страниц идут только через пиксель.

Действие покупателяСобытие TikTokПиксель (браузер)Events API (сервер)
Просматривает страницуПросмотр страницыДаНет
Просматривает товарViewContentДаДа
Добавляет в корзинуAddToCartДаДа
Начинает чекаутInitiateCheckoutДа, с пикселем чекаутаДа
Завершает заказCompletePaymentДа, с пикселем чекаутаДа, из заказа
Каждое событие, идущее обоими путями, несёт один event id, чтобы TikTok мог оставить одну копию.

В настройках пикселя можно снять отметки с серверных событий, которые вы не хотите отправлять, и добавить фильтры, например по стране или минимальной сумме заказа.

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 — средневзвешенное того, как часто присутствует каждый ключ.

Ключ сопоставленияОткуда он берётсяОтправляется как
ttclidClick id, который TikTok добавляет в URL лендинга, когда кто-то кликает по рекламеЗначение как есть
cookie _ttpFirst-party cookie пикселя TikTok на домене вашего магазинаЗначение как есть
EmailЗаказ ShopifyХеш SHA-256
ТелефонЗаказ ShopifyХеш SHA-256
external_idid клиента Shopify или id посетителя ROASaurusХеш SHA-256
IP-адрес и user agentСессия чекаута покупателя или заказЗначение как есть
TikTok просит хешировать email, телефон и external_id. Click id, cookie, 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.

Пример: покупка в том виде, в каком ROASaurus отправляет её в 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 в момент возникновения, и копия из браузера и копия с сервера используют его совместно.

Заказ оформленПиксель чекаута отправляет CompletePayment с event_id order-5512345678901.
Заказ оплаченShopify отправляет оплаченный заказ в ROASaurus вебхуком.
Events APIROASaurus отправляет CompletePayment с тем же event_id и хешированными данными заказа.
TikTokТо же название и тот же event_id: засчитывается одна покупка.
До TikTok доходят две копии одной покупки. Общий event_id позволяет TikTok посчитать её один раз.

Вот что это значит для чисел. Возьмём примерный магазин с 200 заказами в неделю. Пиксель срабатывает для 150 из них. Остальные 50 покупателей использовали блокировщик рекламы, отклонили маркетинговые cookie или ушли до загрузки страницы подтверждения. Events API отправляет все 200.

События Purchase, которые TikTok записывает за неделю (примерный магазин, 200 заказов)
Только пиксель
150
Только Events API
200
Пиксель и Events API, разные id
350
Пиксель и Events API, общий event_id
200
Без общего event_id 150 заказов считаются дважды. С ним TikTok записывает каждый из 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 для событий из браузера и с сервера. Воспользуйтесь ею, прежде чем полагаться на данные:

  1. Скопируйте код тестового события

    В TikTok Events Manager откройте свой пиксель и перейдите в Test events. Скопируйте код тестового события.

  2. Вставьте его в ROASaurus

    Откройте Tracking & platforms, измените пиксель TikTok и вставьте код в поле Test event code. Теперь серверные события несут его.

  3. Оформите тестовый заказ

    Зайдите в свой магазин, посмотрите товар, добавьте его в корзину и оформите заказ.

  4. Проверьте обе стороны

    В Test events отфильтруйте события из браузера и с сервера. Покупка должна быть видна в обоих. В ROASaurus Event log показывает каждую серверную отправку как отправленную или завершившуюся ошибкой.

  5. Удалите тестовый код

    Когда закончите, удалите код тестового события, чтобы ваши рабочие серверные события больше не отправлялись как тестовые.

TikTok может ответить на запрос HTTP 200 и всё равно отклонить событие, указав код ошибки в теле ответа. ROASaurus читает этот код, поэтому отклонённое событие отображается в Event log как неудачное, а не проходит молча.

После суток живого трафика откройте обзор пикселя в Events Manager. В нём перечислены все события с методом подключения, оценкой Event Match Quality и временем последнего получения. Сведения о событии включают информацию о сопоставлении и дедупликации, а Diagnostics перечисляет проблемы качества с советами по их исправлению.

Как настроить TikTok Events API в Shopify с ROASaurus

Вам нужен магазин Shopify с приложением ROASaurus и доступ к TikTok Events Manager. На странице интеграции с TikTok перечислены все поля, которые отправляет ROASaurus.

  1. Подключите магазин Shopify

    Перейдите в Add a store › Shopify, нажмите Install app и включите встроенное приложение ROASaurus (app embed) в редакторе тем. Оно захватывает ttclid и cookie _ttp на каждой странице. Каждый шаг показан в руководстве по настройке Shopify.

  2. Добавьте пиксель чекаута

    В Shopify admin › Settings › Customer events добавьте пользовательский пиксель с именем ROASaurus и вставьте сниппет со страницы Tracking & platforms. Он запускает пиксель TikTok в чекауте, включая копию покупки из браузера.

  3. Создайте токен доступа

    В TikTok Events Manager откройте свой пиксель и создайте токен доступа Events API в его настройках. Скопируйте токен и код пикселя.

  4. Добавьте пиксель TikTok в ROASaurus

    Перейдите в Tracking & platforms, нажмите Add pixel на карточке TikTok и заполните Pixel code и Events API access token. Оставьте отмеченным Also load the browser pixel (recommended, deduplicated), чтобы события из браузера и с сервера использовали общие id.

  5. Добавьте расходы (по желанию)

    Заполните Advertiser ID for spend и Marketing API token. Тогда ROASaurus импортирует расходы TikTok, и кампании TikTok показывают ROAS и CPA рядом с другими вашими каналами.

  6. Протестируйте и запускайте

    Отправьте тестовый заказ с кодом тестового события, как описано выше, затем удалите код.

При включённой настройке 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.

Источники

  1. TikTok For Business: About Events API
  2. TikTok Ads Manager: About Event Deduplication
  3. TikTok Ads Manager: How to Adopt TikTok's Updated Standard Events
  4. TikTok Ads Manager: How to set up matching events with Events API
  5. TikTok Ads Manager: About diagnostic and monitoring tools in TikTok Events Manager

В ROASaurus

Читайте дальше

Рекламные платформы и интернет-магазиныТрекинг конверсий при наложенном платеже и внешних чекаутахТрекинг конверсий при наложенном платеже: почему пиксели не видят заказы с оплатой при получении и из внешних чекаутов, когда отправлять покупку и как обрабатывать отказы от заказа.Рекламные платформы и интернет-магазиныТрекинг конверсий в CCV Shop: руководство по настройкеТрекинг конверсий в CCV Shop: отправляйте оплаченные заказы в Meta и TikTok через подписанный вебхук, связывайте их с кликами по рекламе, настраивайте, тестируйте и учитывайте поздние платежи.Рекламные платформы и интернет-магазиныGoogle Ads enhanced conversions в ShopifyEnhanced conversions добавляют хешированные данные клиента к покупкам в Google Ads в Shopify. Как они работают, чем отличаются от офлайн-импорта и как их настроить.
FAQ

Ответы на вопросы

Одно и то же ли CompletePayment и Purchase в TikTok?

Да. CompletePayment — прежнее название события покупки в TikTok. TikTok преобразует его у себя, показывает как Purchase в отчётности и заявляет, что продолжит поддерживать старое название.

Нужен ли мне пиксель TikTok, если я использую Events API?

TikTok рекомендует использовать оба. Пиксель добавляет сигналы браузера, например cookie _ttp, Events API отправляет каждый заказ, а общий event_id не даёт TikTok посчитать покупку дважды.

Что такое ttclid?

ttclid — это click id, который TikTok добавляет в URL вашего лендинга, когда кто-то кликает по рекламе. Сохраняйте его, когда покупатель попадает на сайт, и отправляйте вместе с покупкой, чтобы TikTok мог связать заказ с кликом.

Как долго TikTok ждёт при дедупликации событий?

TikTok дедуплицирует события с одинаковыми названием события и event_id, которые приходят в пределах 48 часов от первого. Для измерений и отчётности он записывает первую полученную копию.

Нужно ли приложение TikTok в Shopify?

Нет. Если вы его оставляете, отключите пиксель в приложении TikTok. У его событий другие id, поэтому TikTok считал бы каждую покупку дважды.

Отправляются ли покупки, если покупатель отклоняет cookie?

При включённой настройке Respect visitor consent ROASaurus не загружает пиксель и не связывает click id с этим покупателем. Оплаченный заказ всё равно отправляется с сервера с хешированными данными заказа, а также с IP-адресом и user agent из заказа.

Каждая продажа прослежена до рекламы, которая её принесла

Серверный трекинг, прибыль и пожизненная ценность клиента в одном приложении. 14 дней бесплатно, без банковской карты.

Начать бесплатный пробный период →