Трекинг

Серверный трекинг в Shopify: как он работает и как его настроить

Как работает серверный трекинг в Shopify: события клиента, app proxy, вебхук orders/paid, сопоставление заказов, дедупликация, согласие и настройка.

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

Главное
  • В Shopify серверный трекинг отправляет каждую покупку из оплаченного заказа, о котором Shopify сообщает через webhook, поэтому он не зависит от загрузки страницы благодарности.
  • Id посетителя и click id рекламы сохраняются как атрибуты корзины, поэтому Shopify копирует их в заказ, и заказ можно сопоставить с кликом.
  • События браузера и сервера используют один id события, построенный из id заказа, поэтому Meta, TikTok, Snapchat, Pinterest и Reddit засчитывают каждую покупку один раз.
  • При включённой настройке Respect visitor consent посетитель, отклонивший маркетинговые cookie, не получает id посетителя, а события его браузера не отправляются на рекламные платформы, но оплаченный заказ всё равно отправляется с хешированными данными клиента из заказа.
  • Настройка в ROASaurus состоит из четырёх основных шагов: установите приложение, включите встраивание в тему, добавьте пиксель чекаута и подключите рекламные платформы.

Серверный трекинг в Shopify означает, что каждая покупка попадает в Meta, TikTok и другие рекламные платформы из данных заказов вашего магазина, отправляемых сервером, а не только из пикселя в браузере покупателя. Shopify сообщает о каждом оплаченном заказе приложению трекинга через webhook, а приложение отправляет его в conversions API каждой платформы, сопоставив с кликом по рекламе, который привёл покупателя.

В этом руководстве рассматриваются части этого процесса, относящиеся к Shopify: встраивание в тему и app proxy, пиксели в чекауте, webhook orders/paid, сопоставление заказов, дедупликация, согласие и настройка в ROASaurus. Сначала прочитайте что такое серверный трекинг, чтобы понять общую идею.

Как работает серверный трекинг в Shopify

Клик и покупка происходят в разное время и в разных местах. Клик виден только в браузере, на лендинге. Оплаченный заказ достоверно известен только на стороне Shopify, когда платёж получен. Серверный трекинг записывает первое, ждёт второго и соединяет их.

Клик по рекламеURL лендинга содержит fbclid, ttclid или gclid.
Встраивание в темуСохраняет click id вместе с id посетителя и записывает оба в корзину.
Заказ ShopifyShopify копирует атрибуты корзины в заказ.
webhook orders/paidShopify отправляет оплаченный заказ в ROASaurus.
Conversions APIПокупка уходит с click id и хешированными данными клиента.
Браузер фиксирует клик. Заказ доставляет покупку. Атрибуты корзины связывают их.

Части Shopify: встраивание в тему, app proxy, пиксели и webhooks

Магазин Shopify даёт приложению трекинга четыре места для работы. У каждого своя задача, а полная настройка использует все четыре.

ЧастьГде работаетЧто он делает
Встраивание в темуКаждая страница витриныЗагружает скрипт трекинга, считывает click id рекламы и сохраняет id посетителя в корзине
App proxyПуть на домене вашего магазинаПринимает события витрины как first-party запросы
События клиента (пиксели)Чекаут и страница благодарностиСообщает о шагах чекаута и о завершённом чекауте из песочницы
Webhooks заказовСерверы ShopifyОтправляют заказ приложению при его создании и при оплате
Первые три части обрабатывают то, что происходит в браузере, и фиксируют клик. Webhook приходит с серверов Shopify и доставляет заказ.

Встраивание в тему и app proxy

Встраивание приложения в тему (theme app embed) — это блок, который приложение добавляет в вашу тему. Вы включаете его в редакторе тем, так что вставлять код не нужно. Встраивание ROASaurus загружает скрипт на каждой странице. На лендинге он считывает click id, такие как fbclid, ttclid и gclid, и параметры UTM и сохраняет их вместе с first-party id посетителя.

