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

Серверный трекинг в WooCommerce: руководство по настройке

Настройте серверный трекинг в WooCommerce: отправляйте оплаченные заказы в Meta и TikTok с помощью плагина ROASaurus или вебхуков, сопоставляйте их с кликами по рекламе и тестируйте.

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

Главное
  • Серверный трекинг в WooCommerce отправляет каждый оплаченный заказ из собственных данных заказа магазина в Meta, TikTok и другие рекламные платформы, поэтому покупка засчитывается, даже если браузерный пиксель так и не сработал.
  • ROASaurus считает заказ WooCommerce оплаченным, когда его статус processing или completed. Сюда входят заказы с наложенным платежом и банковскими переводами после того, как вы их подтвердите.
  • Плагин ROASaurus сохраняет id посетителя и cookie клика по рекламе в каждом заказе при оформлении, поэтому заказ точно связан со своим кликом по рекламе.
  • Без плагина webhooks по-прежнему передают каждый оплаченный заказ, но сопоставления со страницей благодарности нет: заказы связываются только по адресу электронной почты, указанному ранее на сайте, или по уникальному IP-адресу и браузеру.
  • В WooCommerce скрипт ROASaurus учитывает плагины согласия, использующие WP Consent API, такие как Complianz и CookieYes, а также баннеры Cookiebot, OneTrust и IAB TCF.

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

В этом руководстве рассказано, почему магазины на WooCommerce теряют конверсии, какие данные заказа даёт WooCommerce и два способа подключить ROASaurus: плагин для WordPress или webhooks. Затем разбираются сопоставление, согласие, настройка и тестирование. Общую идею объясняет материал что такое серверный трекинг.

Почему магазины на WooCommerce теряют конверсии?

Браузерный пиксель сообщает о покупке, только если скрипт пикселя загрузился, покупатель дошёл до страницы благодарности и браузер отправил событие. Каждый из этих шагов может сорваться. Сам заказ при этом остаётся в вашей базе данных, потому что WooCommerce сохраняет его на сервере.

Что происходитБраузерный пиксельДанные заказа в WooCommerce
Покупатель платит через редирект (например, PayPal или банковское приложение) и закрывает вкладкуНет страницы благодарности, нет события покупкиОплаченный заказ, статус processing
Блокировщик рекламы или настройка приватности блокирует скрипт пикселяНет события покупкиОплаченный заказ
Посетитель отклоняет маркетинговые cookieПиксель не должен загружатьсяОплаченный заказ
Банковский перевод подтверждается через три дняВ этот момент ни один браузер не открытСтатус меняется с on hold на processing
Плагин кеширования или оптимизации скриптов задерживает пиксельСобытие может прийти с опозданием или не прийти вовсеОплаченный заказ
Во всех этих случаях оплаченный заказ есть в WooCommerce. Серверный трекинг отправляет этот заказ независимо от того, что произошло в браузере.

Недостающие покупки вредят двумя способами. Рекламная платформа оптимизирует кампании по меньшему числу конверсий, а ваши отчёты показывают меньшую отдачу, чем вы получаете на самом деле. Вот второй эффект в цифрах, для примера магазина с ROAS безубыточности 2.2:

Пример магазина, один месяцТолько пиксельВсе оплаченные заказы
Рекламные расходы на Meta$8,000$8,000
Покупки по кликам из Meta260320
Выручка при $60 за заказ$15,600$19,200
ROAS15,600 ÷ 8,000 = 1.9519,200 ÷ 8,000 = 2.40
Относительно безубыточности (2.2)Выглядит как убытокПрибыльно
Цифры приведены для примера. Одна и та же кампания выглядит убыточной по данным пикселя и приносит деньги по данным заказов.

Что даёт WooCommerce: заказы, webhooks и REST API

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

WooCommerce описывает статус processing как «платёж получен, заказ ожидает выполнения». ROASaurus отправляет заказы со статусом processing или completed и пропускает заказы со статусами pending payment, on hold, failed, cancelled и refunded. Два способа оплаты требуют внимания:

  • Наложенный платёж. WooCommerce переводит такие заказы в processing до получения оплаты, поэтому ROASaurus отправляет их в момент оформления. Исключение — заказы со скачиваемым товаром: они получают статус on hold. О том, что это значит для возвратов и отказов, читайте в материале отслеживание заказов с наложенным платежом.
  • Банковский перевод. WooCommerce переводит такие заказы в on hold, пока вы проверяете платёж. ROASaurus отправляет их, когда вы переводите их в processing.

Webhooks

