Короткий ответ
Дедупликация делается через общий уникальный идентификатор события (event_id/deduplication key), который генерируется один раз для конкретной покупки и передаётся в обоих событиях — и в пиксельном, и в серверном; площадка сопоставляет события с одинаковым ID и считает их одной конверсией.
Как это работает подробнее
При отправке события и с клиента (пиксель), и с сервера (CAPI) оба запроса должны содержать одинаковое значение поля дедупликации (например, event_id в Meta или transaction_id для GA4 Enhanced Ecommerce); система на стороне площадки/аналитики видит совпадающий идентификатор в двух источниках и объединяет их в одну запись, а не считает как два отдельных события.
Пример кода
deduplicated-purchase.json
{
"browser": { "event_name": "Purchase", "eventID": "ORDER-10234" },
"server": { "event_name": "Purchase", "event_id": "ORDER-10234" }
}Что использовать на практике
- Практика. На практике идентификатор обычно генерируется на сервере в момент создания заказа (например, ID транзакции в базе данных) и прокидывается как в код пикселя на странице «Спасибо», так и в серверный вызов API — важно, чтобы оба канала использовали именно это значение, а не собственные случайные ID. Для GA4/Enhanced Ecommerce дедупликация покупок на сайте чаще всего выполняется автоматически по
transaction_idбез дополнительной настройки, если оба источника (клиент и сервер через Measurement Protocol) передают одно и то же значение этого параметра для одного заказа.
Подводные камни
- Риск ошибки. Частая ошибка — генерировать разные ID для клиентского и серверного события (например, один — на фронтенде случайным образом, другой — ID из базы), из-за чего дедупликация не срабатывает и каждая покупка задваивается в отчётах, искажая ROAS в лучшую сторону.