Utilisation de l’API

Une fois que vous avez rempli les conditions préalables décrites sur la page Mise en route, consultez cette page pour découvrir comment envoyer des évènements et utiliser l’outil de test d’évènements. Après avoir envoyé un évènement, vérifiez votre configuration.

L’API Conversions est basée sur l’API Marketing de Facebook, laquelle repose sur notre API Graph. Les calendriers de fin de prise en charge des versions diffèrent pour les API Marketing et Graph. Notre cycle de publication est aligné sur l’API Graph, de sorte que chaque version est prise en charge pendant au moins deux ans. Cette exception ne s’applique qu’à l’API Conversions.

API Conversions : présentationParamètres

Les évènements Web, d’application et physiques partagés via l’API Conversions requièrent des paramètres spécifiques. En utilisant l’API Conversions, vous reconnaissez que le paramètre action_source est exact, à votre connaissance. La liste des paramètres obligatoires est disponible ici.

Requêtes d’envoi

Pour envoyer de nouveaux évènements, adressez une requête POST à l’arête /events de cette API à partir du chemin suivant : https://graph.facebook.com/{API_VERSION}/{PIXEL_ID}/events?access_token={TOKEN}. Lorsque vous publiez sur cette arête, Facebook crée des évènements de serveur.

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

Joignez à la requête le token d’accès sécurisé que vous avez généré à l’aide du paramètre de requête access_token. Vous pouvez également utiliser l’Explorateur de l’API Graph pour envoyer une requête POST au point de terminaison /<pixel_id>/events.

Voici un exemple de corps d’une requête :

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

Heure d’importation et heure de transaction d’un évènement

event_time correspond à l’heure de transaction de l’évènement. Elle doit être envoyée sous forme d’horodatage Unix exprimé en secondes pour indiquer l’heure à laquelle l’évènement s’est réellement produit. L’heure spécifiée peut être antérieure à l’heure à laquelle vous avez envoyé l’évènement à Facebook afin de permettre un traitement par lot et l’optimisation des performances du serveur.

La valeur du paramètre event_time peut remonter jusqu’à 7 jours avant l’envoi d’un évènement à Meta. Si une valeur event_time dans data remonte à plus de 7 jours, une erreur est renvoyée pour l’ensemble de la requête, et aucun évènement n’est traité. Pour les évènements hors ligne et en boutique avec physical_store comme action_source, vous devez importer les transactions dans les 62 jours suivant la conversion.

En utilisant l’API Conversions, vous reconnaissez que le paramètre action_source est exact, à votre connaissance.

Requêtes par lot

Vous pouvez envoyer jusqu’à 1 000 évènements dans data. Toutefois, pour des performances optimales, il est recommandé d’envoyer les évènements dès qu’ils se produisent et, idéalement, dans l’heure à laquelle ils surviennent. Si l’un des évènements que vous envoyez dans le cadre d’une requête par lot n’est pas valide, l’intégralité de cette requête est rejetée.

Hachage

Pour savoir quels paramètres doivent faire l’objet d’un hachage avant d’être envoyés à Facebook, veuillez consulter notre page Paramètres d’informations clientèle. Si vous utilisez l’un de nos SDK Business, ce dernier se charge du hachage pour vous.

Fonctionnalités du SDK Business pour l’API Conversions

Découvrez plus d’informations sur trois fonctionnalités spécifiques du SDK Business conçues pour les utilisateurs et utilisatrices de l’API Conversions : Requêtes asynchrones, Traitement par lot simultané et Interface du service HTTP. Version minimale du langage requise pour l’utilisation de ces fonctionnalités :

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

La prise en charge du SDK Business pour PHP 5 a été abandonnée en janvier 2019. Veuillez passer à PHP 7 pour utiliser le SDK.

Si vous devez malgré tout utiliser PHP 5, ayez recours à notre implémentation Swagger.

Paramètres de l’API Conversions

Vérification des évènements

Après avoir envoyé vos évènements, vérifiez que nous les avons bien reçus dans le Gestionnaire d’évènements :

  • Cliquez sur chaque évènement pour obtenir des informations plus spécifiques.
  • Après avoir commencé à envoyer des évènements, vous devriez normalement pouvoir les vérifier dans un délai de 20 minutes. Vous pouvez à présent commencer à envoyer des évènements à partir de votre serveur.

Outil de test d’évènements

Vous pouvez vérifier si Facebook reçoit bien vos évènements de serveur à l’aide de la fonctionnalité de test d’évènements du Gestionnaire d’évènements. Pour trouver cet outil, accédez à Events Manager > Data Sources > Your Pixel > Test Events.

L’outil de test d’évènements génère un ID de test. Envoyez cet ID en tant que paramètre test_event_code pour commencer à visualiser l’activité des évènements dans la fenêtre Tester les évènements.

Remarque : le champ test_event_code ne doit être utilisé qu’à des fins de test. Vous devez le supprimer lorsque vous envoyez votre charge utile de production.

Les évènements envoyés avec test_event_code ne sont pas abandonnés. Ils sont dirigés vers le Gestionnaire d’évènements, et utilisés à des fins de ciblage et de mesure des publicités.

L’exemple suivant indique comment la requête doit être structurée :

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

L’exemple ci-dessous montre comment la requête apparaît dans l’Explorateur de l’API Graph :