Скрипт отправляет свои события через app proxy Shopify. App proxy пересылает запросы с пути на вашем домене, например yourstore.com/apps/roasaurus, на сервер приложения. Для браузера это запрос к вашему собственному сайту, что может помочь против блокировщиков рекламы, которые блокируют известные домены трекинга. Shopify удаляет заголовок Cookie из запросов app proxy и заголовок Set-Cookie из ответов, поэтому id посетителя передаётся внутри самого события, а не в cookie.

События клиента и пиксели в чекауте

В чекауте Shopify скрипты трекинга работают как пиксели в песочнице, а не на самой странице. Управлять ими можно в разделе Settings › Customer events. Есть два вида. Пиксели приложений поставляются вместе с приложением и работают в строгой песочнице. Пользовательские пиксели добавляет владелец магазина, и они работают в менее строгой песочнице, где можно загружать сторонние скрипты, например пиксель Meta.

ROASaurus использует оба вида. Его пиксель приложения включается при установке приложения. Он сообщает ROASaurus о начале чекаута, шаге с контактными данными и завершённом чекауте. Необязательный пользовательский пиксель добавляет в чекаут браузерные пиксели Meta, TikTok, Snapchat, Pinterest и Reddit, а также отправляет конверсии Google Ads.

Webhooks заказов

Webhook — это сообщение, которое Shopify отправляет приложению, когда в магазине что-то происходит. ROASaurus подписывается, в частности, на orders/paid и orders/create. Заказ в webhook содержит id заказа, сумму, товарные позиции, данные клиента, токены корзины и чекаута, атрибуты корзины, а также IP-адрес и браузер, с которых был оформлен заказ. Он приходит с серверов Shopify, поэтому блокировщик рекламы или закрытая вкладка не могут его остановить.

Как заказы сопоставляются с кликами по рекламе

Webhook сообщает ROASaurus, что заказ оплачен. Чтобы отправить полезную конверсию, ROASaurus нужно знать ещё и то, какой посетитель оформил заказ, потому что в записи посетителя хранятся click id. Он пробует эти связи по порядку, от самой прямой к наименее прямой:

МетодКак это работаетКогда используется
Атрибут корзиныСкрипт записывает id посетителя и значения fbc, fbp, ttp, gclid и ttclid как атрибуты корзины. Shopify копирует их в заказ.Первый выбор
Токены корзины и чекаутаСкрипт связывает токен корзины с посетителем, а пиксель чекаута связывает токен чекаута. Webhook содержит оба токена.Когда атрибута корзины нет
Событие чекаутаПиксель чекаута сообщает о завершённом чекауте с id заказа и id посетителя.Когда ни один токен не совпал
Адрес emailХешированный email посетителя, который он ввёл ранее, например на шаге с контактными данными в чекауте.Когда события чекаута нет
IP-адрес и браузерПосетитель, замеченный с тем же IP-адресом и браузером незадолго до заказа.Только если подходит ровно один посетитель
Атрибуты корзины и токены дают прямую связь заказа с посетителем. Запасной вариант по IP-адресу никогда не используется, если могут подойти два посетителя.

Атрибуты корзины — причина того, что в Shopify сопоставление прямое. Это пары «ключ — значение», которые хранятся в корзине, а Shopify копирует их в заказ. Значение, записанное на странице товара, остаётся на месте к моменту прихода webhook, даже если покупатель рано закрыл страницу благодарности.

Есть одно исключение: кнопки ускоренного оформления заказа, например Buy it now, пропускают корзину. ROASaurus советует отключить их, чтобы добавление в корзину отслеживалось всегда. Заказы, оформленные через них, по-прежнему можно сопоставить по токену чекаута.

Один заказ от начала до конца

Вот что происходит с одним заказом из рекламы Meta при установленном пользовательском пикселе:

page_view ?fbclid=IwAR2x…Покупатель приходит по рекламе Meta. Click id сохраняется с посетителем 3f2a.
cart _tl=3f2a _tl_fbc=fb.1.…Id посетителя и значение клика Meta сохраняются как атрибуты корзины.
checkout_started ic-c1a9…Токен чекаута связывается с тем же посетителем.
checkout_completed order-6123456789012Пиксель чекаута сообщает о заказе, а пиксель Meta отправляет Purchase с этим id события.
orders/paid #1042 id 6123456789012 $86.00Shopify отправляет оплаченный заказ через webhook.
Meta CAPI Purchase order-6123456789012После короткой задержки серверное событие уходит с click id, IP-адресом и user agent.
Оба события Purchase несут id события order-6123456789012, поэтому Meta оставляет одно. Серверная копия приходит и тогда, когда браузерная копия была заблокирована.

Когда отправляется покупка: orders/paid или orders/create

Какой webhook запускает отправку покупки, зависит от того, как платят ваши покупатели. Вы выбираете это как тип чекаута в Store settings.

Тип чекаутаВебхукКогда отправляется покупка
Shopify checkoutorders/paidКогда заказ оплачен. Заказы, которые так и не оплачены, не отправляются.
External / COD checkoutorders/createКогда заказ создан. Для наложенного платежа и для чекаутов вроде Checkify и CheckoutChamp, которые создают заказы Shopify.

ROASaurus ненадолго удерживает каждую покупку после прихода webhook. За это время обычно приходит и событие завершённого чекаута из браузера. Его URL страницы, IP-адрес и user agent затем добавляются к серверному событию рядом с click id из записи посетителя. Заказы, которые Shopify помечает как тестовые, записываются, но не отправляются на рекламные платформы.

Как работает дедупликация с браузерными пикселями

Когда браузерные пиксели работают рядом с серверными событиями, платформа получает каждую покупку дважды и должна оставить только одну. Она делает это по id события. ROASaurus присваивает обеим копиям покупки один и тот же id, построенный из id заказа Shopify: order-6123456789012 для заказа с id 6123456789012. Это длинное число в админском URL заказа, а не название заказа вроде #1042. Пиксель чекаута использует его для браузерного Purchase, а сервер — для события conversions API. Например, Meta оставляет одну копию, когда совпадают название и id события и обе пришли в течение 48 часов.

ПлатформаБраузерный пиксель от ROASaurusДедуплицируется с серверным событием
Meta, TikTok, Snapchat, Pinterest, RedditВитрина и чекаутДа
X, Microsoft Advertising, TaboolaНет, только серверные событияНечего объединять
Google AdsТолько чекаут, через пользовательский пиксельОтправляется один раз, из чекаута
Совместная работа браузерного пикселя и серверного события безопасна для Meta, TikTok, Snapchat, Pinterest и Reddit: каждая платформа оставляет одну копию каждого общего события.

Id события работает только между событиями, которые его несут. Если другое приложение отправляет тот же пиксель, у его событий свои id, и платформа засчитывает заказ повторно. В Shopify обычные причины — канал Facebook & Instagram, подключённый к тому же пикселю, приложение TikTok и код пикселя, вставленный в theme.liquid. Наше руководство по дублирующимся событиям покупки показывает, как их найти, а материал Предотвращение двойного подсчёта перечисляет способы исправления.

Customer Privacy API Shopify хранит выбор cookie каждого посетителя. Его заполняет ваш баннер cookie, будь то собственный баннер Shopify или приложение согласия, подключённое к API. Скрипты и пиксели затем могут спросить у него, разрешён ли маркетинг для этого посетителя.

При включённой настройке Respect visitor consent, которая стоит по умолчанию в Store settings, скрипт витрины и пиксели чекаута ROASaurus спрашивают API, прежде чем начать отслеживание.

Посетитель разрешает маркетинговые cookie
  • Сохраняются id посетителя, click id и события просмотра
  • Браузерные пиксели загружаются и отправляют события
  • Оплаченный заказ отправляется с сервера и сопоставляется с кликом по рекламе