Webhook — это сообщение, которое WooCommerce отправляет другой системе при изменении чего-либо. Вы создаёте его в WooCommerce › Settings › Advanced › Webhooks. Для темы заказа payload совпадает с объектом заказа, который возвращает REST API. Каждая отправка содержит заголовок X-WC-Webhook-Signature: хеш HMAC-SHA256 от payload в формате base64, созданный с секретом, который вы выбираете. ROASaurus проверяет эту подпись, прежде чем принять заказ.

На практике важны две детали. WooCommerce доставляет webhooks в фоновом режиме, по умолчанию через WP-Cron, поэтому отправка может задерживаться, когда эта очередь отстаёт. И WooCommerce отключает webhook после более чем пяти неудачных доставок подряд.

REST API

REST API позволяет ROASaurus самому запрашивать заказы. С ключом API только для чтения ROASaurus каждые 5 минут запрашивает заказы со статусами processing и completed, изменённые с момента последней проверки, с перекрытием в 30 минут. Заказы, которые у него уже есть, игнорируются. Так ловится любой заказ, который пропустил webhook.

Поле заказаЧто ROASaurus с ним делает
idПревращается в id события order-1042, общий для серверных событий и событий браузера
totalЗначение покупки: итоговая сумма, включая налог и доставку
Billing email, телефон, имя, город, штат, индекс, странаХешируются с помощью SHA-256 и отправляются как данные клиента
customer_ip_address, customer_user_agentОтправляются вместе с событием и используются, чтобы сопоставить заказ с посетителем
line_itemsId товаров (id вариации, если она есть), количества и цены
date_paid_gmtВремя события для заказов из webhook или REST API (дата создания, если даты оплаты нет)
meta_dataС плагином: id посетителя и cookie Meta и TikTok
Что ROASaurus читает из заказа WooCommerce. Webhook и REST API возвращают одни и те же поля.

Плагин или webhooks: два способа подключения

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

Оформление заказаПлагин сохраняет в заказе id посетителя и cookie кликов
Заказ оплаченСтатус processing или completed
ROASaurusПолучает заказ от плагина или из webhook
Рекламные платформыMeta, TikTok и другие получают Purchase с id события order-1042
Путь данных с плагином. Без него на шаге оформления ничего дополнительно не сохраняется, и заказ приходит только через webhook.
Плагин ROASaurusТолько webhooks
Что вы устанавливаетеПлагин для WordPress (PHP 7.4 и WooCommerce 6.0 или новее)Ничего: webhook в настройках WooCommerce
Как приходят заказыПлагин отправляет каждый оплаченный заказ в Orders API ROASaurusWooCommerce отправляет Order updated; дополнительно проверка через REST API каждые 5 минут
Скрипт трекингаЗагружается плагином на каждой страницеВы добавляете его сами, например с помощью плагина WPCode или в теме
Id посетителя и cookie кликов в заказеДа, сохраняются при оформлении (классический и блочный чекаут)Нет
Покупка из браузера на странице благодарностиДа, с тем же id события, что и у серверного событияНет
Сопоставление по странице благодарностиДаНет
Оба подключения отправляют каждый оплаченный заказ. Только плагин связывает каждый заказ с его посетителем при оформлении.

Можно использовать оба сразу. Плагин сохраняет id посетителя в заказе как метаданные заказа, а payload webhook передаёт его дальше. ROASaurus сохраняет каждый заказ один раз по его id в WooCommerce, поэтому плагин и webhook никогда не создают две покупки. Плагин также заявляет поддержку High-Performance Order Storage в WooCommerce.

Как заказ WooCommerce сопоставляется с кликом по рекламе?

Рекламная платформа может засчитать покупку объявлению, только если сумеет их связать. ROASaurus делает это, связывая заказ с посетителем, который кликнул по рекламе, а этот посетитель несёт click id (например, fbclid и ttclid) и параметры UTM с момента захода на сайт. Он пробует следующие методы по порядку и останавливается на первом сработавшем:

  1. Id посетителя, сохранённый в заказе. Только с плагином. Это точная связь.
  2. Покупка из браузера на странице благодарности, которая несёт тот же id заказа. Только с плагином.
  3. Хешированный адрес электронной почты, который посетитель ранее оставил на вашем сайте, например в форме всплывающего окна Klaviyo, Attentive или Wisepops либо через вызов Identify.
  4. Тот же IP-адрес и браузер, замеченные в промежутке от 3 часов до заказа до 15 минут после него, но только если подходит ровно один посетитель. В общих сетях, например в офисах и у мобильных операторов, один IP-адрес часто делят несколько посетителей, и тогда ROASaurus не гадает.

