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

Meta Conversions API (CAPI): практическое руководство

Практическое руководство по Meta Conversions API: запускайте его рядом с пикселем с одним event_id, отправляйте нужные параметры, тестируйте события и исправляйте типичные ошибки.

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

Главное
  • Meta Conversions API отправляет события, например Purchase, с вашего сервера, поэтому они доходят до Meta, даже если браузерный пиксель заблокирован.
  • Запускайте его рядом с пикселем и задавайте обеим копиям одинаковые название события и event_id; тогда Meta засчитает событие один раз, если обе копии придут в течение 48 часов.
  • События с сайта требуют action_source, event_source_url и user agent покупателя; хешированные email и телефон, IP-адрес, fbp и fbc определяют, насколько хорошо Meta сможет их сопоставить.
  • Проверяйте на вкладке Test events в Events Manager, а затем удалите тестовый код, потому что тестовые события не отбрасываются.
  • Большинство проблем связано с несовпадающими id событий, собственным IP-адресом сервера, потерянным fbclid или контактными данными, захешированными без нормализации.

Meta Conversions API (CAPI) позволяет вашему серверу отправлять события вроде Purchase прямо в Meta. Пиксель Meta отправляет те же события из браузера покупателя. CAPI отправляет их с вашего сервера, поэтому они доходят, даже когда блокировщик рекламы останавливает пиксель, cookie уже нет или страница благодарности не загрузилась.

В этом руководстве рассказано, что содержит событие Conversions API, как запускать его рядом с пикселем с одним event_id, какие параметры Meta требует и рекомендует, как тестировать через Test events и какие ошибки встречаются чаще всего.

Что такое Meta Conversions API?

Conversions API — часть Graph API Meta. Ваш сервер отправляет HTTPS POST-запрос на graph.facebook.com/VERSION/PIXEL_ID/events с токеном доступа и списком data из не более чем 1,000 событий. Каждое событие описывает одно действие, например покупку, в трёх частях: что произошло, кто это сделал и подробности.

ПолеЧто содержит
event_nameДействие, например Purchase, AddToCart или InitiateCheckout
event_timeКогда это произошло, в виде Unix-метки времени в секундах
event_idУникальный id этого события, используется для его дедупликации с событием пикселя
action_sourceГде это произошло: website для покупок в магазине
event_source_urlURL страницы, на которой произошло событие
user_dataДанные о клиенте для сопоставления: хешированные email и телефон, IP-адрес, user agent, fbp и fbc
custom_dataПодробности, такие как value, currency и content_ids
Каждое событие Conversions API устроено одинаково: действие, данные о клиенте и подробности.

Сокращённое событие Purchase выглядит так:

Conversions API: событие Purchase (сокращённо)
{
  "data": [{
    "event_name": "Purchase",
    "event_time": 1792929600,
    "event_id": "order-1042",
    "action_source": "website",
    "event_source_url": "https://yourstore.com/checkouts/thank-you",
    "user_data": {
      "em": ["<SHA-256 of the normalized email>"],
      "ph": ["<SHA-256 of the normalized phone>"],
      "client_ip_address": "203.0.113.24",
      "client_user_agent": "Mozilla/5.0 (iPhone; ...)",
      "fbp": "fb.1.1792928400000.1234567890",
      "fbc": "fb.1.1792928400000.AbCdEf123"
    },
    "custom_data": { "value": 74.00, "currency": "USD" }
  }]
}

Контактные поля, такие как email и телефон, нормализуются и хешируются с помощью SHA-256 перед отправкой с вашего сервера. IP-адрес, user agent, fbp и fbc отправляются как есть.

Зачем запускать Conversions API рядом с пикселем?

Meta рекомендует запускать Conversions API вместе с пикселем и отправлять одни и те же события по обоим каналам. Каждая сторона видит то, чего не видит другая, а вместе они дают Meta более полные данные.

Пиксель Meta (браузер)
  • Устанавливает cookie _fbp и сохраняет fbclid клика по рекламе в cookie _fbc
  • Видит страницу и браузер во время визита
  • Теряется, если браузер его блокирует или страница не загрузилась
Conversions API (сервер)
  • Отправляет оплаченный заказ из данных вашего магазина
  • Может добавить хешированные email, телефон и адрес из заказа
  • Не зависит от браузера, поэтому блокировщики рекламы его не останавливают
Пиксель приносит идентификаторы браузера, а сервер — заказ. Каждый из них в одиночку упускает часть картины.

Цена работы обоих каналов в том, что Meta теперь получает по две копии каждого события. В следующем разделе показано, как Meta оставляет только одну.

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

Meta считает событие из браузера и серверное событие одним и тем же событием, когда совпадают две вещи: название события и id события. В пикселе id передаётся в опции eventID. В Conversions API то же значение передаётся в event_id.

