Использование API

Выполните предварительные требования на странице Начало работы, а затем используйте эту страницу, чтобы узнать, как отправлять события и использовать инструмент тестирования событий. После отправки события проверьте свои настройки.

В основе Conversions API лежит Marketing API Facebook, который, в свою очередь, создан на базе нашего Graph API. Для Marketing API и Graph API действуют разные графики упразднения версий. Наш цикл выпуска соответствует графику для Graph API, поэтому каждая версия поддерживается как минимум два года. Это исключение действительно только для Conversions API.

Обзор Conversions APIПараметры

Для событий с сайта, из приложения или физического магазина, отправленных через Conversions API, требуются определенные параметры. Используя Conversions API, вы соглашаетесь, что параметр action_source является максимально точным, насколько вам это известно. Их список можно посмотреть в этой статье.

Отправка запросов

Для отправки новых событий выполните запрос POST к границе контекста /events этого API со следующего пути: https://graph.facebook.com/{API_VERSION}/{PIXEL_ID}/events?access_token={TOKEN}. При отправке запроса POST к этой границе контекста Facebook создает новые серверные события.

curl -X POST \ -F 'data=[ { "event_name": "Purchase", "event_time": 1734848689, "user_data": { "em": [ "309a0a5c3e211326ae75ca18196d301a9bdbd1a882a4d2569511033da23f0abd" ], "ph": [ "254aa248acb47dd654ca3ea53f48c2c26d641d23d7e2e93a1ec56258df7674c4", "6f4fcb9deaeadc8f9746ae76d97ce1239e98b404efe5da3ee0b7149740f89ad6" ], "client_ip_address": "123.123.123.123", "client_user_agent": "$CLIENT_USER_AGENT", "fbc": "fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890", "fbp": "fb.1.1558571054389.1098115397" }, "custom_data": { "currency": "usd", "value": 123.45, "contents": [ { "id": "product123", "quantity": 1, "delivery_category": "home_delivery" } ] }, "event_source_url": "http://jaspers-market.com/product/123", "action_source": "website" } ]' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0/<PIXEL_ID>/events
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const Content = bizSdk.Content; const CustomData = bizSdk.CustomData; const DeliveryCategory = bizSdk.DeliveryCategory; const EventRequest = bizSdk.EventRequest; const UserData = bizSdk.UserData; const ServerEvent = bizSdk.ServerEvent; const access_token = '<ACCESS_TOKEN>'; const pixel_id = '<ADS_PIXEL_ID>'; const api = bizSdk.FacebookAdsApi.init(access_token); let current_timestamp = Math.floor(new Date() / 1000); const userData = (new UserData()) .setEmails(['joe@eg.com']) .setPhones(['12345678901', '14251234567']) // It is recommended to send Client IP and User Agent for Conversions API Events. .setClientIpAddress(request.connection.remoteAddress) .setClientUserAgent(request.headers['user-agent']) .setFbp('fb.1.1558571054389.1098115397') .setFbc('fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890'); const content = (new Content()) .setId('product123') .setQuantity(1) .setDeliveryCategory(DeliveryCategory.HOME_DELIVERY); const customData = (new CustomData()) .setContents([content]) .setCurrency('usd') .setValue(123.45); const serverEvent = (new ServerEvent()) .setEventName('Purchase') .setEventTime(current_timestamp) .setUserData(userData) .setCustomData(customData) .setEventSourceUrl('http://jaspers-market.com/product/123') .setActionSource('website'); const eventsData = [serverEvent]; const eventRequest = (new EventRequest(access_token, pixel_id)) .setEvents(eventsData); eventRequest.execute().then( response => { console.log('Response: ', response); }, err => { console.error('Error: ', err); } );
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; use FacebookAds\Object\ServerSide\ActionSource; use FacebookAds\Object\ServerSide\Content; use FacebookAds\Object\ServerSide\CustomData; use FacebookAds\Object\ServerSide\DeliveryCategory; use FacebookAds\Object\ServerSide\Event; use FacebookAds\Object\ServerSide\EventRequest; use FacebookAds\Object\ServerSide\UserData; $access_token = '<ACCESS_TOKEN>'; $pixel_id = '<ADS_PIXEL_ID>'; $api = Api::init(null, null, $access_token); $api->setLogger(new CurlLogger()); $user_data = (new UserData()) ->setEmails(array('joe@eg.com')) ->setPhones(array('12345678901', '14251234567')) // It is recommended to send Client IP and User Agent for Conversions API Events. ->setClientIpAddress($_SERVER['REMOTE_ADDR']) ->setClientUserAgent($_SERVER['HTTP_USER_AGENT']) ->setFbc('fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890') ->setFbp('fb.1.1558571054389.1098115397'); $content = (new Content()) ->setProductId('product123') ->setQuantity(1) ->setDeliveryCategory(DeliveryCategory::HOME_DELIVERY); $custom_data = (new CustomData()) ->setContents(array($content)) ->setCurrency('usd') ->setValue(123.45); $event = (new Event()) ->setEventName('Purchase') ->setEventTime(time()) ->setEventSourceUrl('http://jaspers-market.com/product/123') ->setUserData($user_data) ->setCustomData($custom_data) ->setActionSource(ActionSource::WEBSITE); $events = array(); array_push($events, $event); $request = (new EventRequest($pixel_id)) ->setEvents($events); $response = $request->execute(); print_r($response);
import time from facebook_business.adobjects.serverside.action_source import ActionSource from facebook_business.adobjects.serverside.content import Content from facebook_business.adobjects.serverside.custom_data import CustomData from facebook_business.adobjects.serverside.delivery_category import DeliveryCategory from facebook_business.adobjects.serverside.event import Event from facebook_business.adobjects.serverside.event_request import EventRequest from facebook_business.adobjects.serverside.user_data import UserData from facebook_business.api import FacebookAdsApi access_token = '<ACCESS_TOKEN>' pixel_id = 'ADS_PIXEL_ID>' FacebookAdsApi.init(access_token=access_token) user_data = UserData( emails=['joe@eg.com'], phones=['12345678901', '14251234567'], # It is recommended to send Client IP and User Agent for Conversions API Events. client_ip_address=request.META.get('REMOTE_ADDR'), client_user_agent=request.headers['User-Agent'], fbc='fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890', fbp='fb.1.1558571054389.1098115397', ) content = Content( product_id='product123', quantity=1, delivery_category=DeliveryCategory.HOME_DELIVERY, ) custom_data = CustomData( contents=[content], currency='usd', value=123.45, ) event = Event( event_name='Purchase', event_time=int(time.time()), user_data=user_data, custom_data=custom_data, event_source_url='http://jaspers-market.com/product/123', action_source=ActionSource.WEBSITE, ) events = [event] event_request = EventRequest( events=events, pixel_id=pixel_id, ) event_response = event_request.execute() print(event_response)
import com.facebook.ads.sdk.APIContext; import com.facebook.ads.sdk.APIException; import com.facebook.ads.sdk.serverside.ActionSource; import com.facebook.ads.sdk.serverside.Content; import com.facebook.ads.sdk.serverside.CustomData; import com.facebook.ads.sdk.serverside.DeliveryCategory; import com.facebook.ads.sdk.serverside.Event; import com.facebook.ads.sdk.serverside.EventRequest; import com.facebook.ads.sdk.serverside.EventResponse; import com.facebook.ads.sdk.serverside.UserData; import java.util.Arrays; public class ServerSideApiExample { public static final String ACCESS_TOKEN = "<ACCESS_TOKEN>"; public static final String PIXEL_ID = "<ADS_PIXEL_ID>"; public static void main(String[] args) { APIContext context = new APIContext(ACCESS_TOKEN).enableDebug(true); context.setLogger(System.out); UserData userData = new UserData() .emails(Arrays.asList("joe@eg.com")) .phones(Arrays.asList("12345678901", "14251234567")) // It is recommended to send Client IP and User Agent for Conversions API Events. .clientIpAddress(clientIpAddress) .clientUserAgent(clientUserAgent) .fbc("fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890") .fbp("fb.1.1558571054389.1098115397"); Content content = new Content() .productId("product123") .quantity(1L) .deliveryCategory(DeliveryCategory.home_delivery); CustomData customData = new CustomData() .addContent(content) .currency("usd") .value(123.45F); Event purchaseEvent = new Event(); purchaseEvent.eventName("Purchase") .eventTime(System.currentTimeMillis() / 1000L) .userData(userData) .customData(customData) .eventSourceUrl("http://jaspers-market.com/product/123") .actionSource(ActionSource.website); EventRequest eventRequest = new EventRequest(PIXEL_ID, context); eventRequest.addDataItem(purchaseEvent); try { EventResponse response = eventRequest.execute(); System.out.println(String.format("Standard API response : %s ", response)); } catch (APIException e) { e.printStackTrace(); } } }
require 'facebook_ads' access_token = '<ACCESS_TOKEN>' pixel_id = '<ADS_PIXEL_ID>' FacebookAds.configure do |config| config.access_token = access_token end user_data = FacebookAds::ServerSide::UserData.new( emails: ['joe@eg.com'], phones: ['12345678901', '14251234567'], # It is recommended to send Client IP and User Agent for Conversions API Events. client_ip_address: request.remote_ip, client_user_agent: request.user_agent, fbc: 'fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890', fbp: 'fb.1.1558571054389.1098115397' ) content = FacebookAds::ServerSide::Content.new( product_id: 'product123', quantity: 1, delivery_category: 'home_delivery' ) custom_data = FacebookAds::ServerSide::CustomData.new( contents: [content], currency: 'usd', value: 123.45 ) event = FacebookAds::ServerSide::Event.new( event_name: 'Purchase', event_time: Time.now.to_i, user_data: user_data, custom_data: custom_data, event_source_url: 'http://jaspers-market.com/product/123', action_source: 'website' ) request = FacebookAds::ServerSide::EventRequest.new( pixel_id: pixel_id, events: [event] ) print request.execute

Прикрепите к этому запросу созданный вами безопасный маркер доступа в параметре access_token. Для отправки запроса POST к конечной точке /<pixel_id>/events также можно использовать Graph API Explorer.

Пример тела запроса:

{
   "data": [
      {
         "event_name": "Purchase",
         "event_time": 1633552688,
         "event_id": "event.id.123",
         "event_source_url": "http:\/\/jaspers-market.com\/product\/123",         
         "action_source": "website",
         "user_data": {
            "client_ip_address": "192.19.9.9",
            "client_user_agent": "test ua",
            "em": [
               "309a0a5c3e211326ae75ca18196d301a9bdbd1a882a4d2569511033da23f0abd"
            ],
            "ph": [
               "254aa248acb47dd654ca3ea53f48c2c26d641d23d7e2e93a1ec56258df7674c4",
               "6f4fcb9deaeadc8f9746ae76d97ce1239e98b404efe5da3ee0b7149740f89ad6"
            ],
            "fbc": "fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890",
            "fbp": "fb.1.1558571054389.1098115397"
         },
         "custom_data": {
            "value": 100.2,
            "currency": "USD",
            "content_ids": [
               "product.id.123"
            ],
            "content_type": "product"
         },
         "opt_out": false
      },
      {
         "event_name": "Purchase",
         "event_time": 1633552688,
         "user_data": {
            "client_ip_address": "192.88.9.9",
            "client_user_agent": "test ua2"
         },
         "custom_data": {
            "value": 50.5,
            "currency": "USD"
         },
         "opt_out": false
      }
   ]
}

Время загрузки и время транзакции события

event_time — это время транзакции события. Оно отправляется в виде метки времени Unix в секундах и указывает фактическое время возникновения события. Указанное время может быть раньше, чем время отправки события на Facebook. Это позволяет проводить пакетную обработку и оптимизировать производительность сервера.

event_time может быть раньше отправки события в Meta на срок до 7 дней. Если какое-либо значение event_time в data старше 7 дней, мы возвращаем ошибку для всего запроса и не обрабатываем ни одно событие. Для офлайн-событий и событий из физического магазина, для которых action_source имеет значение physical_store, загружать транзакции следует в течение 62 дней с момента конверсии.

Используя Conversions API, вы соглашаетесь, что параметр action_source является максимально точным, насколько вам это известно.

Пакетные запросы

В составе data можно отправить до 1000 событий. Однако для оптимизации производительности рекомендуем отправлять события по мере их возникновения (желательно в течение часа с этого момента). Если какое-либо событие в пакете оказывается недействительным, мы отклоняем весь пакет.

Хэширование

Информацию о хэшировании параметров перед отправкой на Facebook см. на странице, посвященной параметрам информации клиента. Если вы используете какой-либо из наших Business SDK, хэширование выполняется в SDK.

Функции Business SDK для Conversions API

Ознакомьтесь с информацией о трех функциях Business SDK, созданных специально для пользователей Conversions API: асинхронных запросах, параллельных пакетных запросах и сервисном интерфейсе HTTP. Минимальная версия языка, необходимая для использования функций:

  • PHP >= 7.2;
  • Node.js >= 7.6.0;
  • Java >= 8;
  • Python >= 2.7;
  • Ruby >= 2.

Поддержка Business SDK для PHP 5 прекращена с января 2019 г. Для использования Business SDK перейдите на PHP 7.

Если вам необходима версия PHP 5, воспользуйтесь нашей реализацией на базе Swagger.

Параметры Conversions API

Подтверждение событий

После отправки событий вы должны убедиться, что мы их получили. Это делается в Events Manager:

  • На странице Источники данных нажмите пиксель, соответствующий PIXEL_ID в вашем запросе POST. Дополнительные сведения см. в статье о навигации по Events Manager в Справочном центре для бизнеса.
  • Затем нажмите Обзор. Вы увидите количество необработанных, сопоставленных и присвоенных событий, которые мы получили. В разделе Способ подключения указан канал, по которому было отправлено событие.
  • Чтобы просмотреть информацию о конкретном событии, нажмите его.
  • События становятся доступны для проверки в течение 20 минут с момента начала их отправки. Теперь можно приступать к отправке событий с сервера.

Инструмент тестирования событий

Убедиться, что Facebook правильно получает серверные события, можно с помощью функции тестирования событий в Events Manager. Найти соответствующий инструмент можно в разделе Events Manager > Data Sources > Your Pixel > Test Events.

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

Примечание. Поле test_event_code должно использоваться исключительно для тестирования. При отправке полезных данных разработки его необходимо удалить.

События, отправляемые с кодом test_event_code, не отбрасываются. Они отправляются в Events Manager и используются для таргетинга и измерения эффективности рекламы.

Пример структуры запроса:

{ "data": [ { "event_name": "ViewContent", "event_time": 1734848089, "event_id": "event.id.123", "event_source_url": "http:\/\/jaspers-market.com", "user_data": { "client_ip_address": "1.2.3.4", "client_user_agent": "test user agent" } } ], "test_event_code": "TEST123" }

Пример отображения запроса в Graph API Explorer:

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

После отправки запроса в окне тестирования событий появляются серверные события.

Параметры обработки данных для пользователей в США

Чтобы реализовать параметры обработки данных для этих двух API, добавьте data_processing_options, data_processing_options_country и data_processing_options_state в каждый элемент в параметре data своих событий.

Примечание. App Events API и Offline Conversions API более не следует использовать для новых интеграций. Вместо этого рекомендуем использовать Conversions API, поскольку теперь он поддерживает веб- и офлайн-события, а также события в приложении. Подробнее см. в разделах API Conversions для событий в приложении и API Conversions для офлайн-событий.

Чтобы явным образом отключить режим ограниченного использования данных (LDU), укажите пустой массив для каждого события или просто удалите поле в полезных данных:

{
    "data": [
        {
            "event_name": "Purchase",
            "event_time": <EVENT_TIME>,
            "user_data": {
                "em": "<EMAIL>"
            },
            "custom_data": {
                "currency": "<CURRENCY>",
                "value": "<VALUE>"
            },
            "data_processing_options": []
        }
    ]
}

Чтобы включить режим LDU и разрешить Meta определить местоположение:

{
    "data": [
        {
            "event_name": "Purchase",
            "event_time": <EVENT_TIME>,
            "user_data": {
                "em": "<EMAIL>",
                "client_ip_address": "256.256.256.256"
            },
            "custom_data": {
                "currency": "<CURRENCY>",
                "value": "<VALUE>"
            },
            "data_processing_options": ["LDU"],
            "data_processing_options_country": 0,
            "data_processing_options_state": 0
        }
    ]
}

Чтобы включить режим LDU и вручную указать местоположение, например для штата Калифорния:

{
    "data": [
        {
            "event_name": "Purchase",
            "event_time": <EVENT_TIME>,
            "user_data": {
                "em": "<EMAIL>"
            },
            "custom_data": {
                "currency": "<CURRENCY>",
                "value": "<VALUE>"
            },
            "data_processing_options": ["LDU"],
            "data_processing_options_country": 1,
            "data_processing_options_state": 1000
        }
    ]
}

Пользовательский интерфейс для загрузки вручную

API Offline Conversions позволяет загружать события вручную из файла .csv. В этом случае в файл нужно добавить столбцы Data Processing Options (Параметры обработки данных), Data Processing Country (Страна обработки данных) и Data Processing State (Штат обработки данных). Дополнительные сведения см. в пользовательском интерфейсе загрузки.


Подробнее о вариантах обработки данных.

Ограничения API

В Marketing API используется собственная логика ограничения числа обращений. Этот API исключен из всех ограничений Graph API. Поэтому вызовы Marketing API не будут учитываться в регулировании Graph API.

Конкретных ограничений числа обращений для Conversions API не установлено. Вызовы Conversions API учитываются в числе вызовов Marketing API. Единственное ограничение: за раз можно отправить не более 1000 событий. Дополнительные сведения см. в статье об отправке запросов.

Ограничение числа обращений для Marketing API

Использование Business SDK API в шлюзе Conversions API

В этом руководстве описаны расширенные функции Meta Business SDK, разработанные специально для пользователей шлюза Conversions API. Основные функции шлюза Conversions API см. в документации.

Отправка событий в экземпляр шлюза Conversions API

Требования

Чтобы начать использовать функции, описанные ниже, необходимо установить Meta Business SDK. Обратитесь к руководству по началу работы с Meta Business SDK или следуйте инструкциям ниже:

В настоящий момент эти функции доступны только в Business SDK для PHP и Java. SDK для других языков программирования будут реализованы к концу 2023 года.

Минимальная версия языка, необходимая для использования функций:

PHP >= 7.2

Java >= 8.

Примечание. Чтобы устранить дублирование событий при вызове конечной точки Conversions API, передайте в запросе параметр eventId. Это поможет предотвратить дублирование событий, если включена публикация Conversions API.

Формат параметров CAPIGatewayIngressRequest

ПараметрОписание
endpointUrl
Строка

Конечная точка шлюза Conversions API, на которую отправляются события. Предварительно проверяется только тот факт, что параметр является действительным URL.


Пример: https://test.example.com


accessKey
Строка

Ключ доступа шлюза Conversions API, необходимый для отправки событий конечной точке событий шлюза Conversions API. Инструкции по генерации ключа см. в этой статье.

Параметры CAPIGatewayIngressRequest

ПараметрОписание
setSendToDestinationOnly
Логическое значение

Логический флаг, указывающий, отправляются ли события только на выбранную конечную точку.


Значение по умолчанию — False.


setFilter
Функция CustomEndpointRequest.Filter()

Функция фильтрации, обрабатывающая каждое событие. Если логика фильтра возвращает значение true, событие проходит фильтрацию. В противном случае событие отбрасывается. Необходимо реализовать функцию shouldSendEvent в интерфейсе, который имеет параметр Event.


Значение по умолчанию — Null.



Пример переноса: PHP

В системах, которые уже используют Business SDK, нужно просто сослаться на новый CAPIGatewayIngressRequest и прикрепить его к объекту customEndpoint запроса события eventRequest.

// this is the standard event request that we attach events to
$event_request = new EventRequest($this->pixel_id);
$capiIngressRequest = new CAPIGatewayIngressRequest($this->cb_url, $this->access_key);
$event_request->setCustomEndpoint($capiIngressRequest);
// pass the events to this event Request object
$event_request->setEvents($events);
$event_request->execute()

Пример переноса: Java

В системах, которые уже используют Business SDK, нужно просто сослаться на новый CAPIGatewayIngressRequest и прикрепить его к объекту customEndpoint запроса события eventRequest.

// this is the standard event request that we attach events to


EventRequest eventRequest = new EventRequest(PIXEL_ID, context);


CAPIGatewayIngressRequest capiSyncRequest = new CAPIGatewayIngressRequest(CB_URL, CAPIG_ACCESS_KEY);
eventRequest.setCustomEndpoint(capiSyncRequest);
eventRequest.addDataItem(testEvent);
eventRequest.execute();

Синхронный вариант

Пример кода на PHP

$api = Api::init(null, null, $this->access_token);
$api->setLogger(new CurlLogger());
$event_request = new EventRequest($this->pixel_id);
$capiIngressRequest = new CAPIGatewayIngressRequest($this->cb_url, $this->access_key);
$event_request->setCustomEndpoint($capiIngressRequest);
$user_data = (new UserData())
   ->setEmails(array('joe@eg.com'))
   ->setPhones(array('12345678901', '14251234567'))
   ->setFbc('fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890')
   ->setFbp('fb.1.1558571054389.1098115397');
$event1 = (new Event())
   ->setEventName('Purchase')
   ->setEventId('125')
   ->setEventTime(time())
   ->setEventSourceUrl('http://jaspers-market.com/product/123')
   ->setUserData($user_data);
$events = array($event1, $event2);
$event_request->setEvents($events);
$response = $event_request->execute();
print($response->__toString());

Пример кода на Java

EventRequest eventRequest = new EventRequest(PIXEL_ID, context);
UserData userData = new UserData()
       .email("abc@eg.com");
CAPIGatewayIngressRequest capiSyncRequest = new CAPIGatewayIngressRequest(CB_URL, CAPIG_ACCESS_KEY);
eventRequest.setCustomEndpoint(capiSyncRequest);
Event testEvent = new Event();
testEvent.eventId("125").eventName("Purchase")
       .eventTime(System.currentTimeMillis() / 1000L)
       .userData(userData)
       .dataProcessingOptions(new String[]{}).setEventId("134423232");
eventRequest.namespaceId("11")
       .uploadId("22222")
       .uploadTag("upload-tag-4")
       .uploadSource("upload-source-4")
       .testEventCode("test-event-code-5")
       .partnerAgent("partner-agent-6");
eventRequest.addDataItem(testEvent);
eventRequest.execute();

Асинхронный вариант

Пример кода на PHP

$api = Api::init(null, null, $this->access_token);
$api->setLogger(new CurlLogger());
$event_request = new EventRequestAsync($this->pixel_id);
$capiIngressRequest = new CAPIGatewayIngressRequest($this->cb_url, $this->access_key);
$capiIngressRequest->setSendToDestinationOnly(true);
$event_request->setCustomEndpoint($capiIngressRequest);
$event1 = (new Event())
   ->setEventName('test Async Event')
   ->setEventId('134423232')
   ->setEventTime(time())
   ->setEventSourceUrl('http://jaspers-market.com/product/123');
$events = array($event1, $event2);
$event_request->setEvents($events);
$response = $event_request->execute()->wait();

Пример кода на Java

EventRequest eventRequest = new EventRequest(PIXEL_ID, context);
UserData userData = new UserData()
       .email("abc@eg.com");
CAPIGatewayIngressRequest capiSyncRequest = new CAPIGatewayIngressRequest(CB_URL, CAPIG_ACCESS_KEY);
capiSyncRequest.setSendToDestinationOnly(true);
eventRequest.setCustomEndpoint(capiSyncRequest);
Event testEvent = new Event();
testEvent.eventName("test Async Event")
       .eventTime(System.currentTimeMillis() / 1000L)
       .userData(userData)
       .dataProcessingOptions(new String[]{}).setEventId("134423232");
eventRequest.namespaceId("11222")
       .uploadId("22222")
       .uploadTag("upload-tag-4")
       .uploadSource("upload-source-4")
       .testEventCode("test-event-code-5")
       .partnerAgent("partner-agent-6");
eventRequest.addDataItem(testEvent);
eventRequest.executeAsync();

Функция фильтрации

Пример кода на PHP

lass APIFilter implements Filter {
   public function shouldSendEvent(Event $event): bool
   {
       if ($event->getEventId() === '125') {
           return false;
       }
       return true;
   }
}
$capiIngressRequest = new CAPIGatewayIngressRequest($this->cb_url, $this->access_key);
$event_request->setCustomEndpoint($capiIngressRequest);
$capiIngressRequest->setFilter(new APIFilter());

Пример кода на Java

CAPIGatewayIngressRequest capiSyncRequest = new CAPIGatewayIngressRequest(CB_URL, CAPIG_ACCESS_KEY);
eventRequest.setCustomEndpoint(capiSyncRequest);


capiSyncRequest.setFilter(new CustomEndpointRequest.Filter() {
   @Override
   public boolean shouldSendEvent(Event event) {
   if (event.getEventId().equals("125")) {
       return true;
   }
   return false;
}
});