In Kürze:
- Seit dem 24. August 2026 laufen ChatGPT Ads in 31 europäischen Ländern, Deutschland und Österreich inklusive. Ausgespielt wird an eingeloggte Nutzer der Free- und Go-Tarife.
- Es gibt zwei Messwege. Das Measurement Pixel misst im Browser, die Conversions API meldet Conversions vom Server. OpenAI empfiehlt, beide zu kombinieren.
- Der Klick-Parameter heißt
oppref. OpenAI hängt ihn an deine Ziel-URL an, das Pixel speichert ihn im First-Party-Cookie__oppref. Geht er bei einem Redirect verloren, bricht die Attribution. - Drei Wege zur Einrichtung: Pixel-Code direkt im Head, Stape-Template im Google Tag Manager oder die Conversions API über Server-Side GTM.
Unten findest du das komplette Setup mit Screenshots aus dem deutschen Ads Manager: erst der schnelle Weg über den Pixel-Code, dann die saubere Variante über Google Tag Manager und Server-Side GTM.

OpenAI hat die Werbung in ChatGPT am 24. August 2026 in 31 europäischen Ländern ausgerollt, Deutschland und Österreich inklusive. Ausgespielt wird an eingeloggte Nutzer der Free- und Go-Tarife. Plus und Pro bleiben werbefrei.
Wie OpenAI Conversions überhaupt zuordnet
Wenn jemand auf eine Anzeige in ChatGPT klickt, hängt OpenAI an deine Ziel-URL einen Klick-Parameter namens oppref an. Dieser Parameter ist das Gegenstück zur gclid bei Google Ads oder fbclid bei Meta.
Das Pixel liest den Parameter beim ersten Seitenaufruf aus und legt ihn in einem First-Party-Cookie namens __oppref ab. Bei jeder späteren Conversion schickt es den gespeicherten Wert mit. Genau deshalb gilt: Der Parameter darf unterwegs nicht verloren gehen. Redirects, Consent-Layer mit Reload, Sprachweiterleitungen oder ein Shop-Login, das die Query-Parameter abschneidet, unterbrechen dir die Attribution.
Es gibt zwei Messwege:
- Measurement Pixel: JavaScript im Browser. Schnell eingebaut, aber anfällig für Adblocker und ITP.
- Conversions API: Server-zu-Server per HTTPS-Request via Server Side Tracking. Robuster, erlaubt Offline-Conversions und nachträgliche Meldungen
OpenAI empfiehlt den Hybrid-Betrieb, also beides parallel mit Deduplizierung. Das kennst du vom Prinzip her schon von der Meta Conversions API.
Schritt 1: Datenquelle im Ads Manager anlegen
Im OpenAI Ads Manager gehst du auf Tools und dann auf Conversions. Die Oberfläche hat drei Reiter: Datenquelle, Conversion-Ereignisse und Ereignisstream.

Über Erstellen legst du eine Datenquelle vom Typ Web an. Danach findest du im Drei-Punkte-Menü der Zeile den Eintrag Code anzeigen. Dort liegen Pixel-ID, Einrichtungscode und ein Beispiel für einen Ereignisaufruf.

Schritt 2: Conversion-Ereignis definieren
Eine Datenquelle allein misst noch nichts. Im Reiter Conversion-Ereignisse legst du fest, welche Aktion als Conversion zählt.

Zwei Dinge sind hier wichtig. Erstens ist der Conversion-Name auf 30 Zeichen begrenzt und taucht später in Berichten und bei der Kampagneneinrichtung auf. Zweitens legst du das Click-through-Attributionsfenster fest. Standard sind 30 Tage.
Die Basisereignisse und ihre technischen Namen
Das Dropdown zeigt die Ereignisse auf Deutsch. Im Code brauchst du aber die englische Bezeichnung. Das ist die Stelle, an der in der Praxis die meisten Fehler passieren.

