Usar la API

Tras completar los requisitos previos de la página Introducción, usa esta página para obtener información sobre cómo enviar eventos y usar la herramienta “Probar eventos”. Cuando hayas enviado un evento, verifica la configuración.

La API de conversiones se basa en la API de marketing de Facebook que, a su vez, se basa en la API Graph. La API Graph y la API de marketing tienen diferentes programaciones de retirada de versiones. Nuestro ciclo de lanzamiento se ajusta a la API Graph, por lo que cada versión se admite durante al menos dos años. Esta excepción solo es válida para la API de conversiones.

API de conversiones: información generalParámetros

Los eventos de la web, la aplicación y la tienda física compartidos mediante la API de conversiones requieren parámetros específicos. Al utilizar la API de conversiones, aceptas que el parámetro action_source es adecuado hasta donde tú sabes. La lista de parámetros necesarios está disponible aquí.

Enviar solicitudes

Para enviar nuevos eventos, realiza una solicitud POST al perímetro /events de esta API desde esta ruta: https://graph.facebook.com/{API_VERSION}/{PIXEL_ID}/events?access_token={TOKEN}. Al realizar una publicación en este perímetro, Facebook crea nuevos eventos del servidor.

curl -X POST \ -F 'data=[ { "event_name": "Purchase", "event_time": 1714785136, "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/v19.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

Adjunta el identificador de acceso seguro generado mediante el parámetro de consulta access_token a la solicitud. También puedes usar el explorador de la API Graph para realizar una solicitud POST al extremo /<pixel_id>/events.

Un ejemplo de cuerpo de solicitud tiene el aspecto siguiente:

{
   "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
      }
   ]
}

Hora de subida frente a hora de transacción del evento

event_time es la hora de transacción del evento. Se debe enviar como una marca de tiempo Unix en segundos que indique cuándo se produjo el evento real. La hora especificada puede ser anterior a la hora en que se envió el evento a Facebook. De esta forma, se puede activar la optimización del rendimiento del servidor y el procesamiento por lotes.

El valor de event_time puede ser hasta siete días antes del envío de un evento a Meta. Si algún valor de event_time en data es de hace más de siete días, se devuelve un error para la toda la solicitud y no se procesa ningún evento. En el caso de los eventos offline y de la tienda física con physical_store como action_source, debes subir las transacciones en los 62 días posteriores a la conversión.

Al utilizar la API de conversiones, aceptas que el parámetro action_source es adecuado hasta donde tú sabes.

Solicitudes por lotes

Puedes enviar un máximo de 1000 eventos en data. Sin embargo, para obtener un rendimiento óptimo, se recomienda enviar los eventos en cuanto se producen e idealmente en un plazo de una hora. Si alguno de los eventos enviados en un lote no es válido, se rechaza todo el lote.

Algoritmos hash

Consulta la página de parámetros de información del cliente para saber a qué parámetros se debe aplicar el algoritmo hash antes de enviarlos a Facebook. Si utilizas uno de nuestros SDK para empresas, el SDK aplica el algoritmo hash automáticamente.

Funciones del SDK para empresas de la API de conversiones

Obtén más información acerca de las tres funciones específicas del Business SDK diseñadas especialmente para los usuarios de la API de conversiones: solicitudes asíncronas, lotes simultáneos e interfaz de servicio HTTP. Versión mínima del lenguaje necesaria para utilizar estas funciones:

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

La compatibilidad del SDK para empresas con PHP 5 se retiró en enero de 2019. Realiza la actualización a PHP 7 a fin de utilizar el SDK para empresas.

Si debes usar PHP 5, considera la posibilidad de utilizar nuestra implementación de Swagger.

Parámetros de la API de conversiones

Verificación de eventos

Después de enviar los eventos, confirma que los hayamos recibido en el Administrador de eventos:

  • En la página Orígenes de datos, haz clic en el píxel correspondiente a PIXEL_ID en la solicitud POST. Para obtener más información, consulta Servicio de ayuda para empresas: Navegar por el Administrador de eventos.
  • A continuación, haz clic en Información general. Puedes ver el número de eventos sin procesar, coincidentes y atribuidos que hemos recibido. En Método de conexión, puedes ver en qué canal se envió el evento.
  • Puedes hacer clic en cada evento para obtener información más específica.
  • Al empezar a enviar eventos, deberías poder verificarlos en un plazo de 20 minutos. Ahora puedes empezar a enviar eventos desde tu servidor.

Herramienta “Probar eventos”

Para verificar si Facebook recibe correctamente los eventos del servidor, puedes usar la función “Probar eventos” del Administrador de eventos. Dirígete a Events Manager > Data Sources > Your Pixel > Test Events para buscar la herramienta.

La herramienta “Probar eventos” genera un identificador de prueba. Envía el identificador de prueba como un parámetro test_event_code para empezar a ver cómo se muestra la actividad de los eventos en la ventana “Probar eventos”.

Nota: El campo test_event_code solo se debe usar para realizar pruebas. Debes eliminarlo al enviar la carga útil de producción.

Los eventos enviados con el parámetro test_event_code no se omiten. Se envían al Administrador de eventos y se usan con fines de segmentación y medición de anuncios.

A continuación, se incluye un ejemplo de cómo se debe estructurar la solicitud:

{ "data": [ { "event_name": "ViewContent", "event_time": 1714784536, "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" }

A continuación, se incluye un ejemplo de cómo se muestra la solicitud en el explorador de la API Graph:

Puedes generar esta carga útil de prueba mediante el asistente de carga útil. Ten en cuenta que el código del evento de prueba solo es para probar la carga útil.

Los eventos del servidor se muestran en la ventana “Probar eventos” una vez enviada la solicitud.

Opciones de tratamiento de datos para usuarios de EE. UU.

Para estas dos API, implementa las opciones de tratamiento de datos; para ello, añade data_processing_options, data_processing_options_country y data_processing_options_state en cada evento en el parámetro de datos de los eventos.

Nota: Los eventos de la aplicación y las API de conversiones offline ya no se recomiendan para las nuevas integraciones. En su lugar, se recomienda usar la API de conversiones, ya que ahora admite eventos web, de la aplicación y offline. Para obtener más información, consulta API de conversiones para eventos de la aplicación y API de conversiones para eventos offline.

Para no activar el uso limitado de datos (LDU) de forma explícita, especifica una matriz vacía para cada evento o simplemente elimina el campo en la carga útil:

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

Para activar el LDU y que Meta realice una geolocalización:

{
    "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
        }
    ]
}

Para activar el LDU y especificar la ubicación manualmente (por ejemplo, para California):

{
    "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
        }
    ]
}

IU de subida manual

La API de conversiones offline ofrece la opción de subir manualmente los eventos desde un archivo .csv. En este caso, añade las opciones de tratamiento de datos, el país de tratamiento de datos y el estado de tratamiento de datos como columnas en el archivo. Encontrarás más información sobre este tema en la interfaz de usuario de subida.


Obtén más información sobre las opciones de tratamiento de datos.

Límites de la API

La API de marketing cuenta con su propia lógica de limitación de frecuencia, que es independiente de todas las limitaciones de frecuencia de la API Graph. De este modo, las llamadas que realices a la API de marketing no se tienen en cuenta para la restricción de la API Graph.

No hay ningún límite de frecuencia específico para la API de conversiones. Las llamadas a la API de conversiones se cuentan como llamadas a la API de marketing. La única limitación es que nos puedes enviar un máximo de 1000 eventos a la vez. Consulta Envío de solicitudes para obtener más información.

Limitación de frecuencia de la API de marketing

Uso de la API del Meta Business SDK en la puerta de enlace de la API de conversiones

En esta guía se explica cómo navegar por las funciones avanzadas del Meta Business SDK que se han diseñado específicamente para su uso con la puerta de enlace de la API de conversiones. Si necesitas información sobre el uso básico de la puerta de enlace de la API de conversiones, consulta la documentación de la puerta de enlace de la API de conversiones.

Enviar eventos a la instancia de la puerta de enlace de la API de conversiones

Requisitos

Antes de usar las funciones que se indican a continuación, debes haber instalado el Meta Business SDK. Consulta Introducción al Meta Business SDK o sigue las instrucciones de los archivos README que se señalan aquí:

Por el momento, estas funciones solo están disponibles en el Meta Business SDK para PHP y Java. Los demás lenguajes se implementarán a finales de 2023.

La versión mínima del lenguaje necesaria para utilizar estas funciones es la siguiente:

PHP >= 7.2

Java >= 8

Nota: A fin de eliminar los eventos duplicados para el extremo de la API de conversiones, pasa el valor de eventId en la solicitud. Esto ayudará a evitar que aparezcan eventos duplicados si la publicación de la API de conversiones está activada.

Aplicar formato a los parámetros de CAPIGatewayIngressRequest

ParámetroDescripción
endpointUrl
Cadena

Extremo de la puerta de enlace de la API de conversiones al que se envían los eventos. La única validación previa que se realizará en el parámetro consistirá en comprobar si se trata de una URL válida.


Ejemplo: https://test.example.com


accessKey
Cadena

Clave de acceso de la puerta de enlace de la API de conversiones que se necesita para enviar eventos al extremo de eventos de la puerta de enlace de la API de conversiones. Puedes consultar las instrucciones sobre cómo generarla aquí.

Establecedores de CAPIGatewayIngressRequest

ParámetroDescripción
setSendToDestinationOnly
Booleano

Marca booleana que indica si los eventos se envían solo al extremo seleccionado.


Valor predeterminado: False


setFilter
Función CustomEndpointRequest.Filter()

Función de filtro que procesa cada evento. Si la lógica de filtración devuelve “true”, el evento se pasa. De lo contrario, el evento se omite. Tienes que implementar la función shouldSendEvent en la interfaz que tiene el evento del parámetro.


Valor predeterminado: Null



Ejemplo de migración: PHP

En el caso de los sistemas que ya utilizan el Meta Business SDK, solo tienes que hacer referencia al nuevo objeto CAPIGatewayIngressRequest y adjuntarlo al objeto customEndpoint de 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()

Ejemplo de migración: Java

En el caso de los sistemas que ya utilizan el Meta Business SDK, solo tienes que hacer referencia al nuevo objeto CAPIGatewayIngressRequest y adjuntarlo al objeto customEndpoint de 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();

Opción síncrona

Ejemplo de código 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());

Ejemplo de código 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();

Opción asíncrona

Ejemplo de código 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();

Ejemplo de código 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();

Funcionalidad de filtro

Ejemplo de código 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());

Ejemplo de código 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;
}
});