ROASaurus ненадолго ждёт перед отправкой каждой покупки, чтобы событие со страницы благодарности успело прийти первым. Если заказ всё ещё не сопоставлен, он пробует снова в момент отправки. Страница Orders показывает результат по каждому заказу в столбце Matched by. Заказы, связанные по id посетителя из плагина, получают значение cart, как и заказы Shopify.

Отправлено в Meta для заказа 1042Сопоставлен (плагин)Не сопоставлен (только webhooks)
Id события order-1042ДаДа
Хешированные email, телефон, имя и адресДаДа
IP-адрес и браузер заказаДаДа
Click id Meta и id браузера (fbc, fbp)ДаНет
Хешированный id посетителя (external_id)ДаНет
Клик по рекламе в атрибуции ROASaurusКампания и объявление кликаОтображается как прямой или неизвестный
Несопоставленный заказ всё равно доходит до Meta с данными заказа. Сопоставленный заказ дополнительно несёт идентификаторы клика, по которым Meta засчитывает объявление.

Эти идентификаторы клика повышают долю сопоставления событий в Meta. Как Meta их оценивает, объясняет материал Event Match Quality.

У каждого магазина в ROASaurus есть настройка Respect visitor consent, которая по умолчанию включена. В WooCommerce скрипт ROASaurus считывает выбор посетителя из WP Consent API, который заполняют плагины согласия, такие как Complianz и CookieYes. Он также считывает Cookiebot, OneTrust, баннеры IAB TCF и Google consent mode. Пока посетитель не принял маркетинговые cookie, скрипт не устанавливает visitor id и не загружает браузерные пиксели.

Когда посетитель отказывается, скрипт не устанавливает visitor id, не сохраняет click id и не запускает браузерные пиксели, а плагин не сохраняет в заказе cookie отслеживания. Оплаченный заказ по-прежнему отправляется с сервера на подключённые рекламные платформы с хешированными данными клиента из заказа, а также с IP-адресом и браузером заказа. Если ваш юрист считает, что события покупки тоже требуют предварительного согласия, свяжитесь с ROASaurus, прежде чем включать серверную отправку покупок. Подробности есть на справочной странице о согласии, а юридический контекст разобран в материале о Consent Mode v2 и GDPR.

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

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

  1. Добавьте магазин

    В ROASaurus откройте Add a store, выберите WooCommerce и введите домен, на который заходят ваши покупатели.

  2. Создайте ключ API

    Откройте Store settings и в разделе Orders API нажмите Create API key. Сразу скопируйте ключ: он показывается только один раз, рядом с ключом магазина. Endpoint — это адрес перед /api/v1/orders на этой странице.

  3. Установите плагин

    Скачайте плагин и загрузите zip-архив в WordPress в разделе Plugins › Add New Plugin › Upload Plugin, затем активируйте его.

  4. Введите ключи

    В WooCommerce › ROASaurus введите endpoint, ключ магазина и ключ API и сохраните.

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

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

  6. Настройте согласие и протестируйте

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

Без плагина добавьте тег скрипта из Tracking & platforms на каждую страницу, затем создайте webhook. На вкладке Connection вашего магазина указан URL webhook. Держите его в секрете: любой, у кого есть этот URL, может отправлять заказы в ваш магазин.

Настройки webhook
WooCommerce › Settings › Advanced › Webhooks › Add webhook

Status        Active
Topic         Order updated
Delivery URL  (your webhook URL from the Connection tab)
Secret        (a secret of your choice; paste the same one in ROASaurus)
API version   WP REST API Integration v3

Для резервного канала создайте ключ в WooCommerce › Settings › Advanced › REST API с доступом на чтение. Вставьте consumer key и secret на вкладке Connection, сохраните и нажмите Test connection. Fetch orders now сразу подтягивает недавние оплаченные заказы. На странице интеграции с WooCommerce все варианты собраны в одном месте.

Как проверить серверный трекинг в WooCommerce?

Сначала проверьте сторону браузера, затем оформите заказ и проследите его путь до рекламных платформ.

  • Откройте ваш магазин с ?roasaurus=connected в адресе. Оповещение подтвердит, что скрипт работает. С ?roasaurus=debug скрипт пишет в консоль браузера то, что он отправляет.
  • В Event log, в разделе Collected events, просмотры страниц должны показывать visitor id.
  • Оформите тестовый заказ. Быстрее всего с наложенным платежом, потому что заказ сразу получает статус processing.
  • На вкладке Connection поле Last order received показывает время последнего заказа.
  • В Event log, в разделе Server deliveries, у каждой подключённой платформы есть строка со статусом sent и ответом платформы.