Hier die Übersetzungstabelle. Welchen type du im Datenobjekt dazu mitgibst, siehst du in den Code-Beispielen weiter unten:
| Im Ads Manager | Event-Name im Code |
|---|---|
| Seite angesehen | page_viewed |
| Inhalte angesehen | contents_viewed |
| Artikel hinzugefügt | items_added |
| Checkout gestartet | checkout_started |
| Bestellung erstellt | order_created |
| Lead erstellt | lead_created |
| Registrierung abgeschlossen | registration_completed |
| Termin vereinbart | appointment_scheduled |
| Abonnement erstellt | subscription_created |
| Testphase gestartet | trial_started |
| App installiert | app_installed |
| App geöffnet | app_opened |
Für Dienstleister und B2B sind vor allem lead_created und appointment_scheduled interessant. Wer Termine über einen Kalender bucht, sollte appointment_scheduled nehmen, nicht das generische Lead-Event.
Schritt 3, Variante A: Pixel direkt in den Quelltext
Das ist der schnellste Weg. Der Einrichtungscode kommt in den Head jeder Seite. Er entspricht dem Snippet aus der offiziellen Pixel-Dokumentation von OpenAI:
<script>
(function (w, d, s, u) {
if (w.oaiq) return;
var q = function () { q.q.push(arguments); };
q.q = [];
w.oaiq = q;
var js = d.createElement(s);
js.async = true;
js.src = u;
var f = d.getElementsByTagName(s)[0];
f.parentNode.insertBefore(js, f);
})(window, document, "script", "https://bzrcdn.openai.com/sdk/oaiq.min.js");
oaiq("init", {
pixelId: "DEINE-PIXEL-ID",
});
</script>
Den Conversion-Aufruf setzt du dort, wo die Aktion tatsächlich passiert, also auf der Dankeseite oder im Erfolgs-Callback deines Formulars. Nicht neben den Einrichtungscode.
oaiq("measure", "lead_created", {
type: "customer_action",
amount: 15000,
currency: "EUR"
}, {
event_id: "lead-2026-09-01-4711"
});
Für einen Shop-Kauf sieht das so aus:
oaiq("measure", "order_created", {
type: "contents",
amount: 2599,
currency: "EUR",
contents: [
{
id: "sku_123",
name: "Starter Bundle",
content_type: "product",
quantity: 1,
amount: 2599,
currency: "EUR"
}
]
}, {
event_id: "order_12345"
});
Beträge in der kleinsten Währungseinheit
Der Klassiker unter den Fehlern: amount ist eine Ganzzahl in Cent, nicht in Euro. 25,99 Euro sind also 2599. Wer 25.99 überträgt, meldet OpenAI einen Warenkorb von 25,99 Cent und wundert sich anschließend über einen absurden ROAS. Gleiches gilt für quantity, auch das muss eine Ganzzahl sein.
Content Security Policy anpassen
Wenn deine Seite eine CSP ausliefert, blockiert sie das Pixel stillschweigend. Diese Hosts musst du freigeben:
script-src https://bzrcdn.openai.com
connect-src https://bzr.openai.com https://bzrcdn.openai.com
img-src https://bzr.openai.com
Schritt 3, Variante B: Google Tag Manager im Browser
In den meisten Projekten willst du das Pixel nicht fest im Template haben, sondern im Tag Manager steuern. Für den Web-Container gibt es von Stape ein fertiges Community-Template, das OpenAI Pixel Tag.
- Im GTM unter Vorlagen die Galerie durchsuchen öffnen und nach
openaisuchen. Den Treffer OpenAI Ads Pixel by Stape hinzufügen. - Ein Tag vom Typ Initialisierung anlegen, Pixel-ID eintragen und auf Consent Initialization oder Initialization triggern.
- Pro Conversion ein weiteres Tag anlegen, Event-Name aus der Tabelle oben wählen und Betrag, Währung und Event-ID aus dem
dataLayerbefüllen. - Als Trigger den
dataLayer-Event deiner Dankeseite oder deines Formular-Erfolgs nutzen.

Die Felder des Web-Templates
So sieht die Tag-Konfiguration aus, wenn du das Template ausgewählt hast:

