✅ Чек-лист: Настройка Meta Conversion API через Webhook + Zapier
───────────────────────────────────────────────────────────────
🧩 ЭТАП 1: Подготовка и постановка задачи
☑️ Определить точку срабатывания события:
• После оформления заказа/заполнения формы
• Страница “Спасибо” (/thank-you) или серверный хук
☑️ Подготовить техническое задание для разработчика:
• Сбор email, phone, IP, user agent, fbp, fbc
• Хэширование email и телефона (SHA256)
• Генерация уникального event_id
• Формирование JSON согласно Meta API
• Отправка POST-запроса на Webhook Zapier
☑️ Проверка с разработчиком:
• Всё собирается и отправляется
• fbp/fbc получены из cookies
• Тестовый POST на мок-адрес отработал
───────────────────────────────────────────────────────────────
⚙️ ЭТАП 2: Создание и настройка Zapier
☑️ Создать новый Zap → Название: Purchase → Meta CAPI
☑️ Шаг Trigger:
• App: Webhooks by Zapier
• Event: Catch Hook
• Скопировать выданный URL
• Передать URL разработчику для отправки данных
• Нажать “Test Trigger” → Убедиться, что данные пришли
───────────────────────────────────────────────────────────────
🌐 ЭТАП 3: Получение доступа к Meta API
☑️ Перейти в Events Manager: https://www.facebook.com/events_manager2/list
☑️ Выбрать нужный Pixel → "Settings"
☑️ Скопировать:
• Pixel ID
• Access Token (сгенерировать, если нет)
───────────────────────────────────────────────────────────────
📡 ЭТАП 4: Настройка Action в Zapier (отправка в Meta)
☑️ Добавить Action:
• App: Webhooks by Zapier
• Event: POST
☑️ Настройки:
• URL: https://graph.facebook.com/v18.0/YOUR_PIXEL_ID/events?access_token=YOUR_ACCESS_TOKEN
• Payload Type: json
• Headers: Content-Type: application/json
☑️ Вставить JSON с переменными:
(см. предыдущий шаблон с {{event_name}}, {{event_time}} и т.д.)
☑️ Нажать “Test Action” → Проверить:
• В Events Manager → вкладка "Test Events"
• Появилось событие "Purchase"
───────────────────────────────────────────────────────────────
🚀 ЭТАП 5: Завершение и запуск
☑️ Нажать “Publish Zap”
☑️ Проверить событие на реальных заказах
☑️ Убедиться:
• Значения передаются корректно
• Событие “Purchase” видно в Meta
───────────────────────────────────────────────────────────────
🧠 ДОПОЛНИТЕЛЬНО (если используется Meta Pixel)
☑️ Добавить тот же event_id в клиентский Pixel:
<script>
fbq('track', 'Purchase', {
value: 149.99,
currency: 'USD',
content_ids: ['1001'],
content_type: 'product'
}, {
eventID: 'purchase_9876_1714700000'
});
</script>
───────────────────────────────────────────────────────────────
-- 🛠️ Техническое задание: Интеграция событий “Lead” и “Purchase”
-- через Webhook → Zapier → Meta Conversions API
-- ---------------------------------------------------------------
-- 🎯 Цель:
-- Настроить отправку событий Lead и Purchase с сайта в Zapier
-- через Webhook, с дальнейшей передачей в Meta Conversions API.
-- ---------------------------------------------------------------
-- 📍 Где должен срабатывать Webhook:
-- • Lead — при отправке формы или клике на кнопку.
-- • Purchase — после покупки, на странице /thank-you.
-- 📦 Что нужно реализовать:
-- 1. Собрать данные:
-- • Email клиента (SHA256-хеш)
-- • Время события (UNIX timestamp)
-- • Уникальный event_id
-- • action_source = "website"
-- • Для Purchase: value, currency
-- 2. Пример хеширования email (на сервере):
-- const crypto = require('crypto');
-- const hashEmail = crypto.createHash('sha256')
-- .update(email.trim().toLowerCase())
-- .digest('hex');
-- ----------------------------------------
-- 📩 Код события LEAD (Client → Zapier):
-- ----------------------------------------
<script>
function sendLeadEvent() {
var email = "test@example.com"; // динамически подставляемый email
var hashedEmail = "9d4e1e23bd5b727046a9e3b4b7db57bd"; // SHA256-хеш
var params = new URLSearchParams({
event_name: "Lead",
event_time: Math.floor(Date.now() / 1000),
event_id: "ev_" + Math.floor(Math.random() * 1000000000),
em: hashedEmail,
action_source: "website"
});
var img = new Image();
img.src = "https://hooks.zapier.com/hooks/catch/15157433/2pv28qg/?" + params.toString();
}
sendLeadEvent();
</script>
-- ---------------------------------------------
-- 🛒 Код события PURCHASE (Client → Zapier):
-- ---------------------------------------------
<script>
function sendPurchaseEvent() {
var data = {
event_name: "Purchase",
event_time: Math.floor(Date.now() / 1000),
event_id: "ev_" + Math.floor(Math.random() * 1000000000),
em: "973dfe463ec85785f5f95af5ba3906eedb2d931c24e69824bcb8676d6d4a0d2f",
action_source: "website",
value: 99.99,
currency: "USD"
};
var url = "https://hooks.zapier.com/hooks/catch/15157433/2pvmoyy/?" +
"event_name=" + encodeURIComponent(data.event_name) +
"&event_time=" + data.event_time +
"&event_id=" + data.event_id +
"&em=" + data.em +
"&action_source=" + data.action_source +
"&value=" + data.value +
"¤cy=" + data.currency;
var img = new Image();
img.src = url;
}
sendPurchaseEvent();
</script>
-- ---------------------------------------------------------------
-- ✅ Примечание:
-- Email должен быть заранее захеширован через SHA256.
-- При серверной реализации можно также передавать fbp, fbc, user_agent, ip_address.
-- ---------------------------------------------------------------
⚙️ Гайд: Настройка Zapier для отправки события Purchase в Meta Conversions API
───────────────────────────────────────────────────────────────
🎯 Цель:
Настроить связку: Сайт → Webhook → Zapier → Meta (Facebook) Conversions API
С поддержкой динамического `event_id` и дедупликацией событий между Pixel и API.
📋 Что понадобится:
• Аккаунт в Zapier → https://zapier.com
• Pixel + Events Manager → https://www.facebook.com/events_manager2/list
• Access Token + Pixel ID
• Рабочий Webhook-запрос с сайта (по ТЗ выше)
───────────────────────────────────────────────────────────────
🟢 Шаг 1: Создание Zap
☑️ Перейти на https://zapier.com/app/zaps
☑️ Нажать "Create Zap"
☑️ Название: `Purchase → Meta CAPI`
───────────────────────────────────────────────────────────────
🟠 Шаг 2: Trigger — Webhooks by Zapier
☑️ App: Webhooks by Zapier
☑️ Event: Catch Hook
☑️ Нажать Continue
☑️ Скопировать Custom Webhook URL (пример: `https://hooks.zapier.com/hooks/catch/0000000/abcde123/`)
☑️ Передать URL разработчику
☑️ Отправить тестовый заказ
☑️ Нажать "Test Trigger" — убедиться, что данные пришли
───────────────────────────────────────────────────────────────
🌐 Шаг 3: Получение Access Token и Pixel ID
☑️ Перейти в Events Manager: https://www.facebook.com/events_manager2/list
☑️ Выбрать нужный Pixel → "Settings"
☑️ Скопировать:
• Pixel ID
• Access Token (сгенерировать, если нет)
───────────────────────────────────────────────────────────────
📡 Шаг 4: Настройка Action (Webhooks POST в Meta)
☑️ App: Webhooks by Zapier
☑️ Event: POST
🔧 Настройки:
• URL:
`https://graph.facebook.com/v18.0/YOUR_PIXEL_ID/events?access_token=YOUR_ACCESS_TOKEN`
• Payload Type: `json`
• Headers: `Content-Type: application/json`
📦 В поле "Data" вставить JSON:
{
"data": [
{
"event_name": "{{event_name}}",
"event_time": {{event_time}},
"event_id": "{{event_id}}",
"action_source": "{{action_source}}",
"event_source_url": "{{event_source_url}}",
"user_data": {
"em": {{user_data__em}},
"ph": {{user_data__ph}},
"client_ip_address": "{{user_data__client_ip_address}}",
"client_user_agent": "{{user_data__client_user_agent}}",
"fbc": "{{user_data__fbc}}",
"fbp": "{{user_data__fbp}}"
},
"custom_data": {
"currency": "{{custom_data__currency}}",
"value": {{custom_data__value}},
"content_ids": {{custom_data__content_ids}},
"contents": {{custom_data__contents}},
"content_type": "{{custom_data__content_type}}
}
}
]
}
☑️ Выбрать соответствующие поля из Catch Hook
☑️ Нажать “Test Action”
☑️ Перейти в Events Manager → вкладка “Test Events” → убедиться, что "Purchase" отображается
───────────────────────────────────────────────────────────────
🚀 Шаг 5: Завершение
☑️ Нажать “Publish Zap”
☑️ Проверить работу на реальном заказе
☑️ Проверить дедупликацию: `event_id` должен совпадать с клиентским Pixel
───────────────────────────────────────────────────────────────
🛠 Техническое объяснение: Триггеры Webhook в Zapier и HTTP-методы
═══════════════════════════════════════════════════════════════════
📌 Что такое HTTP-запросы:
• GET — используется для ЗАПРОСА данных с сервера (например, получить список товаров).
• POST — отправка ДАННЫХ на сервер (например, отправить форму, создать заказ).
• PUT — обновление существующих данных на сервере (например, изменить данные заказа).
───────────────────────────────────────────────────────────────────
⚙️ Обзор триггеров Zapier Webhook:
1. 🔹 Catch Hook (Тип: Instant)
───────────────────────────────
• Срабатывает, когда на Webhook URL приходит GET / POST / PUT-запрос.
• Парсит тело запроса в готовые переменные.
• Удобно для JSON и структурированных форм.
📌 Используется, когда:
- Нужны простые поля: email, phone, event_name и пр.
- Не требуется доступ к заголовкам, кукам и IP-адресу.
Пример запроса:
{
"event_name": "Lead",
"email": "test@example.com"
}
───────────────────────────────────────────────────────────────────
2. 🔹 Catch Raw Hook (Тип: Instant)
────────────────────────────────────
• Принимает GET / POST / PUT-запрос, но НЕ парсит тело.
• Возвращает сырые queryString, заголовки и всю "техническую" информацию.
📌 Используется, когда:
- Нужно получить user-agent, IP, cookies (_fbp / _fbc).
- Тело запроса нестандартное или поступает в query-параметрах.
Пример:
https://hooks.zapier.com/...?event_name=Lead&em=abc123...
───────────────────────────────────────────────────────────────────
3. 🔸 Retrieve Poll (Тип: Polling)
────────────────────────────────────
• НЕ webhook. Работает как периодический опрос по URL.
• Проверяет наличие новых данных каждые 5–15 минут.
📌 Используется, когда:
- Внешняя система не поддерживает webhook.
- Можно только получать новые записи через API.
Пример:
GET https://api.service.com/new-orders
───────────────────────────────────────────────────────────────────
📊 Таблица-сравнение:
| Триггер | Реакция | Парсинг тела | Доступ к заголовкам | Подходит для |
|------------------|------------------|---------------|----------------------|--------------|
| Catch Hook | Мгновенно (Instant) | ✅ Да | ❌ Нет | Формы, JSON |
| Catch Raw Hook | Мгновенно (Instant) | ❌ Нет | ✅ Да | Метаданные |
| Retrieve Poll | По расписанию | ✅ Да | ❌ Нет | Legacy API |