Sobald du die Voraussetzungen auf der Seite Erste Schritte erfüllt hast, kannst du diese Seite verwenden, um zu erfahren, wie du Events sendest und das Tool „Test-Events“ verwendest. Sobald du ein Event gesendet hast, solltest du dein Setup verifizieren.
Die Conversions API basiert auf der Facebook Marketing API, die wiederum auf unserer Graph API aufsetzt. Die Marketing und die Graph API haben unterschiedliche Zeitpläne im Hinblick auf die Veraltung von Versionen. Unser Versionszyklus orientiert sich an der Graph API, daher wird jede Version mindestens zwei Jahre unterstützt. Diese Ausnahme gilt nur für die Conversions API.
Conversions API – ÜbersichtParameterFür Web-, App- und physische Store-Events, die mit der Conversions API geteilt werden, sind bestimmte Parameter erforderlich. Indem du die Conversions API verwendest, erklärst du dich damit einverstanden, dass der Parameter action_source
nach deinem bestem Wissen und Gewissen korrekt ist. Die Liste der erforderlichen Parameter ist hier verfügbar.
Um neue Events zu senden, erstelle eine POST
-Anfrage an die /events
-Edge dieser API von diesem Pfad aus: https://graph.facebook.com/{API_VERSION}/{PIXEL_ID}/events?access_token={TOKEN}
. Wenn du in dieser Edge postest, erstellt Facebook neue Server-Events.
curl -X POST \
-F 'data=[
{
"event_name": "Purchase",
"event_time": 1732199698,
"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
Hänge deinen generierten sicheren Zugriffsschlüssel mit dem Abfrageparameter access_token
an die Anfrage an. Du kannst auch mit Graph API Explorer eine POST
-Anfrage an den Endpunkt /<pixel_id>/events
senden.
Ein Beispiel für eine Anfrage sieht folgendermaßen aus:
{ "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
ist die Event-Transaktionszeit. Sie sollte als UNIX-Zeitstempel in Sekunden gesendet werden und angeben, wann das tatsächliche Event stattgefunden hat. Die angegebene Uhrzeit kann vor der Zeit liegen, zu der du das Event an Facebook gesendet hast. Das ermöglicht Batch-Verarbeitung und Optimierung der Serverleistung.
event_time
kann bis zu 7 Tage vor dem Zeitpunkt liegen, zu dem du ein Event an Meta gesendet hast. Liegt eine event_time
in data
weiter als 7 Tage zurück, geben wir einen Fehler für die gesamte Anfrage zurück und verarbeiten keine Events. Bei Offline-Events und Events in physischen Geschäften mit physical_store
als action_source
solltest du Transaktionen innerhalb von 62 Tagen nach der Conversion hochladen.
Indem du die Conversions API verwendest, stimmst du zu, dass der Parameter action_source
nach deinem bestem Wissen und Gewissen korrekt ist.
Du kannst bis zu 1.000 Events in data
senden. Für eine optimale Leistung empfehlen wir dir jedoch, Events sofort bei Auftreten und idealerweise innerhalb von einer Stunde nach dem Event-Zeitpunkt zu senden. Ist eines der Events, die du in einem Batch sendest, ungültig, lehnen wir den gesamten Batch ab.
Auf unserer Seite Parameter für Kund*inneninformationen erfährst du, welche Parameter vor dem Senden an Facebook gehasht werden müssen. Wenn du eines unserer Business SDKs verwendest, übernimmt das SDK das erforderliche Hashing.
Erfahre mehr über drei bestimmte Funktionen des Business SDK, die speziell für Nutzer*innen der Conversions API entwickelt wurden: Asynchrone Anfragen, gleichzeitiges Batching und HTTP-Serviceschnittstelle. Für die Verwendung dieser Funktionen erforderliche Mindestversion der Programmiersprache:
Die Business SDK-Unterstützung für PHP 5 wurde im Januar 2019 eingestellt. Führe ein Upgrade auf PHP 7 durch, wenn du das Business SDK verwenden möchtest.
Falls du PHP 5 verwenden musst, kannst du unsere Swagger-Implementierung nutzen.
Nach dem Senden deiner Events kannst du im Events Manager verifizieren, ob wir sie erhalten haben:
PIXEL_ID
in deiner POST
-Anfrage. Weitere Informationen findest du unter Hilfebereich für Unternehmen: Im Events Manager navigieren.Mit der Funktion „Test-Events“ im Events Manager kannst du verifizieren, ob deine Server-Events richtig von Facebook empfangen werden. Du findest das Tool unter Events Manager > Data Sources > Your Pixel > Test Events
.
Das Tool „Test-Events“ generiert eine Test-ID. Sende die Test-ID als test_event_code
-Parameter, um Event-Aktivitäten im Fenster „Test-Events“ anzuzeigen.
Hinweis: Das Feld test_event_code
sollte nur für Testzwecke verwendet werden. Du musst dieses Feld entfernen, wenn du deine Produktions-Payload sendest.
Mit test_event_code
gesendete Events werden nicht verworfen. Sie werden an den Events Manager übergeben und für Targeting- und Werbeanzeigenmesszwecke verwendet.
Siehe hier ein Beispiel für die Strukturierung der Anfrage:
Hier siehst du ein Beispiel für die Anzeige der Anfrage in Graph API Explorer:
Du kannst diesen Test-Payload mit dem Payload Helper-Tool generieren. Denke daran, dass der Test-Event-Code nur zum Testen des Payloads vorgesehen ist.
Deine Server-Events werden im Fenster „Test-Events“ angezeigt, sobald die Anfrage gesendet wurde.
Implementiere Datenverarbeitungsoptionen für diese zwei APIs, indem du data_processing_options
, data_processing_options_country
und data_processing_options_state
in jedem Event innerhalb des data-Parameters deiner Events hinzufügst.
Hinweis: Die App Events API und die Offline Conversions API werden nicht mehr für neue Integrationen empfohlen. Stattdessen wird empfohlen, dass du die Conversions API verwendest, da diese nun Web-, App- und Offline-Events unterstützt. Siehe Conversions API für App-Events und Conversions API für Offline-Events für weitere Informationen.
Definiere ein leeres Array für jedes Event oder entferne einfach das Feld in der Payload, um LDU (Limited Data Use) ausdrücklich nicht zu aktivieren:
{ "data": [ { "event_name": "Purchase", "event_time": <EVENT_TIME>, "user_data": { "em": "<EMAIL>" }, "custom_data": { "currency": "<CURRENCY>", "value": "<VALUE>" }, "data_processing_options": [] } ] }
Verwende Folgendes, um LDU mit Geolocation durch Meta zu aktivieren:
{ "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 } ] }
Verwende Folgendes, um LDU zu aktivieren und den Standort manuell zu definieren (z. B. Kalifornien):
{ "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 } ] }
Mit der Offline Conversions API kannst du deine Events manuell aus einer .csv
-Datei hochladen. Füge in diesem Fall deiner Datei Datenverarbeitungsoptionen, Datenverarbeitung Land und Datenverarbeitung Bundesstaat als Spalten hinzu. Weitere Informationen hierzu findest du in der Bedienoberfläche zum Hochladen.
Erfahre mehr über Datenverarbeitungsoptionen.
Die Marketing API weist eine eigene Logik zur Durchsatzratenbegrenzung auf und ist von allen Graph API-Durchsatzratenbegrenzungen ausgeschlossen. Wenn du also einen Marketing API-Aufruf tätigst, wird dieser nicht in das Graph API-Throttling einbezogen.
Es gibt keine bestimmte Durchsatzratenbegrenzung für die Conversions API. Aufrufe der Conversions API werden als Marketing API-Aufrufe gezählt. Die einzige Beschränkung besteht darin, dass du maximal 1.000 Events auf einmal senden kannst. Weitere Informationen findest du unter Anfragen senden.
Marketing API – DurchsatzratenbegrenzungDieser Leitfaden unterstützt dich bei der Navigation durch die erweiterten Funktionen des Meta Business SDK, die sich speziell an die Nutzer*innen der Conversions API richten. Informationen zur grundlegenden Verwendung des Conversions API Gateways findest du in der Dokumentation zum Conversions API Gateway.
Damit du die unten aufgeführten Funktionen verwenden kannst, musst du das Meta Business SDK installiert haben. Siehe Erste Schritte mit dem Meta Business SDK oder befolge die hier aufgelisteten README-Anweisungen:
Derzeit sind diese Funktionen nur im PHP und Java Business SDK verfügbar. Die anderen Sprachen werden bis Ende 2023 implementiert.
Für die Verwendung dieser Funktionen erforderliche Mindestversion der Programmiersprache:
PHP >= 7.2
Java >= 8
Hinweis: Zum Deduplizieren von Events am Conversations API-Endpunkt übergib die eventId
in deiner Anfrage. So wird verhindert, dass Events doppelt angezeigt werden, wenn die Veröffentlichung in der Conversations API aktiviert ist.
CAPIGatewayIngressRequest
-Parameter formatierenParameter | Beschreibung |
---|---|
endpointUrl String | Der Endpunkt des Conversions API Gateways, an den das Event gesendet wird. Es findet vorab keine Prüfung des Parameters statt. Es wird lediglich geprüft, ob es sich um eine gültige URL handelt. Beispiel: https://test.example.com |
accessKey String | Zugriffsschlüssel des Conversions API Gateways, der zum Senden von Events an den Events-Endpunkt des Conversions API Gateways benötigt wird. Hier findest du die Anweisungen, um diesen zu generieren. |
CAPIGatewayIngressRequest
-SetterParameter | Beschreibung |
---|---|
setSendToDestinationOnly Boolescher Wert | Boolesches Flag, das angibt, ob die Events ausschließlich an den ausgewählten Endpunkt gesendet werden. Standardwert: |
setFilter CustomEndpointRequest.Filter()-Funktion | Filterfunktion, die jedes Event verarbeitet. Wenn die Filterlogik den Wert „true“ zurückgibt, wird das Event übergeben. Andernfalls wird das Event verworfen. Du musst die shouldSendEvent-Funktion in die Schnittstelle implementieren, die über den Parameter „Event“ verfügt. Standardwert: |
Bei Systemen, die das Business SDK bereits verwenden, musst du lediglich die neue CAPIGatewayIngressRequest referenzieren und sie an das customEndpoint-Objekt der eventRequest anhängen.
// 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()
Bei Systemen, die das Business SDK bereits verwenden, musst du lediglich die neue CAPIGatewayIngressRequest referenzieren und an das customEndpoint-Objekt der eventRequest anhängen.
// 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();
$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());
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();
$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();
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();
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());
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; } });