Auf den ersten Blick wirkt das überladen. Tatsächlich brauchst du für ein funktionierendes Setup nur eine Handvoll Felder. Das sind die wichtigsten:
| Feld | Was du einträgst |
|---|---|
| OpenAI Pixel ID(s) | Pflichtfeld. Der Plural ist kein Tippfehler, du kannst mehrere IDs angeben und dasselbe Event an mehrere Pixel schicken. |
| Event Name Setup Method | Entweder inherit, dann übernimmt das Tag den Namen aus dem dataLayer, oder override, dann wählst du zwischen Standard-Event und Custom-Event. |
| Enable automatic User Data and Event Parameters mapping from the Data Layer | Zieht Nutzer- und Eventdaten automatisch aus dem dataLayer. Spart viel Handarbeit, wenn dein dataLayer sauber gebaut ist. |
| Enable Advanced Matching | Aktiviert das automatische Erkennen und Hashen von Nutzerdaten im Browser. Nur mit passender Rechtsgrundlage einschalten. |
| Event ID | Pflichtfeld unter den Server-Side-Tracking-Einstellungen. Das ist der Schlüssel für die Deduplizierung gegen die Conversions API. |
| Opt Out und Consent Granted | Steuern den Personalisierungs-Opt-Out und den Consent-Status. Beide lassen sich per Variable dynamisch befüllen. |
| Enable Google Consent Mode support | Koppelt das Tag an das Signal ad_storage. |
| Enable JS SDK Debugging Logs | Entspricht dem debug: true aus dem Handeinbau. Für Tests an, danach wieder aus. |
Praktisch ist die Option Push event to DataLayer with the Event ID. Damit schreibt das Tag die erzeugte Event-ID zurück in den dataLayer, wo der Server-Container sie abgreifen kann. Genau das brauchst du für ein sauberes Hybrid-Setup.
Das Template unterstützt den Google Consent Mode. Ist ad_storage zum Zeitpunkt der Tag-Ausführung abgelehnt, werden SDK-Laden und Events über einen Consent-Listener zurückgestellt und automatisch nachgeholt, sobald die Einwilligung erteilt wird. Das ist praktisch, ersetzt aber kein sauberes Consent-Konzept.
Schritt 3, Variante C: Server-Side GTM und die Conversions API
Wer schon einen Server-Container betreibt, sollte den nutzen. Stape stellt dafür ein zweites Template bereit, das OpenAI Conversions API Tag. Es schickt die Ereignisse aus dem Server-Container direkt an OpenAI.
Dafür brauchst du zwei Dinge: die Pixel-ID und einen API-Schlüssel. Den Schlüssel legst du im Ads Manager selbst an, oben rechts über das Schlüssel-Symbol im Conversions-Bereich.