PageView visitor 3f9c2a1eСкрипт загружен с согласия
Purchase order-1042Страница благодарности, браузерные пиксели сработали
order 1042 processingПолучено от плагина
Meta Purchase sentТот же event id, дедупликация
TikTok CompletePayment sentТот же event id, дедупликация
Пример здорового тестового заказа с плагином. При использовании только webhooks строки страницы благодарности нет, и это нормально.

Чтобы увидеть событие в Meta, вставьте код из Events Manager › Test events в поле Test event code вашего пикселя Meta в ROASaurus. Когда закончите, удалите его, потому что код предназначен только для тестирования. Если плагин не может доставить заказ, он добавляет в WooCommerce заметку к заказу, которая начинается с «ROASaurus: order not sent», а за ней идёт ошибка.

Ошибки, которых стоит избегать

  • Тема Order created. Заказы, оплаченные через редирект, создаются со статусом pending payment. ROASaurus игнорирует неоплаченные заказы, и второго сообщения «created» при поступлении оплаты не будет. Используйте Order updated.
  • Секрет не совпадает. ROASaurus отклоняет доставку, подпись которой не совпадает с известным ему секретом. После более чем пяти неудач подряд WooCommerce отключает webhook. Исправьте секрет, верните webhook в статус Active и добавьте ключ REST API, чтобы заказы за этот период были подтянуты.
  • Два инструмента отправляют один пиксель. Если другой плагин тоже отправляет ваш пиксель Meta или TikTok, он использует собственные id событий, и платформа засчитывает каждую продажу дважды. Отключите отправку для этого пикселя. См. материалы о предотвращении двойного подсчёта и дублирующихся событиях покупки.
  • Ожидание событий добавления в корзину. В WooCommerce скрипт самостоятельно отслеживает только просмотры страниц. Просмотры товаров и добавления в корзину определяются автоматически только в Shopify. Разработчик может отправлять их вызовом tlq track.
  • Ожидание конверсий Google Ads. ROASaurus отправляет конверсии покупок Google Ads только из чекаута Shopify. Из WooCommerce он отправляет покупки в Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn и другие подключённые вами рекламные платформы.
  • Банковские переводы с опозданием. Meta принимает серверные события не позднее 7 дней после времени события. Плагин отправляет заказ с датой его создания, поэтому Meta отклоняет перевод, подтверждённый более чем через 7 дней после оформления. Заказы, которые приходят через webhook или REST API, используют дату оплаты. Учтите и другое: страница благодарности отправляет браузерную покупку при оформлении, до оплаты перевода. Если платёж подтверждается позже чем через 48 часов, Meta и TikTok не могут объединить копии из браузера и с сервера, а перевод, который так и не оплачен, сохраняет свою браузерную покупку.

Когда заказы пойдут, отчёты по атрибуции покажут, из каких кампаний и объявлений они пришли.

Источники

  1. WooCommerce: Webhooks Documentation
  2. WooCommerce REST API Documentation - WP REST API v3
  3. WooCommerce: Order Statuses Documentation
  4. WooCommerce: Cash on Delivery Documentation
  5. Meta for Developers: Server Event Parameters

В ROASaurus

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

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

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

Нужен ли плагин ROASaurus для WooCommerce?

Нет. Для отправки каждого оплаченного заказа достаточно webhook WooCommerce. Плагин добавляет в каждый заказ id посетителя и cookie кликов, а на страницу благодарности — дедуплицируемую покупку из браузера, что точно связывает заказы с кликами по рекламе, поэтому его рекомендуют.

Какую тему webhook WooCommerce выбрать?

Order updated, с версией API WP REST API Integration v3. ROASaurus игнорирует заказы, которые не имеют статуса processing или completed, и хранит каждый заказ только один раз, поэтому повторные обновления не создают лишних покупок.

Отправляются ли заказы с наложенным платежом в Meta и TikTok?

Да. WooCommerce присваивает заказам с наложенным платежом статус processing при оформлении, а ROASaurus считает заказы в статусе processing оплаченными. Заказы с банковским переводом отправляются, когда вы переводите их из on hold в processing.

Что отправляется, когда посетитель отклоняет cookie?

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

Почему мой webhook WooCommerce перестал работать?

WooCommerce отключает webhook после более чем пяти неудачных доставок подряд. Проверьте, что секрет в WooCommerce совпадает с секретом в ROASaurus, верните webhook в статус Active и добавьте ключ REST API, чтобы пропущенные заказы подтягивались каждые 5 минут.

Отправляет ли ROASaurus конверсии Google Ads из WooCommerce?

Не для покупок. Конверсии покупок Google Ads отправляются только из чекаута Shopify. Из WooCommerce ROASaurus отправляет покупки в Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn и другие подключённые вами рекламные платформы.

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

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

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