Посетитель отклоняет маркетинговые cookie
  • Id посетителя не задаётся, поэтому его визиты и клики по рекламе к нему не привязываются
  • События браузера сохраняются без id посетителя, IP-адреса и сведений о браузере и не отправляются на рекламные платформы
  • Оплаченный заказ по-прежнему отправляется с сервера с хешированными данными клиента из заказа, а также с IP-адресом и user agent заказа
  • Событие, которое доходит до рекламной платформы, не содержит click id
Серверный трекинг не отменяет необходимость согласия. Без согласия оплаченный заказ всё равно доходит до рекламных платформ, но без click id.

Email, телефоны, имена и адреса хешируются с помощью SHA-256 перед отправкой на рекламную платформу. Важны ещё три детали:

  • Решает ваш баннер. ROASaurus следует тому, что сообщает API. Если API на странице недоступен, ROASaurus считает посетителя давшим согласие, поэтому убедитесь, что ваш баннер к нему подключён.
  • Лендинг остаётся в заказе. Shopify хранит адрес лендинга вместе с каждым заказом, и он может содержать метки кампании и click id. ROASaurus использует его в собственных отчётах по атрибуции, в том числе для посетителей, которые отказались, и не отправляет его на рекламные платформы.
  • Отправка заказа — юридическое решение. Можно ли вообще отправлять оплаченный заказ посетителя, который отказался, — это юридический вопрос для вашего магазина.

Наше руководство по Consent Mode v2 и GDPR объясняет правила в общих чертах, а в разделе Согласие и конфиденциальность есть подробности.

Как настроить серверный трекинг в Shopify с ROASaurus

Выполняйте шаги настройки в таком порядке:

  1. Установите приложение

    Откройте Add a store, выберите Shopify, введите свой домен .myshopify.com и нажмите Install app. Подтвердите приложение в Shopify. ROASaurus зарегистрирует webhooks заказов и включит свой пиксель приложения.

  2. Включите встраивание в тему

    На странице Tracking & platforms нажмите Open theme editor, включите встраивание ROASaurus и сохраните.

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

    В Shopify admin откройте Settings › Customer events и добавьте пользовательский пиксель с названием ROASaurus. Установите для него разрешение Not required, потому что скрипт ROASaurus сам проверяет маркетинговый выбор посетителя. Вставьте сниппет со страницы Tracking & platforms. Этот пиксель нужен для браузерных пикселей в чекауте и для Google Ads.

  4. Подключите рекламные платформы

    В разделе Tracking & platforms нажмите Add pixel для каждой платформы или Connect with Facebook для Meta. Оставьте включённой опцию загрузки браузерного пикселя, если вам нужны дедуплицированные события браузера.

  5. Проверьте настройки магазина

    В Store settings выберите тип чекаута и оставьте включённой настройку Respect visitor consent, если вы продаёте там, где требуется согласие.

  6. Уберите других отправителей

    В канале Facebook & Instagram удалите этот пиксель из настроек передачи данных. Снижения уровня передачи данных недостаточно, потому что каждый уровень, включая Standard, отправляет пиксель Meta из браузера. Если то же самое делает приложение TikTok, остановите и его, а также удалите код пикселя из темы.

Сниппет пользовательского пикселя выглядит так. Скопируйте его со страницы Tracking & platforms, где ключ вашего магазина уже подставлен. Те же шаги описаны в руководстве по настройке Shopify.

Пользовательский пиксель чекаута
self.tl = this; document.head.appendChild(document.createElement('script')).src = 'https://app.roasaurus.com/c.js?k=YOUR_STORE_KEY';

Как проверить, что всё работает

Протестируйте на одном реальном заказе, прежде чем полагаться на цифры:

  1. Откройте свой магазин с ?roasaurus=connected в конце URL. Сообщение подтвердит, что скрипт работает.
  2. Для Meta вставьте код из Events Manager › Test events в поле Test event code пикселя.
  3. Оформите реальный недорогой заказ и затем сделайте по нему возврат. Тестовые заказы Shopify не отправляются.
  4. В Event log серверная отправка по заказу отображается для каждой платформы как sent вместе с ответом платформы.
  5. В тестовом представлении платформы проверьте, что браузерный и серверный Purchase используют один id события: order- плюс id заказа Shopify.
  6. После этого удалите тестовый код события.