Die Click-ID im Server-Container verfügbar machen
Der Server-Container sieht den oppref-Parameter nicht automatisch. Du hast zwei Möglichkeiten:
- Das Pixel läuft parallel im Browser und setzt das Cookie
__oppref. Der Server liest es aus dem Request. - Du verzichtest ganz auf die Browser-Bibliothek und lässt den Server-Container die Click-ID selbst speichern. Das CAPI-Tag bringt dafür die Schalter Set Click ID cookie und Set Browser ID cookie mit. Aktiviert schreibt es
__opprefund__obrefals First-Party-Cookies vom Server aus, inklusive einstellbarer Domain, SameSite, HttpOnly-Flag und Laufzeit. Diese Variante spart ein zusätzliches Drittanbieter-Skript im Frontend und liefert dank serverseitig gesetztem Cookie stabilere Laufzeiten als ein per JavaScript gesetztes Cookie.
Die Felder des Server-Templates
Das Server-Tag hat etwas andere Felder als die Web-Variante. Das sind die relevanten:
| Feld | Was du einträgst |
|---|---|
| Event Name Setup Method | Drei Optionen: Standard für ein Standardereignis, Inherit from client übernimmt den Namen aus dem eingehenden Event, Custom für ein eigenes Ereignis. |
| OpenAI Pixel ID | Pflichtfeld, dieselbe ID wie im Web-Container. |
| API Key | Pflichtfeld. Der Conversion-Schlüssel aus dem Ads Manager. Gehört in eine Umgebungsvariable, nicht im Klartext ins Tag. |
| Action Source | Woher die Conversion stammt: web, mobile_app, offline, physical_store, phone_call, email oder other. Für Offline-Umsätze aus dem CRM ist offline richtig, nicht web. |
| Validate Only | Entspricht validate_only im API-Request. Beim Aufbau auf True, danach nicht vergessen umzustellen. |
| Use Optimistic Scenario | Das Tag meldet Erfolg, ohne die Antwort von OpenAI abzuwarten. Beschleunigt die Antwortzeit des Containers, verschluckt aber Fehler. Beim Einrichten aus lassen. |
| Set Click ID cookie und Set Browser ID cookie | Lässt den Server __oppref und __obref selbst setzen, mit Domain, SameSite, HttpOnly und Laufzeit. |
| Automap-Optionen | Je eine Checkbox für Server-Event-Daten, Nutzerdaten und Eventparameter. Übernimmt die Felder automatisch aus dem eingehenden Event, statt jede Zeile von Hand zu mappen. |
| Server Event Data Parameters | Hier trägst du unter anderem die Event-ID ein, mit der gegen das Browser-Event dedupliziert wird. |
Das aus Datenschutzsicht wichtigste Feld steht ganz unten unter Tag Execution Consent Settings. Dort wählst du zwischen Send data always und Send data in case marketing consent given. Die zweite Option ist im EWR in aller Regel die richtige. Damit hängt das Server-Tag am selben Consent-Signal wie das Browser-Pixel, und du vermeidest genau den Fall, dass der Server weitersendet, während das Pixel schweigt.
Hybrid betreiben und richtig deduplizieren
Wenn Pixel und API dasselbe Ereignis melden, muss OpenAI wissen, dass es sich um eine Conversion handelt. Der Schlüssel dafür ist die Kombination aus Pixel-ID, Event-Name und Event-ID. OpenAI akzeptiert das zuerst eingehende Event und verwirft das spätere.
Praktisch heißt das: Du brauchst eine Event-ID, die in beiden Containern identisch ist. Nimm dafür einen stabilen fachlichen Wert wie die Bestellnummer, nicht einen Zufallswert, der pro Container neu erzeugt wird. Bei Custom Events muss zusätzlich der custom_event_name auf beiden Seiten gleich lauten.
Der direkte API-Aufruf
Falls du ohne Tag Manager arbeitest, etwa aus einem Backend oder einer Warenwirtschaft heraus, sieht der Request so aus. Alle Felder und Grenzwerte stehen in der Dokumentation der Conversions API:
POST https://bzr.openai.com/v1/events?pid=DEINE-PIXEL-ID
Authorization: Bearer DEIN-API-KEY
Content-Type: application/json
{
"validate_only": true,
"events": [
{
"id": "order_12345",
"type": "order_created",
"timestamp_ms": 1788254400000,
"oppref": "OPPREF-AUS-DEM-COOKIE",
"source_url": "https://deine-domain.de/danke",
"action_source": "web",
"user": {
"emails_sha256": ["b4c9a2...gehashter-wert"],
"countries": ["DE"],
"ip_address": "203.0.113.1",
"user_agent": "Mozilla/5.0"
},
"data": {
"type": "contents",
"amount": 2599,
"currency": "EUR"
}
}
]
}
Merk dir vier Grenzwerte:
- Maximal 1.000 Events pro Request.
- Der Zeitstempel darf höchstens sieben Tage zurückliegen und maximal zehn Minuten in der Zukunft liegen.
- Schlägt ein einzelnes Event fehl, wird der komplette Batch abgelehnt.
- Teste immer erst mit
"validate_only": trueund stell erst danach auffalse.
Für Nutzerdaten gilt: E-Mail-Adressen und Telefonnummern werden normalisiert und dann mit SHA-256 gehasht, in Kleinbuchstaben als Hexadezimalwert. E-Mails vorher trimmen und kleinschreiben, Telefonnummern auf reine Ziffern mit Ländervorwahl reduzieren. Ort, Region, Postleitzahl und Land bleiben im Klartext.
Consent: Was im EWR wirklich zu tun ist
Das Pixel schreibt ein Cookie und liest es aus. Das ist ein Zugriff auf Endgeräteinformationen und fällt damit unter § 25 TDDDG. Dafür brauchst du eine Einwilligung, und zwar bevor das Cookie gesetzt wird. Dass die Daten anschließend an einen Werbeanbieter gehen, macht die Sache nicht besser. Zudem wird natürlich ein Request an OpenAI gesendet.
Das SDK bringt dafür einen eigenen Consent-Befehl mit. Setze ihn vor dem Init-Aufruf:
oaiq("consent", false);
oaiq("init", { pixelId: "DEINE-PIXEL-ID" });
// erst nach aktiver Zustimmung im Consent-Banner:
oaiq("consent", true);
Drei Punkte, die in der Praxis regelmäßig schiefgehen:
- Server-Side ersetzt keine Einwilligung. Ob du die Daten aus dem Browser oder vom Server sendest, ändert an der rechtlichen Bewertung wenig, sobald du Endgeräteinformationen wie die Click-ID aus einem Cookie verwendest. Der Server-Container macht das Tracking robuster, nicht einwilligungsfrei. Consent Tool verwenden!
- Beide Wege müssen synchron laufen. Wenn das Pixel bei Ablehnung schweigt, die Conversions API im Backend aber trotzdem feuert, hast du den Consent faktisch ausgehebelt. Der Consent-Status muss bis in den Server-Container durchgereicht werden. Im Stape-Server-Tag erledigst du das über die Einstellung Send data in case marketing consent given.
- Der Datenschutzhinweis gehört aktualisiert. OpenAI ist als neuer Empfänger in deine Datenschutzerklärung aufzunehmen, inklusive Hinweis auf die Datenübermittlung in die USA.
Wenn du unsicher bist, ob dein Setup das überhaupt sauber abbildet: Genau dafür gibt es den Consent Check. Das Grundprinzip habe ich schon beim Thema GTM nicht ohne Consent beschrieben, es gilt hier unverändert.
Unsicher, ob dein Consent-Setup das trägt?
Die Kombination aus Einwilligung, Server-Side-Tracking und einem neuen Werbeanbieter ist die Stelle, an der die meisten Setups auseinanderfallen. Ich schaue mir an, was bei dir tatsächlich feuert und was nicht.
Schritt 4: Testen mit dem Ereignisstream
OpenAI liefert ein brauchbares Debugging-Werkzeug mit. Im Reiter Ereignisstream klickst du auf Abfrage starten und siehst eingehende Ereignisse live.