Пиксель Meta: тот же Purchase с eventID
fbq('track', 'Purchase', { value: 74.00, currency: 'USD' }, { eventID: 'order-1042' });
Покупатель платитЗаказ 1042, $74.00
Пиксель отправляет PurchaseeventID order-1042, из браузера
Сервер отправляет Purchaseevent_id order-1042, из заказа
Meta засчитывает одноОдинаковые название и id в течение 48 часов
У обеих копий одинаковые название и id события, поэтому Meta оставляет одну покупку вместо двух.

Meta дедуплицирует совпадающую пару, только если две копии пришли с разницей не более 48 часов. На практике это обеспечивают несколько правил:

  • Создавайте id один раз. Стройте его из того, что известно обеим сторонам, например из номера заказа, и передавайте и в браузер, и на сервер. Две системы, каждая из которых создаёт свой id, не совпадут.
  • Используйте один формат. order-1042 и 1042 — это разные id.
  • Точно совпадайте по имени события. Purchase и purchase — разные события.
  • Отправляйте серверное событие вовремя. Серверное событие, которое пришло позже чем через 48 часов после события из браузера, засчитывается второй раз.

Meta описывает и второй метод, который сопоставляет события по fbp или external_id. По словам Meta, он, как правило, работает только когда событие из браузера приходит раньше серверного, поэтому общий event_id надёжнее. Если Meta всё равно показывает больше покупок, чем было в вашем магазине, в нашем руководстве о дублирующихся событиях покупки перечислены типичные причины.

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

ПараметрСобытия с сайтаЧто отправлять
event_nameОбязательноСтандартное событие, например Purchase, или название пользовательского события
event_timeОбязательноВремя в формате Unix в секундах, не более чем на 7 дней в прошлом
action_sourceОбязательноwebsite для событий в вашем магазине
event_source_urlОбязательноURL страницы, на которой произошло событие
client_user_agentОбязательноСтрока браузера покупателя, а не вашего сервера
user_dataОбязательноНе менее одного параметра информации о клиенте
event_idРекомендуетсяТот же id, что использует пиксель, для дедупликации
em, phРекомендуетсяEmail и телефон, нормализованные и хешированные с помощью SHA-256
client_ip_addressРекомендуетсяIP-адрес покупателя, без хеширования
fbp, fbcРекомендуетсяCookie с id браузера и click id, без хеширования
external_idРекомендуетсяВаш собственный id клиента, одинаковый в событиях браузера и сервера
value, currencyОтправляйте вместе с PurchaseСумма заказа и трёхбуквенный код валюты
Meta указывает action_source, event_source_url и client_user_agent как обязательные для событий с сайта, отправляемых через Conversions API.

Три детали вызывают большинство проблем:

  • Нормализуйте до хеширования. Meta ожидает email без пробелов по краям и в нижнем регистре, а телефонные номера в виде цифр с кодом страны. Anna@Example.com и anna@example.com дают разные хеши, и совпасть может только второй.
  • Не хешируйте идентификаторы браузера. fbp, fbc, IP-адрес и user agent передаются как есть.
  • Сохраняйте click id в точности как есть. Значение fbc состоит из fb.1., времени создания в миллисекундах, точки и fbclid из URL лендинга. fbclid чувствителен к регистру. Сохраните его, когда посетитель попадает на сайт, потому что при оформлении заказа его в URL уже нет.

Насколько хорошо совпадают эти поля, измеряет оценка Event Match Quality в Meta. Наше руководство по Event Match Quality разбирает каждый параметр, правила хеширования и оценку, к которой стоит стремиться.

Как проверить события с помощью Test events?

В Events Manager есть вкладка Test events, которая показывает события по мере их поступления. Используйте её, прежде чем полагаться на новую настройку.

  1. Откройте Test events

    В Events Manager выберите свой датасет (пиксель) и откройте вкладку Test events. Скопируйте тестовый код, который она показывает.

  2. Добавьте код в серверные события

    Отправьте его как test_event_code в запросе. В ROASaurus вставьте его в поле Test event code пикселя Meta.

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

    Зайдите в магазин, добавьте товар и оплатите его, чтобы и пиксель, и сервер отправили Purchase.

  4. Сравните две копии

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

  5. Проверьте информацию о клиенте

    Серверное событие должно содержать хешированные email и телефон, IP-адрес, user agent и fbp, а также fbc, если визит начался с клика по рекламе.

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

    Meta указывает, что это поле только для тестирования, поэтому удалите его, прежде чем полагаться на события.

Purchase browser order-1042 74.00 USDОт пикселя
Purchase server order-1042 74.00 USDОт Conversions API
event_name + event_id matchЗасчитывается как одна покупка
em ph fbp fbc client_ip_address client_user_agentИнформация о клиенте в серверном событии
Что показывает хороший тестовый заказ (примерные значения): две копии, один id и полная информация о клиенте.

Частые ошибки Conversions API и как их исправить

