Reddit Conversions API GTM: серверная доставка через sGTM
Reddit Conversions API GTM - это не включение встроенного тега: в server-side Google Tag Manager нет нативной Reddit-интеграции, поэтому документированный путь - кастомный серверный шаблон, отправляющий POST-запрос с пейлоадом Reddit v3. Связующие элементы готовы с обеих сторон: кастомный API шаблонов sGTM даёт sendHttpRequest для исходящих POST, а Conversions API Reddit принимает простой JSON на одном эндпоинте. Работа - маппинг между ними.
Механика: кастомный шаблон на sendHttpRequest
Документация server-side tagging от Google определяет API кастомных шаблонов, и sendHttpRequest - его исходящий вызов: шаблон отправляет HTTPS POST из серверного контейнера, с подконтрольными вам заголовками и телом. Эндпоинт событий Reddit - https://ads-api.reddit.com/api/v3/pixels/<pixel_id>/conversion_events, авторизация - conversion access token в bearer-заголовке, тело - JSON data.events. Ни нативного тега, ни обязательной галереи шаблонов - шаблон, URL и токен и есть весь стек. (Если ваш стек позволяет обычный исходящий вебхук, правила пейлоада те же - Reddit всё равно, кто форматировал JSON.)
Маппинг событийной модели sGTM в пейлоад Reddit
| Поле Reddit v3 | Источник в событийной модели sGTM |
|---|---|
event_at | Исходный таймстамп конверсии в Unix-миллисекундах - не момент отправки - в рамках семидневного окна |
action_source | Фиксированный WEBSITE для веб-контейнеров |
type.tracking_type | Маппится из имени входящего события (purchase в PURCHASE, generate_lead в LEAD и так далее) |
metadata.conversion_id | Стабильный идентификатор конверсии - номер заказа или значение, выведенное из событийной модели |
user.ip_address, user.external_id | Из клиентских полей, которые контейнер сохранил; хешированные - по канонизации Reddit |
click_id | Извлекается из query лендинга (rdt_cid), который клиент поймал в момент клика |
event_source_url | page_location, которая заодно служит для Reddit резервным источником клик-ID |
Две детали маппинга несут большую часть ценности. Клик-ID: rdt_cid доезжает до контейнера, только если клиент поймал его в событие - обычно из page_location - и шаблон передаёт его как click_id; цепочка извлечения та же, что в гайде по трекингу rdt_cid. Conversion ID: дедупликация Reddit предпочитает уникальный conversion_id на отдельную конверсию, одинаковый на пикселе и сервере, - шаблон, придумывающий свежее значение на каждую отправку, молча отключает дедуп.
Пайплайны, окна и дисциплина дедупа
Шаблон наследует правила пейлоада Reddit целиком: события нужно отправить в течение семи дней после конверсии, батчи ограничены 1,000 событий на запрос, а задача дедупа обрабатывает только события, прибывшие за два дня. Серверный контейнер, копящий события во время простоя, обязан выгружаться до закрытия окон, а не после, - и шаблон, переотправляющий ту же конверсию со свежим conversion_id, превращает одну конверсию в две на стороне Reddit. Коды ответов с фиксами сведены в таблицу ошибок Reddit Conversions API.
Живой sGTM-деплой - настоящая эксплуатационная работа: версионирование шаблонов, ротация токена при отзыве, мониторинг 429-backoff. Команды, желающие оставить себе только постбек, отдают маппинг автоматике: MOST применяет те же правила пейлоада по каждой сети, а Pixel Activator отправляет одиночные тестовые события без настройки. Карта кластера - в полном руководстве по Reddit Conversions API, креденшелы - в настройке Reddit Conversions API.
