- Серверный трекинг в 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 |
| Плагин кеширования или оптимизации скриптов задерживает пиксель | Событие может прийти с опозданием или не прийти вовсе | Оплаченный заказ |
Недостающие покупки вредят двумя способами. Рекламная платформа оптимизирует кампании по меньшему числу конверсий, а ваши отчёты показывают меньшую отдачу, чем вы получаете на самом деле. Вот второй эффект в цифрах, для примера магазина с ROAS безубыточности 2.2:
| Пример магазина, один месяц | Только пиксель | Все оплаченные заказы |
|---|---|---|
| Рекламные расходы на Meta | $8,000 | $8,000 |
| Покупки по кликам из Meta | 260 | 320 |
| Выручка при $60 за заказ | $15,600 | $19,200 |
| ROAS | 15,600 ÷ 8,000 = 1.95 | 19,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_items | Id товаров (id вариации, если она есть), количества и цены |
date_paid_gmt | Время события для заказов из webhook или REST API (дата создания, если даты оплаты нет) |
meta_data | С плагином: id посетителя и cookie Meta и TikTok |
Плагин или webhooks: два способа подключения
Оба подключения отправляют каждый оплаченный заказ. Они различаются тем, насколько хорошо каждый заказ связан с кликом по рекламе, который привёл покупателя.
| Плагин ROASaurus | Только webhooks | |
|---|---|---|
| Что вы устанавливаете | Плагин для WordPress (PHP 7.4 и WooCommerce 6.0 или новее) | Ничего: webhook в настройках WooCommerce |
| Как приходят заказы | Плагин отправляет каждый оплаченный заказ в Orders API ROASaurus | WooCommerce отправляет 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 с момента захода на сайт. Он пробует следующие методы по порядку и останавливается на первом сработавшем:
- Id посетителя, сохранённый в заказе. Только с плагином. Это точная связь.
- Покупка из браузера на странице благодарности, которая несёт тот же id заказа. Только с плагином.
- Хешированный адрес электронной почты, который посетитель ранее оставил на вашем сайте, например в форме всплывающего окна Klaviyo, Attentive или Wisepops либо через вызов Identify.
- Тот же 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 их оценивает, объясняет материал Event Match Quality.
Согласие в WooCommerce
У каждого магазина в 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
Вот шаги для варианта с плагином:
- Добавьте магазин
В ROASaurus откройте Add a store, выберите WooCommerce и введите домен, на который заходят ваши покупатели.
- Создайте ключ API
Откройте Store settings и в разделе Orders API нажмите Create API key. Сразу скопируйте ключ: он показывается только один раз, рядом с ключом магазина. Endpoint — это адрес перед
/api/v1/ordersна этой странице. - Установите плагин
Скачайте плагин и загрузите zip-архив в WordPress в разделе Plugins › Add New Plugin › Upload Plugin, затем активируйте его.
- Введите ключи
В WooCommerce › ROASaurus введите endpoint, ключ магазина и ключ API и сохраните.
- Подключите рекламные платформы
В разделе Tracking & platforms нажмите Connect with Facebook или Add pixel для Meta, TikTok и остальных. Отметьте опцию загрузки браузерного пикселя, чтобы покупка со страницы благодарности дедуплицировалась с серверным событием.
- Настройте согласие и протестируйте
Заблокируйте скрипт в инструменте согласия, пока посетитель не примет маркетинговые cookie, затем оформите тестовый заказ.
Без плагина добавьте тег скрипта из Tracking & platforms на каждую страницу, затем создайте webhook. На вкладке Connection вашего магазина указан URL webhook. Держите его в секрете: любой, у кого есть этот URL, может отправлять заказы в ваш магазин.
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, дедупликацияЧтобы увидеть событие в 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. Разработчик может отправлять их вызовом
tlqtrack. - Ожидание конверсий 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 не могут объединить копии из браузера и с сервера, а перевод, который так и не оплачен, сохраняет свою браузерную покупку.
Когда заказы пойдут, отчёты по атрибуции покажут, из каких кампаний и объявлений они пришли.
Источники
- WooCommerce: Webhooks Documentation
- WooCommerce REST API Documentation - WP REST API v3
- WooCommerce: Order Statuses Documentation
- WooCommerce: Cash on Delivery Documentation
- Meta for Developers: Server Event Parameters