Что вы видитеВероятная причинаРешение
Весь запрос отклоняется, и ни одно событие не обрабатываетсяУ одного события в пакете event_time старше 7 днейОтправляйте события, когда они происходят. Исправьте или отбросьте старые события, прежде чем повторять запрос.
Meta показывает больше покупок, чем было в вашем магазинеРазные id событий, событие пикселя без eventID или второе приложение, которое отправляет тот же пиксельИспользуйте один id для обеих копий и один серверный отправитель на пиксель.
Низкое качество сопоставления серверных событийВаш сервер отправляет собственные IP-адрес и user agentПередавайте IP-адрес и user agent, записанные из браузера или заказа покупателя.
Мало событий с fbcfbclid не был сохранён на лендинге или был изменёнСохраняйте fbclid в точности так, как он пришёл, и стройте fbc из него.
Email и телефон не совпадаютЗначения хешировались без нормализации или отправлялись без хешированияУберите пробелы по краям email и приведите его к нижнему регистру, оставьте у телефона цифры и код страны, затем хешируйте с помощью SHA-256.
Запросы завершаются ошибкой об истёкшем токенеТокен доступа получен через вход в Facebook, а токены входа истекаютПодключитесь заново или используйте токен System User из Business Manager, который можно создать без срока действия.
Большинство проблем с Conversions API проявляются как отклонённые запросы, двойной подсчёт или низкое качество сопоставления.

После нескольких дней живого трафика откройте вкладку Diagnostics в Events Manager. Meta перечисляет там проблемы и рекомендации по их исправлению. Затем сравните ежедневное число Purchase в Events Manager с числом оплаченных заказов в вашем магазине за те же дни. Если в Meta заметно больше, в нашей справочной статье о предотвращении двойного подсчёта перечислены настройки, которые нужно проверить.

Как настроить Conversions API с ROASaurus

ROASaurus отправляет события Conversions API из данных заказов вашего магазина, поэтому серверную часть не нужно создавать самим. В разделе Tracking & platforms нажмите Connect with Facebook и выберите свой рекламный аккаунт и пиксель либо вставьте id пикселя (датасета) и токен Conversions API. В руководстве по настройке Meta разобраны оба варианта, а на странице интеграции с Meta перечислены все отправляемые поля.

  • Один id с обеих сторон. События браузера и сервера используют один id события. Для покупки это order- и следующий за ним id заказа.
  • Короткая задержка перед покупкой. Серверный Purchase ждёт короткое время после поступления заказа, чтобы можно было сначала присоединить событие покупки из браузера. Тогда его IP-адрес, user agent и URL страницы уходят вместе с серверным событием, а также fbp и fbc, сохранённые для посетителя.
  • Информация о клиенте из заказа. Email, телефон, имя и адрес нормализуются и хешируются с помощью SHA-256. Id клиента в магазине и id посетителя ROASaurus передаются в хешированном виде как external_id.
  • События, которые Meta не сможет сопоставить, пропускаются. Событие, в котором нет ни fbc, ни fbp, ни email, ни телефона, ни IP-адреса, не отправляется.

Event log показывает каждую серверную отправку с запросом и ответом Meta. Если ваша маржа сильно различается по товарам, вы также можете отправлять значение прибыли рядом с каждой покупкой: как это сделать, объясняет наше руководство по оптимизации Meta по ценности для прибыли. Полный путь данных от клика до заказа описан в материале о серверном трекинге.

Источники

  1. Meta for Developers: Handling Duplicate Pixel and Conversions API Events
  2. Meta for Developers: Server Event Parameters
  3. Meta for Developers: Customer Information Parameters
  4. Meta for Developers: Using the API - Conversions API
  5. Meta for Developers: ClickID and the fbp and fbc Parameters

В ROASaurus

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

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

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

Нужны ли мне и пиксель Meta, и Conversions API?

Meta рекомендует использовать оба. Пиксель добавляет данные браузера, такие как cookie fbp, а Conversions API доставляет события, которые браузер упускает. Задайте обеим копиям одно и то же название события и id события, чтобы Meta считала каждое событие один раз.

Как долго Meta ждёт для дедупликации события из браузера и серверного события?

Meta дедуплицирует событие из браузера и серверное событие с одним и тем же названием и id события, если они приходят с разницей не более 48 часов. Копия, которая приходит позже, засчитывается повторно.

Нужно ли хешировать данные клиентов для Conversions API?

Да, для контактных данных. Поля email, телефона, имени и адреса нужно нормализовать и хешировать с помощью SHA-256. IP-адрес, user agent, fbp и fbc отправляются без хеширования.

Какие поля обязательны для события с сайта?

Каждому событию нужны event_name, event_time, action_source и хотя бы один параметр информации о клиенте. Для событий с сайта Meta также требует event_source_url и client_user_agent.

Можно ли отправлять старые заказы через Conversions API?

Только недавние. event_time может быть не старше 7 дней, а если в запросе есть хотя бы одно более старое событие, Meta отклоняет весь запрос.

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

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

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