Vous pouvez générer cette charge utile de test en utilisant l'outil Payload Helper. Veuillez notez que le code d’évènement test est réservé aux tests de charge utile.

Une fois la requête envoyée, vos évènements de serveur s’affichent dans la fenêtre de test des évènements.

Options de traitement des données pour les utilisateur·ices résidant aux États-Unis

Pour ces deux API, implémentez les options de traitement des données en ajoutant data_processing_options, data_processing_options_country et data_processing_options_state dans le paramètre data de vos évènements.

Remarque : nous ne recommandons plus les API App Events et Offline Conversions pour les nouvelles intégrations. Nous vous recommandons au contraire d’utiliser l’API Conversions dans la mesure où elle prend maintenant en charge les évènements Web, d’application et hors ligne. Pour plus d’informations, consultez l’API Conversions pour les évènements d’application et l’API Conversions pour les évènements hors ligne.

Pour ne pas activer l’utilisation limitée des données (LDU) de manière explicite, indiquez un tableau vide pour chaque évènement ou supprimez simplement le champ de la charge utile :

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

Pour activer le mode LDU et demander à Meta d’effectuer une géolocalisation :

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

Pour activer le mode LDU et indiquer le lieu manuellement, par exemple la Californie :

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

Interface d’importation manuelle

L'API Offline Conversions vous donne la possibilité d'importer manuellement vos évènements depuis un fichier .csv. Dans ce cas, ajoutez les colonnes Data Processing Options (Options de traitement des données), Data Processing Country (Pays associé au traitement des données) et Data Processing State (État associé au traitement des données) dans votre fichier. Vous trouverez plus d’informations à ce sujet dans l’interface d’utilisation d’importation.


En savoir plus sur les options de traitement des données

Limites de l’API

L’API Marketing dispose de sa propre logique de plafond et est exclue de toutes les limites de débit de l’API Graph. Si vous effectuez un appel de l’API Marketing, il ne sera donc pas calculé dans la limitation de bande passante de l’API Graph.

Il n’existe pas de plafond spécifique pour l’API Conversions. Les appels de l’API Conversions sont comptabilisés comme des appels de l’API Marketing. La seule limite réside dans le fait que vous ne pouvez pas nous envoyer plus de 1 000 évènements à la fois. Pour en savoir plus, consultez la section Requêtes d’envoi.

Plafond de l’API Marketing

Utilisation des API du SDK Business dans le portail de l’API Conversions

Ce guide vous aide à naviguer dans les fonctionnalités avancées du SDK Meta Business, conçues spécialement pour les utilisateur·ices du portail de l’API Conversions. Pour une utilisation de base du portail de l’API Conversions, consultez la documentation relative au portail de l’API Conversions.

Envoyer des évènements à votre instance de portail de l’API Conversions

Conditions requises

Avant d’utiliser l’une des fonctions énumérées ci-dessous, vous devez avoir installé le SDK Meta Business. Consultez la page Premiers pas avec le SDK Meta Business ou suivez les instructions README ci-dessous :

Actuellement, ces fonctionnalités ne sont disponibles que sur les SDK PHP et Java Business. Les autres langages seront implémentés fin 2023.

Versions minimales de langage requises pour l’utilisation de ces fonctionnalités :

PHP >= 7.2

Java >= 8

Note : Pour dédupliquer des évènements au point de terminaison de l’API Conversions, veuillez passer eventId dans votre requête. Cela permettra d’éviter l’affichage d’évènements en double si la publication de l’API Conversions est activée.

Formatage des paramètres CAPIGatewayIngressRequest

ParamètreDescription
endpointUrl
chaîne

Point de terminaison du portail de l’API Conversions vers lequel les évènements sont envoyés. Aucune pré-validation autre que la vérification de la validité de l’URL ne sera effectuée sur le paramètre.


Exemple : https://test.exemple.com


accessKey
chaîne

Clé d’accès au portail de l’API Conversions qui est nécessaire pour envoyer des évènements au point de terminaison Events du portail de l’API Conversions. Voici les instructions pour la générer.

Paramètres CAPIGatewayIngressRequest

ParamètreDescription
setSendToDestinationOnly
Booléen

Indicateur booléen signalant si les évènements sont envoyés uniquement au point de terminaison sélectionné.


Valeur par défaut : False


setFilter
Fonction CustomEndpointRequest.Filter()

Fonction de filtre qui traite chaque évènement. Si la logique de filtrage renvoie True, l’évènement est transmis. Sinon, l’évènement est abandonné. Vous devez implémenter la fonction shouldSendEvent dans l’interface qui a le paramètre Event.


Valeur par défaut : Null



Exemple de migration : PHP

Pour les systèmes qui utilisent déjà le SDK Business, il vous suffit de faire référence à CAPIGatewayIngressRequest et de le joindre à l’objet customEndpoint de l’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()

Exemple de migration : Java

Pour les systèmes qui utilisent déjà le SDK Business, il vous suffit de faire référence à CAPIGatewayIngressRequest et de le joindre à l’objet customEndpoint de l’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();

Option synchrone

Exemple de code 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());

Exemple de code 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();

Option asynchrone

Exemple de code 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();

Exemple de code 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();

Fonctionnalité de filtre

Exemple de code 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());

Exemple de code 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;
}
});