Die Spalte API-Kanal ist beim Hybrid-Setup wichtig. Daran erkennst du, ob ein Ereignis vom Pixel oder vom Server kam. Kommen beide an und die Deduplizierung greift, ist alles richtig.
Beim Test im Browser hilft zusätzlich der Debug-Modus des SDK:
oaiq("init", { pixelId: "DEINE-PIXEL-ID", debug: true });
Ein zweites, oft übersehenes Werkzeug sind die Warnhinweise oben rechts. Sie melden dir konkret, wenn keine Conversion-Ereignisse eingehen, keine Server-zu-Server-Ereignisse ankommen oder keine aktive Kampagne ein Conversion-Ereignis nutzt.

Schritt 5: Conversion mit der Kampagne verknüpfen
Der letzte Schritt wird am häufigsten vergessen. Ein sauber messendes Pixel bringt nichts, solange keine Kampagne das Ereignis nutzt. Beim Anlegen einer Kampagne wählst du unter Ziel zwischen Reichweite, Klicks und Conversions.

Darunter liegt der Bereich Conversion-Ereignis, in dem du über Ereignis hinzufügen festlegst, welche Aktion die Kampagne optimieren soll. Plane das vorher durch: Das für die Optimierung gewählte Standardereignis lässt sich nach dem Anlegen der Kampagne nicht mehr beliebig austauschen.
Und noch ein praktischer Hinweis aus dem Konto: Ohne abgeschlossene Unternehmensverifizierung kann die Auslieferung später unterbrochen werden. Das erledigst du am besten sofort mit.
Schritt 6: Die Klicks in GA4 und Matomo wiederfinden
Der Ads Manager zählt Conversions in seiner eigenen Logik. Für die Webanalyse brauchst du zusätzlich saubere Kampagnenparameter an der Ziel-URL. Sonst landet der bezahlte ChatGPT-Traffic im selben Topf wie das organische ChatGPT-Referral, und du kannst weder Umsatz noch Absprungverhalten der Kampagne zuordnen.
OpenAI hat dafür ein eigenes Feld. Du erreichst es über das Drei-Punkte-Menü auf Kampagnen-, Anzeigengruppen- oder Anzeigenebene über Kampagne bearbeiten, Anzeigengruppe bearbeiten oder Anzeige bearbeiten. Der Abschnitt heißt Abfrageparameter der Landingpage.

Fünf Vorlagenwerte stehen bereit. OpenAI ersetzt sie beim Ausspielen der Anzeige durch die echten Werte:
{campaign_id}für die Kampagnen-ID{ad_group_id}für die Anzeigengruppen-ID{ad_id}für die Anzeigen-ID{ad_account_id}für die Werbekonto-ID{oppref}für die Klick-Referenz
Der letzte Wert ist der spannendste, und er ist neu. Anleitungen aus dem Sommer 2026 schreiben noch, es gebe kein Makro für die Klick-ID. Inzwischen kannst du oppref unter einem eigenen Parameternamen an die Ziel-URL hängen. Das ist die beste Versicherung gegen den Fallstrick weiter unten: Schneidet eine Weiterleitung den Standardparameter ab oder lädt ein Consent-Layer die Seite neu, steht die Klick-Referenz immer noch ein zweites Mal in der URL. Aus dem eigenen Parameter kannst du sie im Tag Manager auslesen und wie oben beschrieben an die Conversions API übergeben.
Meine Empfehlung für die Zeichenkette, einmal auf Kampagnenebene gesetzt:
utm_source=openai&utm_medium=cpc&utm_source_platform=openai_ads&utm_campaign=chatgpt-beratung-q4&utm_id={campaign_id}&utm_term={ad_group_id}&utm_content={ad_id}&oai_click={oppref}
Den Wert für utm_campaign trägst du bewusst von Hand ein. Die Vorlagenwerte liefern nur IDs, und ein Bericht voller Zeichenketten wie cmpn_6a967a1e nützt niemandem. Die maschinenlesbare Verknüpfung übernimmt utm_id.
Wichtig ist die Reihenfolge der Ebenen. Vier Stellen können denselben Parameter setzen: die Ziel-URL der Anzeige schlägt die Anzeige, die Anzeige schlägt die Anzeigengruppe, die Anzeigengruppe schlägt die Kampagne. Parameter, die fest in einer Ziel-URL stehen, blockieren also still und leise jede Vorgabe von oben. Räum diese Altlasten weg, bevor du die Vorlagenwerte ausrollst.
Was davon in der Webanalyse ankommt
So sieht ein echter Klick aus einer ChatGPT-Anzeige anschließend im Besucherprotokoll aus:

Drei Punkte sind daran wichtig.
Erstens sind alle Werte IDs. Das ist gewollt, denn eine Umbenennung im Ads Manager zerschießt so keine historische Auswertung. Für lesbare Berichte brauchst du im Gegenzug eine Zuordnungstabelle von ID zu Name, zum Beispiel als verknüpfte Tabelle in Data Studio. Leg sie gleich beim Start der ersten Kampagne an, nicht erst beim ersten Reporting.
Zweitens erkennt Matomo alle Standardparameter ohne Konfiguration, also utm_source, utm_medium, utm_campaign, utm_content, utm_term und utm_id. Einen eigenen Parameter wie oai_click siehst du dort nur, wenn du ihn als benutzerdefinierte Dimension erfasst. In GA4 gilt dasselbe über eine ereignisbezogene Dimension.
Drittens ist die Channelgruppe nicht selbstverständlich. Ob GA4 aus der Quelle openai und dem Medium cpc die Gruppe Paid Search oder Paid Other macht, hängt davon ab, ob Google die Quelle auf seiner Liste erkannter Suchmaschinen führt. Nimm das nicht an, sondern prüf es: Mit dem UTM Checker siehst du sofort, in welcher Standard-Channelgruppe deine Kampagne landet. Der UTM Builder hilft davor, die Zeichenkette konsistent aufzubauen. Wenn du den Kanal sauber vom übrigen bezahlten Traffic trennen willst, definierst du in GA4 eine eigene Channelgruppe über die Quelle openai.
Die häufigsten Fallstricke
Der oppref-Parameter geht verloren
Häufigste Ursache für fehlende Conversions. Prüfe jede Weiterleitung auf deiner Landingpage. Ein Redirect von /angebot auf /angebot/ reicht schon, wenn die Query-Parameter dabei abgeschnitten werden. Gleiches gilt für Consent-Layer, die die Seite nach der Zustimmung neu laden. Als zweite Absicherung schickst du die Klick-Referenz über den Vorlagenwert {oppref} zusätzlich unter einem eigenen Parameternamen mit, wie in Schritt 6 beschrieben.
Doppelt gezählte Conversions
Entsteht immer dann, wenn Pixel und API dasselbe Ereignis mit unterschiedlichen Event-IDs melden. Auch ein Reload der Dankeseite kann doppelt zählen. Verwende die Bestellnummer als Event-ID, dann ist das Problem auf beiden Wegen gelöst.
Das Sieben-Tage-Fenster der API
Ereignisse dürfen nicht älter als sieben Tage sein. Für lange Verkaufsprozesse ist das zu kurz. Wenn ein Lead erst nach drei Wochen zum Auftrag wird, kannst du diesen Auftrag nicht mehr als Offline-Conversion nachmelden. Der Ausweg: Melde den frühen Schritt, also den Lead, und bewerte ihn mit einem realistischen Erwartungswert statt mit Null.
Abweichende Zahlen zwischen OpenAI und GA4
Die Zahlen werden nie exakt übereinstimmen, weil die Attributionsmodelle unterschiedlich sind. Wenn die Abweichung zu groß wird, liegt die Ursache meist nicht bei OpenAI, sondern im eigenen Setup. Ein Google Analytics Audit deckt so etwas systematisch auf. OpenAI zählt View-through-Conversions in einem festen Ein-Tages-Fenster nach der Impression und weist sie separat aus. In GA4 tauchen sie gar nicht auf. Kennzeichne deine Ziel-URLs zusätzlich mit UTM-Parametern, damit du den bezahlten ChatGPT-Traffic in der Webanalyse sauber vom organischen ChatGPT-Referral trennen kannst. Das gilt genauso, wenn du statt GA4 mit Matomo arbeitest. Der UTM Builder hilft dabei, konsistente Parameter zu bauen. Mit dem UTM Checker prüfst du danach, in welcher Standard-Channelgruppe deine Kampagne in GA4 landet.
Das Pixel wird blockiert
Neben der CSP sind Adblocker und Browser-Schutzmechanismen ein Thema. Genau deshalb ist der Server-Side-Weg bei ernsthaften Budgets kein Luxus, sondern die Grundlage für verlässliche Zahlen.
Was ich empfehle
Wenn du gerade erst startest und wissen willst, ob ChatGPT Ads für dich funktionieren, reicht Variante A oder B. Pixel rein, ein sauberes Lead- oder Kauf-Event, Ereignisstream prüfen und alles hinter ein Consent Banner, fertig. Das ist an einem Vormittag erledigt.
Sobald relevantes Budget fließt, führt an der Kombination aus Pixel und Conversions API kein Weg vorbei. Wer bereits einen Server-Container betreibt, hat den größten Teil der Arbeit ohnehin schon erledigt und ergänzt nur ein weiteres Tag.
Und unabhängig von der Variante: Klär die Consent-Frage vorher, nicht wenn die ersten Zahlen da sind. Ein Tracking-Setup, das du hinterher wieder abschalten musst, kostet mehr als eines, das von Anfang an sauber gebaut ist.
Häufige Fragen
Brauche ich für OpenAI Ads Conversion Tracking eine Einwilligung?
Ja. Das Measurement Pixel schreibt und liest ein First-Party-Cookie namens __oppref. Der Zugriff auf Endgeräteinformationen ist nach § 25 TDDDG einwilligungspflichtig. Zudem wird ein Request an OpenAI gesendet, der einwilligungspflichtig ist.
Was ist der Unterschied zwischen oppref und obref?
oppref ist die Klick-Referenz, die OpenAI an deine Ziel-URL anhängt und die das Pixel im Cookie __oppref speichert. obref ist eine zusätzliche Browser-Referenz aus dem Cookie __obref, die du bei der Conversions API im Nutzerobjekt ungehasht mitgeben kannst. Beide dürfen nur nach erteilter Einwilligung gelesen werden.
Reicht das Pixel allein oder brauche ich die Conversions API?
Für einen ersten Test reicht das Pixel. Bei laufendem Budget solltest du beides kombinieren, weil das Pixel durch Adblocker, Browser-Schutzmechanismen und kurze Cookie-Laufzeiten Conversions verliert. OpenAI selbst empfiehlt den Hybrid-Betrieb mit Deduplizierung über die Event-ID.
In welcher Einheit muss ich Conversion-Werte übergeben?
Als Ganzzahl in der kleinsten Währungseinheit, bei Euro also in Cent. 25,99 Euro werden als 2599 übergeben, zusammen mit currency: „EUR“. Dezimalwerte führen zu massiv falschen Umsatzzahlen.
Wie lange ist das Attributionsfenster bei OpenAI Ads?
Das Click-through-Fenster steht standardmäßig auf 30 Tage und lässt sich beim Anlegen des Conversion-Ereignisses anpassen. View-through-Conversions werden in einem festen Fenster von einem Tag nach der Impression gezählt und im Ads Manager separat ausgewiesen. Davon unabhängig gilt für die Conversions API, dass gemeldete Ereignisse nicht älter als sieben Tage sein dürfen.
Kann ich Kampagnen auf Conversions optimieren?
Ja. Beim Anlegen einer Kampagne stehen Reichweite, Klicks und Conversions als Ziel zur Auswahl. Voraussetzung ist, dass ein Conversion-Ereignis angelegt ist und tatsächlich Daten liefert. Das für die Optimierung gewählte Ereignis lässt sich später nicht mehr beliebig austauschen.
Woher bekomme ich den API-Schlüssel für die Conversions API?
Aus dem Ads Manager selbst. Unter Tools und Conversions findest du oben rechts das Schlüssel-Symbol und dahinter den Bereich Conversion-Schlüssel, in dem du einen neuen Schlüssel erstellst. Eine Anfrage beim OpenAI-Team ist dafür nicht mehr nötig.
Warum sehe ich keine Ereignisse im Ads Manager?
Die häufigsten Ursachen sind: das Pixel liegt im Body statt im Head, eine Content Security Policy blockiert bzrcdn.openai.com, die Einwilligung wurde nicht erteilt, oder der Ereignisaufruf feuert auf einer Seite, die nie erreicht wird. Prüfe zuerst den Ereignisstream mit gestarteter Abfrage und danach die Warnhinweise im Conversions-Bereich.
Kann ich App-Installationen und App-Öffnungen als Conversion messen?
Ja, aber nicht über das Pixel. Die Ereignisse app_installed und app_opened lassen sich ausschließlich über die Conversions API melden. Dabei muss action_source auf mobile_app stehen und data.type auf customer_action. Alternativ bindest du einen Mobile-Measurement-Partner wie AppsFlyer an, der die Meldung übernimmt.
Gibt es in ChatGPT jetzt wirklich Werbung?
Ja. OpenAI hat Anzeigen im Mai 2026 in den USA gestartet und am 24. August 2026 auf 31 europäische Länder ausgeweitet, Deutschland und Österreich eingeschlossen. Zu sehen bekommen sie eingeloggte Nutzer der Tarife Free und Go. Plus und Pro bleiben werbefrei.
Wie funktionieren ChatGPT Ads?
Anzeigen werden passend zum laufenden Gespräch ausgespielt. Im Europäischen Wirtschaftsraum wertet OpenAI dafür zunächst nur fünf Signale aus: das aktuelle Gesprächsthema, den ungefähren Standort, den Gerätetyp, die Tageszeit und die Sprache. Frühere Chats und gespeicherte Erinnerungen fließen nicht ein. Personalisierte Anzeigen sind für später angekündigt, dann nur mit ausdrücklicher Einwilligung.
Wie messe ich Conversions aus ChatGPT Ads?
Über zwei Wege, die sich kombinieren lassen. Das Measurement Pixel wird im Head deiner Seite geladen und meldet Conversions aus dem Browser über oaiq measure. Die Conversions API meldet dieselben Ereignisse vom Server an bzr.openai.com. Zugeordnet wird über den Klick-Parameter oppref, dedupliziert über eine gemeinsame Event-ID. Im Ads Manager legst du dazu eine Datenquelle und ein Conversion-Ereignis an.
Was kosten ChatGPT Ads?
Abgerechnet wird je nach Kampagnenziel per CPM bei Reichweite, per CPC bei Klicks oder als conversion-optimierter Klick. Berichtete Werte aus dem US-Markt liegen bei etwa 25 bis 60 US-Dollar Tausenderkontaktpreis und rund 3 bis 5 US-Dollar pro Klick. Das ursprüngliche Mindestbudget von 200.000 US-Dollar ist mit dem Start des Self-Service-Ads-Managers im Mai 2026 entfallen. Verlässliche Benchmarks für den deutschsprachigen Markt gibt es noch nicht, dafür läuft das Format hier zu kurz.
Was ist eine Conversion-Kampagne bei OpenAI Ads?
Eine Kampagne, deren Ziel nicht Reichweite oder Klicks ist, sondern eine konkrete Handlung auf deiner Website. Beim Anlegen wählst du als Ziel Conversions und verknüpfst ein Conversion-Ereignis, auf das die Auslieferung optimiert wird. Voraussetzung ist, dass dieses Ereignis bereits Daten liefert. Das gewählte Ereignis lässt sich später nicht mehr beliebig austauschen, die Entscheidung solltest du also vorher treffen.
Setzt OpenAI Ads automatisch UTM-Parameter an die Ziel-URL?
Nicht von allein. Du trägst sie selbst ein, im Feld Abfrageparameter der Landingpage. Es liegt im Drei-Punkte-Menü auf Kampagnen-, Anzeigengruppen- und Anzeigenebene. Dort nutzt du die Vorlagenwerte {campaign_id}, {ad_group_id}, {ad_id}, {ad_account_id} und {oppref}, die OpenAI beim Ausspielen durch die echten Werte ersetzt. Die spezifischere Ebene gewinnt, und Parameter, die fest in der Ziel-URL stehen, schlagen alle Ebenen. Alle Vorlagenwerte liefern IDs statt lesbarer Namen, einen sprechenden Kampagnennamen für utm_campaign setzt du also von Hand.
Quellen und weiterführende Doku
Die technischen Angaben in diesem Artikel stammen aus der offiziellen Dokumentation von OpenAI sowie aus den Templates von Stape. Weil sich an einem Beta-Produkt schnell etwas ändert, lohnt vor der Umsetzung ein Blick in die Originalquellen:
- OpenAI Developers: Measurement Pixel, Snippet, Events, Consent-Befehl und CSP-Direktiven
- OpenAI Developers: Conversions API, Endpoint, Felder, Hashing-Regeln und Limits
- OpenAI Help Center: Conversion Measurement, Einordnung aus Sicht des Ads Managers
- Stape: OpenAI Pixel Tag für den GTM Web-Container
- Stape: OpenAI Conversions API Tag für den Server-Container
Die Screenshots in diesem Artikel stammen aus meinem eigenen OpenAI Ads Account, aufgenommen am 1. September 2026. Der Ads Manager trägt aktuell noch das Label Beta, die Oberfläche kann sich also kurzfristig ändern.
Du willst ChatGPT Ads testen und das Tracking von Anfang an richtig aufsetzen, inklusive Consent und Server-Side? Dann lass uns eine halbe Stunde darüber sprechen, bevor das erste Budget läuft. Was ich sonst noch mache, steht unter Digital Analytics.
Schreibe einen Kommentar