Что серверный трекинг в Shopify не решает

  • Отказ от согласия. Заказы посетителей, отклонивших маркетинговые cookie, отправляются, но без click id, поэтому рекламные платформы сопоставляют их хуже.
  • Ограничения cookie в Safari. Покупатель, вернувшийся позже чем через 7 дней, может выглядеть как новый посетитель. First-party поддомен для трекинга оставляет сбор на вашем домене, но Safari всё равно может ограничивать срок жизни таких cookie 7 днями.
  • Различия в атрибуции. Каждая рекламная платформа по-прежнему засчитывает продажи по своим окнам и моделям. Чтобы сравнивать каналы по единым правилам, используйте собственную атрибуцию.
  • Другие приложения на том же пикселе. Id событий объединяют только те события, у которых они совпадают.

Он решает другое: покупки, которые произошли, но не дошли до рекламной платформы, потому что событие браузера потерялось. О том, что ROASaurus отправляет на каждую платформу, см. серверный трекинг и интеграцию с Shopify.

Источники

  1. Shopify: Customer Privacy API
  2. Shopify: Authenticate app proxies
  3. Shopify Help Center: Manage your custom pixels
  4. Shopify Help Center: Facebook data sharing
  5. Meta: Handling Duplicate Pixel and Conversions API Events

В ROASaurus

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

ТрекингБлокировщики рекламы и трекинг: что теряет ваш магазинБлокировщики рекламы останавливают пиксели трекинга, поэтому рекламные платформы не видят часть покупок. Узнайте, какие события теряются, почему серверные события не теряются, и как измерить свой разрыв.ТрекингConsent Mode v2 и GDPR: что может отправлять интернет-магазинConsent Mode v2 для интернет-магазинов: четыре сигнала согласия Google, что требует законодательство ЕС и что серверный трекинг всё ещё может отправлять. Только общая информация.ТрекингДублирующиеся события покупки: почему продажи считаются дваждыДублирующиеся события покупки завышают конверсии и ROAS. Узнайте о причинах, о том, как Meta, TikTok, Snapchat, Pinterest и Reddit выполняют дедупликацию, и как это исправить.
FAQ

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

Нужен ли браузерный пиксель при серверном трекинге в Shopify?

Лучше использовать оба. Браузерный пиксель даёт cookie, такие как fbp, и контекст страницы, а серверное событие приходит, даже когда браузер подводит. При общем id события платформа засчитывает каждую покупку один раз.

Зависит ли серверный трекинг от страницы благодарности Shopify?

Нет. Покупка строится из заказа, который Shopify отправляет через webhook после оплаты. Событие со страницы благодарности лишь добавляет детали, такие как IP-адрес и user agent, если успевает прийти вовремя.

Нужны ли CNAME или изменение DNS в Shopify?

Нет. События витрины идут через app proxy Shopify на домене вашего магазина. First-party поддомен для трекинга необязателен.

Соответствует ли серверный трекинг в Shopify требованиям GDPR?

Серверный трекинг — это способ доставки данных, а не правовое основание. При включённой настройке Respect visitor consent ROASaurus следует Customer Privacy API Shopify, но оплаченный заказ всё равно отправляется с хешированными данными. Уточните у своего юриста, что нужно вашему магазину.

Как отслеживаются заказы с наложенным платежом в Shopify?

Выберите External / COD checkout как тип чекаута в Store settings. Тогда ROASaurus отправляет покупку при создании заказа, а не при его оплате.

Какие рекламные платформы получают серверные события из магазина Shopify?

Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Advertising, Taboola, LinkedIn, OpenAI Ads, Spotify, AppLovin, Criteo, AdRoll и Outbrain. Конверсии Google Ads отправляются из чекаута Shopify через пользовательский пиксель.

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

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

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