Meta Conversions API einrichten: CAPI, Deduplizierung und EMQ richtig gemacht
Die Meta Conversions API richtig einrichten: CAPI vs. Pixel, event_id-Deduplizierung, Event Match Quality steigern, sGTM vs. direkt, Shopify und DSGVO.
Reines Browser-Tracking über den Meta Pixel verliert Conversions an Adblocker, ITP und Consent-Ablehnung, sodass die Anzeigenoptimierung auf unvollständigen Daten läuft.
Die Meta Conversions API parallel zum Pixel betreiben, mit korrekter event_id-Deduplizierung und hoher Event Match Quality, um verlorenes Signal zurückzuholen.
Die Meta Conversions API (CAPI) ist eine Server-zu-Server-Schnittstelle, die Conversion-Events direkt aus deinem Backend an Meta sendet, statt sich allein auf den browserbasierten Meta Pixel zu verlassen. Wo der Pixel vom Gerät des Nutzers feuert und von Adblockern, Safari Intelligent Tracking Prevention (ITP) und Consent-Ablehnung blockiert wird, sendet CAPI dieselben Events von deinem Server, wo diese Einschränkungen nicht greifen. Das Ergebnis sind vollständigere Conversion-Daten, die der Algorithmus von Meta zur Optimierung der Anzeigenauslieferung und Attribution nutzt.
Dieser Leitfaden erklärt, wie CAPI und Pixel zusammenarbeiten, warum die Deduplizierung über eine gemeinsame event_id das wichtigste Detail überhaupt ist, wie du die Event Match Quality (EMQ) steigerst, welche Abwägungen zwischen Server-Side GTM und einer direkten API-Integration bestehen, was bei Shopify zu beachten ist und welche DSGVO-Aspekte in der EU gelten. Er ist herstellerneutral: Ziel ist ein Setup, das unabhängig von Hosting oder Tool funktioniert.
Was die Meta Conversions API tatsächlich ist
Der Pixel ist ein JavaScript-Snippet, das im Browser des Besuchers läuft. Wenn jemand ein Produkt ansieht oder einen Kauf abschließt, sendet der Pixel ein Event (ViewContent, Purchase und so weiter) vom Client an Meta. Das ist von Natur aus fragil: Der Browser ist eine feindliche Umgebung für Tracking.
CAPI verlagert genau dieses Event auf den Server. Dein Backend, ein serverseitiger Tag-Container oder ein Gateway sendet eine strukturierte HTTP-Anfrage an den Graph-API-Endpunkt von Meta, mit Eventname, Zeitstempel, gehashten Kundendaten und Event-Parametern. Da die Anfrage aus deiner Infrastruktur stammt, ist sie nicht von Browser-Erweiterungen, Cookie-Limits oder Script-Blocking betroffen.
CAPI ist kein Ersatz für den Pixel. Beide sind dafür ausgelegt, parallel zu laufen. Der Pixel erfasst weiterhin den reichhaltigen Echtzeit-Browserkontext (die fbp- und fbc-Cookies, den User Agent, die Click-ID aus der Anzeige). Das Server-Event ergänzt Zuverlässigkeit und kann First-Party-Identifier tragen, die der Browser nicht sauber preisgibt. Meta fügt die beiden Streams anschließend zusammen.
CAPI vs. Pixel: warum du beide parallel brauchst
Ein häufiger Fehler ist, CAPI als Entweder-oder-Entscheidung zu behandeln. Das ist es nicht. Die empfohlene Architektur ist Pixel plus CAPI für jedes wichtige Event, mit Deduplizierung, damit ein einzelner Kauf nur einmal gezählt wird.
Jede Schicht deckt die blinden Flecken der anderen ab:
| Schicht | Stärke | Schwäche |
|---|---|---|
| Meta Pixel (Browser) | Reichhaltige Browser-Signale (fbp, fbc, Click-ID), Echtzeit | Blockiert durch Adblocker, ITP, Consent-Ablehnung, Netzwerkfehler |
| Conversions API (Server) | Übersteht Blocker und ITP, kann gehashte First-Party-Daten senden | Kein nativer Browserkontext, sofern nicht weitergeleitet, hängt an deiner Datenqualität |
Beide gemeinsam zu betreiben, ist der Weg, die Conversions zurückzuholen, die ein reines Pixel-Setup still verliert. Reines Pixel-Tracking kann einen großen Teil echter Conversions verpassen, und berichtete Werte für die durch ein dedupliziertes CAPI zurückgewonnenen Daten liegen typischerweise im Bereich von rund 20 bis 40 Prozent mehr erfassten Conversions, abhängig vom Traffic-Mix, den Consent-Raten und davon, wie sauber die Implementierung ist. Behandle das als setup-abhängige Spanne, nicht als Garantie.
Für das zugrunde liegende Signalverlust-Problem, das hier gelöst wird, deckt unser Server-Side-Tracking-Service die komplette Architektur vom Browser zum Server ab, nicht nur Meta.
Event Match Quality (EMQ): der Hebel für geringere Kosten pro Conversion
Event Match Quality (EMQ) ist der Wert von Meta, von 1 bis 10, dafür, wie gut Meta die gesendeten Events echten Meta-Accounts zuordnen kann. Je mehr (und je genauer) du jedem Event Kunden-Identifier mitgibst, desto höher die Match-Rate und desto besser kann Meta Conversions attribuieren und die Auslieferung optimieren.
Die Skala lässt sich grob so aufschlüsseln:
- 8 bis 10: Hervorragend. Eine perfekte 10 ist äußerst selten. In der Praxis sind 8 bis 9 die realistische Obergrenze, erreicht durch acht oder mehr gehashte Kunden-Identifier pro Event über CAPI.
- 5 bis 7: Gut. Funktioniert, lässt aber Match-Potenzial liegen.
- Unter 5: Verbesserungsbedarf. Attribution und Optimierung leiden.
Das ist keine Eitelkeitsmetrik. Laut Metas eigener Untersuchung erzielten Werbetreibende, die ihre EMQ verbesserten, rund 15 bis 25 Prozent bessere Kosten pro Aktion. Höhere Match Quality speist direkt die Optimierungs-Engine.
Wie du die EMQ steigerst
Sende mehr Identifier, korrekt gehasht. Zu den Kundenparametern, die Meta akzeptiert (gesendet als user_data), gehören:
- E-Mail (
em) - Telefonnummer (
ph) - Vorname (
fn) und Nachname (ln) - Stadt (
ct), Bundesland (st), PLZ (zp), Land (country) - Externe ID (
external_id), z. B. deine Kunden-ID - Click-ID (
fbc) und Browser-ID (fbp) - IP-Adresse (
client_ip_address) und User Agent (client_user_agent)
Alle personenbezogenen Felder müssen mit SHA-256 gehasht werden, bevor sie deinen Server verlassen. Vor dem Hashen den Wert normalisieren: in Kleinbuchstaben umwandeln, Leerzeichen entfernen, Formatierung aus Telefonnummern entfernen (E.164, nur Ziffern). fbc, fbp, IP und User Agent werden ungehasht gesendet.
import crypto from "crypto";
function hash(value) {
if (!value) return undefined;
const normalized = value.trim().toLowerCase();
return crypto.createHash("sha256").update(normalized).digest("hex");
}
const userData = {
em: hash(customer.email),
ph: hash(customer.phone?.replace(/\D/g, "")), // nur Ziffern
fn: hash(customer.firstName),
ln: hash(customer.lastName),
ct: hash(customer.city),
zp: hash(customer.zip),
country: hash(customer.countryCode), // z. B. "de"
external_id: hash(String(customer.id)),
fbc: cookies.fbc, // nicht gehasht
fbp: cookies.fbp, // nicht gehasht
client_ip_address: request.ip,
client_user_agent: request.headers["user-agent"],
};
Der größte EMQ-Gewinn für die meisten Shops ist, die fbc- (Click-ID) und fbp-Cookies (Browser-ID) vom Pixel an das Server-Event weiterzuleiten, plus eine gehashte E-Mail. Erfasse fbp und fbc clientseitig und übergib sie in deinen Server-Payload.
Deduplizierung: das Detail, das Setups kaputtmacht, wenn es falsch ist
Wenn du Pixel und CAPI gemeinsam betreibst, wird derselbe Kauf zweimal gemeldet: einmal vom Browser, einmal vom Server. Ohne Deduplizierung zählt Meta ihn doppelt, bläht Conversions auf und verfälscht die Optimierung. Deduplizierung ist Pflicht, nicht optional.
Meta dedupliziert zwei Events, wenn sie denselben event_name und dieselbe event_id teilen und innerhalb eines Fensters von rund fünf Minuten eingehen. Findet Meta eine Übereinstimmung, behält es ein Event (typischerweise wird das Browser-Event gutgeschrieben) und verwirft das doppelte Server-Event. Die Kundendaten aus beiden werden zusammengeführt.
Die Regel ist daher einfach und unerbittlich: Das Pixel-Event und das CAPI-Event für dieselbe Aktion müssen dieselbe event_id tragen.
Erzeuge die event_id einmal und nutze sie dann für beide. Ein zuverlässiges Muster ist, sie aus einem stabilen Transaktions-Identifier (der Bestell-ID) abzuleiten, sodass Browser und Server unabhängig denselben Wert berechnen.
// Browser (Pixel)
const eventId = "purchase_" + orderId; // deterministisch, auf beiden Seiten gleich
fbq("track", "Purchase", {
value: 49.90,
currency: "EUR",
content_ids: ["SKU-123"],
}, { eventID: eventId }); // Achtung auf die Schreibweise: eventID für den Pixel
// Server (CAPI) - gleiche event_id, gleicher event_name
await fetch(
`https://graph.facebook.com/v21.0/${PIXEL_ID}/events?access_token=${ACCESS_TOKEN}`,
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
data: [{
event_name: "Purchase", // muss exakt zum Pixel passen
event_time: Math.floor(Date.now() / 1000),
event_id: "purchase_" + orderId, // muss zur eventID des Pixels passen
action_source: "website",
event_source_url: orderUrl,
user_data: userData,
custom_data: {
value: 49.90,
currency: "EUR",
content_ids: ["SKU-123"],
},
}],
}),
}
);
Drei Dinge, die hier falsch gemacht werden:
- Abweichender
event_name.Purchaseim Pixel undpurchaseauf dem Server werden nicht dedupliziert. Groß-/Kleinschreibung und Schreibweise müssen identisch sein. - Eine zufällige
event_id, die auf jeder Seite separat erzeugt wird. Sie wird nie übereinstimmen. Leite sie immer aus einer gemeinsamen, deterministischen Quelle ab. - Das Server-Event zu spät senden. Trifft das Server-Event deutlich außerhalb des Matching-Fensters ein, kann die Deduplizierung fehlschlagen. Sende es zügig, idealerweise nahezu in Echtzeit bei der Bestellbestätigung oder über einen Bestell-Webhook.
Implementierungswege im Vergleich: direkte API vs. Server-Side GTM vs. Gateway
Es gibt nicht den einen richtigen Weg, CAPI-Events zu senden. Die richtige Wahl hängt von deinem Stack, deinem Team und davon ab, wie viel Kontrolle du über die Daten willst. Die vier gängigen Wege:
| Weg | Was es ist | Am besten für | Abwägung |
|---|---|---|---|
| Direkte API | Dein Backend ruft die Graph API von Meta selbst auf | Teams mit Backend-Zugriff und Entwicklern | Volle Kontrolle, volle Wartungslast |
| Server-Side GTM (sGTM) | Ein Server-Container empfängt Events und leitet sie über einen Tag an Meta weiter | Marketing-Teams, die einen Server-Hub für alle Plattformen wollen | Braucht einen gehosteten Container; etwas Komplexität |
| CAPI Gateway | Ein verwalteter Dienst, der die Server-Schicht für dich betreibt | Schnelles Setup, begrenzte Entwicklerressourcen | Anbieterabhängigkeit; weniger Datenkontrolle |
| Native Plattform-Integration | Der eingebaute CAPI-Connector von Shopify/WooCommerce | Schneller Start, einfache Shops | Begrenzte Kontrolle über Deduplizierung und EMQ |
Server-Side GTM ist die häufigste Wahl für Shops, die bereits GTM nutzen, weil ein Server-Container Meta, GA4, TikTok und weitere aus einem einzigen, einwilligungsbasierten Datenstrom speisen kann. Du leitest die Pixel-Daten und die fbp-/fbc-Cookies in den Container weiter, und ein Meta-CAPI-Tag übernimmt das Hashen und den Graph-API-Aufruf. Unsere Server-Side-GTM-Arbeit liegt in dieser Schicht.
Direkte API gibt die sauberste Kontrolle und keinen Dritten im Datenpfad, was für die DSGVO und für Datenminimierung wichtig ist. Sie kostet Entwicklerzeit und laufende Wartung.
Gateways und native Integrationen sind am schnellsten einsatzbereit, aber am schwersten auf hohe EMQ und zuverlässige Deduplizierung zu bringen, weil du weniger Kontrolle darüber hast, welche Identifier gesendet werden und wie die event_id erzeugt wird. Sie sind ein vernünftiger Ausgangspunkt, aber meist nicht der Endzustand für einen ernsthaften Werbetreibenden.
Shopify-Besonderheiten
Shopify hat einen nativen Meta-Kanal, der einige CAPI-Events automatisch sendet. Das ist eine solide Basis, aber begrenzt: Du hast wenig Kontrolle darüber, welche Identifier gesendet werden (sodass die EMQ mittelmäßig bleibt), und die Deduplizierung mit einem eventuell zusätzlich betriebenen eigenen Pixel kann inkonsistent sein.
Für ein hochwertiges Shopify-Setup:
- Nutze bei Shopify Plus Web Pixels (die Customer Events API) statt
checkout.liquidzu bearbeiten, das für den Checkout abgekündigt wird. Web Pixels laufen in einer Sandbox und sind der unterstützte Weg, Events zu erfassen. - Für das Kauf-Event ist der
orders/paid-Webhook der zuverlässigste serverseitige Trigger. Er feuert nach der Zahlungsbestätigung, trägt die vollständige Bestellung und ist nicht davon betroffen, dass der Kunde den Tab auf der Danke-Seite schließt. - Leite die
event_idaus der Shopify-Bestell-ID ab, sowohl im Client-Pixel als auch im Server-Webhook-Handler, damit sie deduplizieren. - Erfasse
fbpundfbcaus dem Storefront und speichere sie mit der Bestellung (ein Cart-Attribut oder Note-Attribut funktioniert), damit der Webhook-Handler sie inuser_dataaufnehmen und die EMQ anheben kann.
// Shopify orders/paid Webhook-Handler (Server)
export async function handleOrderPaid(order) {
const eventId = "purchase_" + order.id;
const fbp = order.note_attributes?.find(a => a.name === "fbp")?.value;
const fbc = order.note_attributes?.find(a => a.name === "fbc")?.value;
await sendCapiEvent({
event_name: "Purchase",
event_id: eventId,
user_data: {
em: hash(order.email),
ph: hash(order.phone?.replace(/\D/g, "")),
ct: hash(order.billing_address?.city),
zp: hash(order.billing_address?.zip),
country: hash(order.billing_address?.country_code),
fbp,
fbc,
},
custom_data: {
value: Number(order.total_price),
currency: order.currency,
content_ids: order.line_items.map(i => String(i.product_id)),
},
});
}
WooCommerce und andere Plattformen folgen derselben Logik: das Server-Event aus einem Order-Completed-Hook feuern, die event_id mit dem Pixel teilen und so viele gehashte Identifier weiterleiten, wie rechtlich zulässig ist.
Testen im Events Manager
Geh nicht davon aus, dass es funktioniert. Validiere es. Der Events Manager von Meta gibt dir die Werkzeuge dafür:
- Tab Test-Events. Öffne den Events Manager, gehe zu deinem Datensatz, öffne den Tab Test-Events und kopiere den Test-Event-Code (
test_event_code). Füge ihn vorübergehend deinem Server-Payload hinzu. Löse dann eine echte Aktion aus. Events erscheinen innerhalb von Sekunden im Test-Events-Feed und zeigen genau, was Meta empfangen hat. - Deduplizierung bestätigen. Ein korrekt dedupliziertes Event wird im Events Manager als von Browser und Server empfangen angezeigt, markiert als dedupliziert. Siehst du zwei separat gezählte Events, stimmen deine
event_idoder deinevent_namenicht überein. - Den Event-Match-Quality-Wert prüfen. In der Datensatzübersicht weist jedes Event seine EMQ aus. Nutze das, um zu sehen, welche Identifier fehlen, und iteriere.
- Den Tab Diagnose beobachten. Meta meldet hier fehlende Parameter, Hashing-Probleme und verworfene Events. Beseitige diese, bevor du den Daten vertraust.
{
"data": [{
"event_name": "Purchase",
"event_time": 1719500000,
"event_id": "purchase_1029",
"action_source": "website",
"user_data": { "em": "<sha256>", "fbp": "fb.1...", "fbc": "fb.1..." },
"custom_data": { "value": 49.90, "currency": "EUR" }
}],
"test_event_code": "TEST12345"
}
Entferne den test_event_code, bevor du in Produktion gehst. Test-Events zählen nicht in die Optimierung.
DSGVO-Aspekte für die EU
CAPI befreit dich nicht vom Datenschutzrecht. Personenbezogene Daten von deinem Server an Meta zu senden, ist weiterhin eine Verarbeitung personenbezogener Daten und erfordert in der EU eine Rechtsgrundlage und in nahezu allen Fällen Einwilligung. Dies ist eine technische Erläuterung, keine Rechtsberatung; kläre dein konkretes Setup mit deinem Datenschutzbeauftragten oder deiner Rechtsberatung.
Wichtige Punkte für ein DSGVO-konformes Setup:
- Einwilligung ist weiterhin erforderlich. Serverseitig heißt nicht einwilligungsfrei. Lehnt der Nutzer Marketing-Cookies ab, solltest du seine identifizierenden Daten nicht an Meta senden. Koppele CAPI an deine Consent-Management-Plattform.
- Consent Mode v2. Meta nimmt an der Consent-Mode-v2-Signalisierung von Google teil, und dein Einwilligungsstatus sollte das CAPI-Event genauso steuern, wie er den Pixel steuert. Sende das Event nur, wenn eine Marketing-Einwilligung vorliegt, oder ohne Identifier, wenn nicht, je nach deinem Consent-Design.
- Personenbezogene Daten hashen. E-Mail, Telefon und Name werden SHA-256-gehasht gesendet. Hashing reduziert die Exposition, aber die Daten sind nach der DSGVO weiterhin personenbezogen, sodass es die Einwilligungspflicht nicht aufhebt.
- Datenminimierung. Sende nur die Identifier, die du tatsächlich für das Matching brauchst. Leite keine Felder ohne Tracking-Zweck weiter.
- Auftragsverarbeitungsvertrag. Meta agiert je nach Konfiguration als Auftragsverarbeiter (oder gemeinsam Verantwortlicher) für diese Daten. Du brauchst die passende Vereinbarung und eine transparente Datenschutzerklärung, die die Verarbeitung und die Übermittlung benennt.
- Dokumentiere es. Halte die Rechtsgrundlage, den Einwilligungsfluss und den Datenfluss in deinem Verarbeitungsverzeichnis fest.
Der Vorteil einer sauberen, serverseitigen Architektur ist genau, dass sie dir einen einzigen, prüfbaren Punkt gibt, an dem Einwilligung durchgesetzt und Identifier kontrolliert werden, statt Tracking über Browser-Scripts verstreut zu haben. Für die Einwilligungs- und Rechtsgrundlagen-Schicht im Speziellen siehe unsere Tracking- und Consent-Arbeit.
Verlorenes Signal zurückholen: was zu erwarten ist
Ein dedupliziertes CAPI mit hoher EMQ hinzuzufügen, ist der wirksamste Weg, die Conversion-Blindheit rückgängig zu machen, die iOS 14.5 und ITP geschaffen haben. Metas eigene Zahlen verdeutlichen die Größenordnung: Es berichtete, dass die iOS-Web-Conversion-Untererfassung von rund 15 Prozent im September 2021 auf etwa 8 Prozent im Februar 2022 fiel, eine Reduzierung um etwa die Hälfte, die Meta auf die breitere Einführung der Conversions API und der Aggregated Event Measurement zurückführte. Eine gewisse Grund-Untererfassung bleibt erwartungsgemäß bestehen; CAPI verkleinert die Lücke, statt sie vollständig zu schließen.
Setze realistische Erwartungen: Du holst Signal zurück und verbesserst die Optimierung, du kaufst kein perfektes Tracking. Die Kombination aus vollständigeren Daten und höherer Match Quality ist es, die die Kosten pro Aktion bewegt.
Implementierungs-Checkliste
- Pixel und CAPI feuern beide für
Purchase(und andere Schlüssel-Events) - Eine gemeinsame, deterministische
event_idauf beiden Seiten (aus der Bestell-ID abgeleitet) - Identische
event_name-Schreibweise bei Pixel und Server - Server-Event zügig gesendet (Webhook oder nahezu in Echtzeit), innerhalb des Dedup-Fensters
-
fbp- undfbc-Cookies an das Server-Event weitergeleitet - Mindestens E-Mail plus mehrere weitere gehashte Identifier in
user_data - Alle personenbezogenen Daten SHA-256-gehasht und normalisiert vor dem Senden
- Consent-Steuerung an deine CMP angebunden (Consent Mode v2)
- Im Events Manager unter Test-Events validiert, Deduplizierung bestätigt
- EMQ geprüft und Richtung 8+ iteriert
- Tab Diagnose ohne Beanstandungen
- Auftragsverarbeitungsvertrag und Datenschutzerklärung aktualisiert
Häufig gestellte Fragen
Was ist die Meta Conversions API und worin unterscheidet sie sich vom Pixel?
Der Pixel sendet Conversion-Events aus dem Browser des Besuchers; CAPI sendet dieselben Events von deinem Server. CAPI übersteht Adblocker, Safari ITP und consentgetriebenes Script-Blocking, die den Browser-Pixel stoppen. Beide sind dafür ausgelegt, zusammenzuarbeiten, nicht als Alternativen.
Brauche ich den Meta Pixel weiterhin, wenn ich CAPI einrichte?
Ja. Der Pixel erfasst den Echtzeit-Browserkontext (die fbp- und fbc-Cookies, Click-IDs), der das Matching verbessert. Das empfohlene Setup ist Pixel plus CAPI für jedes wichtige Event, dedupliziert über eine gemeinsame event_id.
Ist die Meta Conversions API DSGVO-konform?
CAPI kann DSGVO-konform betrieben werden, ist aber nicht automatisch konform. Personenbezogene Daten an Meta zu senden, erfordert weiterhin eine Rechtsgrundlage (in der Praxis Einwilligung), einen Auftragsverarbeitungsvertrag und eine transparente Datenschutzerklärung. Dies ist eine technische Erläuterung, keine Rechtsberatung.
Was ist Event Match Quality und was ist ein guter Wert?
EMQ ist Metas Wert von 1 bis 10 dafür, wie gut Meta deine Events echten Accounts zuordnen kann. 8 bis 10 ist “Hervorragend” (eine perfekte 10 ist äußerst selten), 5 bis 7 ist “Gut”. Du steigerst ihn, indem du mehr genaue, korrekt gehashte Kunden-Identifier pro Event sendest.
Wie funktioniert die Deduplizierung zwischen Pixel und CAPI?
Meta dedupliziert Events, die denselben event_name und dieselbe event_id innerhalb eines Fensters von rund fünf Minuten teilen, behält eines und verwirft das Duplikat. Sowohl das Pixel- als auch das Server-Event für dieselbe Aktion müssen eine identische event_id und event_name senden.
Was ist der Unterschied zwischen Server-Side GTM, einem CAPI-Gateway und einer direkten API-Integration?
Direkte API bedeutet, dass dein Backend die Graph API von Meta selbst aufruft (meiste Kontrolle, meiste Wartung). Server-Side GTM leitet Events über einen Server-Container, der mehrere Plattformen speisen kann. Ein Gateway ist ein verwalteter Dienst, der die Server-Schicht für dich betreibt (am schnellsten, am wenigsten Kontrolle). Alle drei können funktionieren; die Kontrolle über Identifier und event_id ist der Unterschied.
Wie richte ich die Conversions API für Shopify ein?
Nutze Web Pixels für Client-Events, löse das Server-Purchase-Event aus dem orders/paid-Webhook aus, leite die event_id auf beiden Seiten aus der Shopify-Bestell-ID ab und leite fbp/fbc plus gehashte Kundendaten weiter, um die EMQ anzuheben.
Wie lange dauert die Einrichtung der Meta Conversions API?
Eine fokussierte Implementierung für die Kern-Events kostet ein paar Stunden Arbeit; eine hohe EMQ zu erreichen und die Deduplizierung über alle Events und Sonderfälle zu validieren, dauert mit Iteration typischerweise länger.
CAPI richtig zu machen, dreht sich vor allem um die unglamourösen Details: eine deterministische event_id, identische Eventnamen, die richtigen gehashten Identifier und an einer Stelle durchgesetzte Einwilligung. Wenn du es lieber umgesetzt und validiert haben möchtest, siehe unseren Meta-Conversions-API-Service oder den umfassenderen Server-Side-Tracking-Service. Am besten startest du mit einem kostenlosen Erstgespräch: In einem kostenlosen Erstgespräch klären wir, was deinem aktuellen Setup fehlt, und legen den schnellsten Weg zu einem sauberen, deduplizierten CAPI fest.