Conversion Traffic
ChatGPT Ads Tracking einrichten: Pixel, Conversions API und UTM
ChatGPT Ads 25 Min. Lesezeit

ChatGPT Ads Tracking einrichten: Pixel, Conversions API und UTM

Das Wichtigste zusammengefasst

ChatGPT Ads Tracking besteht aus drei Handgriffen. Du hängst UTM-Parameter an die Ziel-URL deiner Anzeigengruppe, weil OpenAI keine setzt. Du baust das Pixel über den Tag Manager so ein, dass es erst nach dem Klick auf „Akzeptieren” lädt, und zwar sofort und nicht erst beim nächsten Seitenaufruf. Und du meldest die Anfrage als Ereignis an OpenAI, bei den meisten Websites über den Tag Manager. Für jeden Schritt gibt es unten einen Prompt, den du einer KI geben kannst, und am Ende eine Fehlersuche für den Fall, dass nichts ankommt.

Ich habe das Tracking für ChatGPT Ads Anfang September 2026 auf meiner eigenen Website eingerichtet und dabei an drei Stellen Lehrgeld bezahlt. Dieser Guide ist das Ergebnis. Er ist für dich gedacht, wenn du als Handwerksbetrieb, Praxis, Beratung oder Online-Shop einen ersten Test auf der Plattform fährst und hinterher wissen willst, ob eine Anfrage wirklich aus ChatGPT kam. Was der Kanal insgesamt kann und für wen er sich lohnt, steht im Überblick zu ChatGPT Ads.

Schnellstart in 20 Minuten
  1. Im Ads Manager die Anzeigengruppe öffnen und in das Feld „Abfrageparameter der Landingpage” das UTM-Muster aus Schritt 1 einfügen.
  2. Im Ads Manager unter Conversions den Einrichtungscode des Pixels kopieren und im Tag Manager als Tag „Benutzerdefiniertes HTML” anlegen, darin debug:true auf false ändern.
  3. Im Tag unter Zustimmungseinstellungen „Zusätzliche Einwilligung erforderlich” mit ad_storage und ad_user_data setzen.
  4. Als einzigen Trigger das Einwilligungs-Ereignis deines Cookie-Banners wählen, nicht „Alle Seiten”. Im Vorschaumodus prüfen, veröffentlichen.
  5. Für die Anfrage einen zweiten Tag anlegen, der beim erfolgreichen Absenden des Formulars lead_created an das Pixel meldet. Datenschutzerklärung und Cookie-Erklärung ergänzen.

Wer es genauer wissen will oder an einem der fünf Punkte hängen bleibt, liest ab hier weiter. Die Technik hinter der Conversions API und den Server-Containern steht gesammelt am Ende, du brauchst sie für den Start nicht.

Schritt 1: UTM-Parameter, weil OpenAI keine setzt

Mein erster Klick-Schwung kam am 1. September 2026, und ich habe ihn in meiner Statistik nicht gefunden. OpenAI hängt von sich aus keine Kennzeichnung an die Ziel-URL. Die Besucher kommen an wie jemand, der die Adresse selbst eingetippt hat, und in Google Analytics landen sie unter „Direct” in der normalen Startseiten-Zeile.

Die Lösung ist eine Zeile im Ads Manager. In der Anzeigengruppe gibt es das Feld „Abfrageparameter der Landingpage”. Es ist als optional markiert und schlägt campaign_id={campaign_id}&ad_id={ad_id} vor. Diese Werte misst OpenAI nur für sich selbst. Für deine Statistik ergänzt du dort die klassischen UTM-Parameter, so wie du sie von Google Ads oder einem Newsletter-Link kennst.

Abfrageparameter zum Kopieren

utm_source=chatgpt&utm_medium=cpc&utm_campaign=KAMPAGNENNAME&utm_content={ad_id}&cid={campaign_id}&agid={ad_group_id}&oppref={oppref}

Danach erscheint der Kanal in Google Analytics als Quelle chatgpt mit Medium cpc, und über utm_content erkennst du, welche Anzeige den Klick gebracht hat. Die geschweiften Klammern füllt OpenAI beim Klick automatisch aus. KAMPAGNENNAME ersetzt du durch einen kurzen Namen je Kampagne, sonst laufen zwei Tests in eine Zeile.

OpenAI Ads Manager, Dialog Anzeigengruppe bearbeiten mit dem Feld Abfrageparameter der Landingpage, in dem utm_source=chatgpt und utm_medium=cpc eingetragen sind
Ads Manager, Anzeigengruppe bearbeiten: das Feld für die Abfrageparameter mit den unterstützten Platzhaltern, Stand 8. September 2026
Eine Stelle reicht

Das Feld gibt es in der Anzeigengruppe und noch einmal in jeder Anzeige. Eintragen musst du es nur in der Anzeigengruppe, die Anzeigen erben es. Nur wenn eine Anzeige eine eigene Ziel-URL bekommt, überschreibt sie damit die Gruppe, dann gehören die Parameter dort auch hin. Die Kennzeichnung wirkt erst ab dem Moment des Eintragens, meine ersten 29 Klicks bleiben für immer unmarkiert.

Google Analytics zeigt die Klicks danach unter Akquisition nach Quelle und Medium, allerdings nur von Besuchern, die dem Cookie-Banner zugestimmt haben. Wer jeden Klick zählen will, nimmt ein cookieloses Statistik-Tool dazu. Für einen ersten Kanaltest ist diese Vollzählung wertvoller als jede Verfeinerung.

Im Ads Manager bekommst du unter Conversions einen Einrichtungscode, einen kleinen Script-Block mit deiner Pixel-ID. OpenAI schlägt vor, ihn direkt in deine Website zu setzen. Genau das solltest du nicht tun, aus zwei Gründen.

Der erste steht in der Entwicklerdokumentation zum Pixel: das Pixel geht standardmäßig davon aus, dass eine Einwilligung vorliegt. Direkt eingebaut misst es also jeden Besucher, auch den, der das Banner ablehnt. Der zweite Grund ist praktischer. Im Tag Manager kannst du das Pixel an dein Cookie-Banner koppeln, ohne dass ein Entwickler die Website anfassen muss, und spätere Änderungen gehen ohne neuen Website-Build.

Ausschnitt aus der OpenAI-Entwicklerdokumentation zum Measurement Pixel: der Abschnitt Control measurement consent mit dem Hinweis, dass das Pixel consent standardmäßig auf true setzt und blockierte Ereignisse nicht nachgeholt werden
Quelle: developers.openai.com, Measurement Pixel, Abschnitt Control measurement consent, Stand 8. September 2026
1
Tag anlegen

Lege im Tag Manager einen neuen Tag vom Typ „Benutzerdefiniertes HTML” an und füge den Einrichtungscode ein. Ändere darin debug:true auf false, sonst schreibt das Pixel dauerhaft Meldungen in die Browser-Konsole deiner Live-Seite. Prüfe vorher, ob der Tag Manager auf deiner Seite überhaupt läuft, bei mir lag der Container seit dem letzten Website-Umbau brach, ohne dass es jemand gemerkt hatte.

Google Tag Manager
2
An die Einwilligung koppeln

In den erweiterten Einstellungen des Tags gibt es „Zustimmungseinstellungen”. Dort „Zusätzliche Einwilligung erforderlich” wählen und ad_storage sowie ad_user_data eintragen. Das sind die beiden Kategorien, die dein Cookie-Banner beim Klick auf Akzeptieren freigibt. Der Tag Manager blockiert den Tag dann so lange, bis diese Freigabe da ist. Voraussetzung ist, dass dein Banner den Consent Mode v2 unterstützt, bei den gängigen Anbietern ist das seit 2024 der Fall.

Zustimmungseinstellungen
3
Den richtigen Auslöser wählen

Jeder Tag braucht einen Auslöser, im Tag Manager heißt das Trigger. Der naheliegende ist „Alle Seiten”, und genau der funktioniert hier nicht, warum steht gleich. Nimm stattdessen als einzigen Auslöser das Ereignis, das dein Cookie-Banner nach der Zustimmung meldet. Bei Cookie-Script heißt es CookieScriptGoogleConsentUpdated, bei Cookiebot, Usercentrics oder Borlabs heißt es anders, der Name steht in der Dokumentation des jeweiligen Banners. Als Auslöser-Typ „Benutzerdefiniertes Ereignis” wählen und den Namen eintragen.

Trigger
Google Tag Manager, geöffneter Tag OpenAI OAIQ Pixel: Tag-Typ Benutzerdefiniertes HTML mit dem Pixel-Code, darunter die Einstellungen zur Nutzereinwilligung mit ad_storage und ad_user_data, und als einziger Trigger das benutzerdefinierte Ereignis Einwilligung erteilt (Cookie-Script)
So sieht der fertige Tag aus: Pixel-Code ohne debug, Einwilligungsprüfung auf ad_storage und ad_user_data, ein einziger Trigger auf das Einwilligungs-Ereignis des Cookie-Banners
4
Im Vorschaumodus prüfen, dann veröffentlichen

Zwei Fälle testen. Einmal als neuer Besucher im privaten Fenster: Seite laden, zustimmen, und ohne Neuladen prüfen, ob das Pixel lädt. Einmal als Wiederkehrer, der schon zugestimmt hat. Wie du das ohne Entwicklerkenntnisse prüfst, steht im Abschnitt „Prüfen, ob wirklich etwas ankommt”. Erst wenn beide Fälle laufen, den Container veröffentlichen.

ErstbesucherWiederkehrer
Der Fehler, der mich eine Stunde gekostet hat

Meine erste Fassung hing am Auslöser „Alle Seiten” mit der Einstellung „einmal pro Seite”. Gemessen am 1. September 2026: das Pixel lud erst beim zweiten Seitenaufruf. Beim ersten Laden fehlte die Zustimmung noch, der Tag wurde blockiert und galt danach für diese Seite als erledigt. Als der Besucher dann auf Akzeptieren klickte, feuerte nichts nach. Für ein Werbepixel ist das der schlimmste Fall, denn genau der erste Aufruf kommt aus der Anzeige. Der Auslöser auf das Einwilligungs-Ereignis löst das für beide Fälle: beim Erstbesucher kommt es nach dem Klick, beim Wiederkehrer liegt es schon vor, bevor der Tag Manager startet.

Wenn du den Tag Manager nicht selbst anfassen willst, kannst du dir die vier Schritte von einer KI vorbereiten lassen. Der Prompt braucht nur deinen Einrichtungscode und den Namen deines Cookie-Banners.

Prompt für den Tag Manager

Ich will das ChatGPT-Ads-Pixel über den Google Tag Manager einbauen. Hier ist mein Einrichtungscode aus dem Ads Manager: [EINRICHTUNGSCODE EINFÜGEN]. Mein Cookie-Banner ist [Cookie-Script / Cookiebot / Usercentrics / Borlabs]. Führe mich Schritt für Schritt durch: erstens einen Tag vom Typ Benutzerdefiniertes HTML mit diesem Code, in dem debug auf false steht. Zweitens die Zustimmungseinstellungen des Tags mit „Zusätzliche Einwilligung erforderlich” für ad_storage und ad_user_data. Drittens genau einen Trigger vom Typ Benutzerdefiniertes Ereignis auf das Ereignis, das mein Cookie-Banner nach der Zustimmung in den dataLayer schreibt, und nenn mir den exakten Ereignisnamen für mein Banner. Keinen Trigger „Alle Seiten”. Sag mir am Ende, welche zwei Fälle ich im Vorschaumodus prüfen muss, bevor ich den Container veröffentliche.

Schritt 4: Die Anfrage als Conversion melden

Das Pixel allein zählt Seitenaufrufe. Damit die Kampagne weiß, welche Klicks zu Anfragen führen, muss die Anfrage als Ereignis gemeldet werden, bei OpenAI heißt es lead_created. Für die meisten Websites geht das über den Tag Manager, ohne eine Zeile eigenen Code.

Deine Website läuft auf
Dein Weg
WordPress, Jimdo, Wix, Squarespace, Webflow, ein Formular-Plugin
Pixel-Ereignis über den Tag Manager beim erfolgreichen Absenden, siehe direkt unten
Shopify, WooCommerce, Shopware
Pixel-Ereignis auf der Bestellbestätigung, über Tag Manager oder Theme
Eigener Code mit Server-Route, etwa Astro, Next.js, Nuxt oder ein Node-Backend
Zusätzlich die Conversions API aus der Route, die das Formular verarbeitet, siehe Technik-Teil
Du trackst schon serverseitig über einen Server-Container bei TAGGRS oder Stape
Fertige Tag-Vorlage für die Conversions API im Server-Container, siehe Technik-Teil

Der Ads Manager zeigt dir für die Danke-Seite diesen Aufruf:

oaiq("measure", "lead_created", { type: "customer_action" });

Hat deine Website eine Danke-Seite, auf die das Formular nach dem Absenden weiterleitet, legst du im Tag Manager einen zweiten Tag mit diesem Aufruf an, ausgelöst durch einen Seitenaufruf-Trigger auf genau diese Seite. Das ist der einfachste Fall und bei WordPress-Formularen wie Contact Form 7, WPForms oder Gravity Forms in den Einstellungen des Formulars einstellbar.

Bleibt dein Formular nach dem Absenden auf der Seite und zeigt nur eine Erfolgsmeldung, braucht der Tag ein anderes Signal. Die meisten Formular-Plugins schreiben beim erfolgreichen Absenden ein Ereignis in den Tag Manager, oft heißt es so ähnlich wie form_submit oder trägt den Namen des Plugins. Dieses Ereignis ist der Auslöser für den Conversion-Tag.

Eine Sache muss dabei stimmen. Der Aufruf gehört an den bestätigten Erfolg, also an den Moment, in dem der Server die Anfrage wirklich angenommen hat. Viele Formulare haben einen Spam-Schutz, der Bots eine Erfolgsmeldung zeigt, ohne etwas zu versenden. Wer das Ereignis an diese sichtbare Meldung hängt, zählt Bots als Anfragen. Genau diese Frage beantwortet dir eine KI schneller als jede Plugin-Dokumentation.

Prompt für das Formular

Meine Website läuft auf [WordPress mit Contact Form 7 / Webflow / Jimdo / …]. Nach dem erfolgreichen Absenden meines Kontaktformulars soll das Ereignis lead_created an das ChatGPT-Ads-Pixel gehen, der Aufruf lautet oaiq(“measure”, “lead_created”, { type: “customer_action” }). Finde heraus, wo mein Formular den bestätigten Erfolg meldet, also die Antwort des Servers, und nicht die sichtbare Erfolgsmeldung, die auch bei Spam-Schutz erscheinen kann. Sag mir, ob das Formular dabei ein Ereignis in den Tag Manager schreibt oder auf eine Danke-Seite weiterleitet, und schlage mir den passenden Tag und Trigger im Tag Manager vor. Der Aufruf darf nur laufen, wenn window.oaiq existiert, also wenn der Besucher dem Cookie-Banner zugestimmt hat. Ändere nichts, bevor ich es freigebe.

Ein Satz noch zu Websites mit eigenem Server-Code: dort kann der Server die Anfrage zusätzlich direkt an OpenAI melden, robuster gegen Adblocker. Beides zusammen geht, wenn beide Meldungen dieselbe Ereignis-Kennung tragen, sonst zählt jede Anfrage doppelt. Wie das funktioniert, steht im Technik-Teil am Ende.

OpenAIs Ad Tools DPA, wirksam seit dem 19. August 2026, macht dich und OpenAI beim Pixel und bei der Conversions API zu unabhängigen Verantwortlichen. Datenschutzhinweise, Rechtsgrundlage und Einwilligung schuldest du selbst. Für EWR-Daten ist OpenAI Ireland Limited zuständig.

Praktisch heißt das drei Dinge. Ein Absatz in der Datenschutzerklärung zu ChatGPT Ads. Das Cookie __obref in der Cookie-Erklärung deines Banners, in der Marketing-Kategorie, sonst zeigt der Banner eine leere Kategorie „Unklassifiziert”. Und eine bewusste Entscheidung zu Automatic Advanced Matching, das seit dem 17. August 2026 auch für bestehende Pixel aktiv ist und Formulareingaben gehasht mitsendet; bei Praxen, Therapeuten und beratungsintensiven Branchen wie Kanzleien oder Steuerberatungen gehört es aus. Warum das trotz Hashing eine Einwilligungsfrage bleibt, steht im Beitrag zum ChatGPT Ads Pixel und Advanced Matching.

Prompt für die Datenschutzerklärung

Hier ist meine bestehende Datenschutzerklärung: [TEXT EINFÜGEN ODER URL]. Ergänze im Abschnitt zu Analyse-Tools und Werbung einen Absatz zu ChatGPT Ads von OpenAI, im selben Stil und Aufbau wie meine vorhandenen Absätze zu Google Ads. Er soll enthalten: den Anbieter OpenAI Ireland Limited, das Pixel und was es misst, das Cookie __obref und seinen Zweck, [falls zutreffend: die serverseitige Meldung von Anfragen an OpenAI], die Einwilligung nach Art. 6 Abs. 1 lit. a DSGVO als Rechtsgrundlage, den Widerruf über das Cookie-Banner, die Übermittlung in die USA mit den bei OpenAI vorhandenen Garantien und den Link zur Datenschutzerklärung von OpenAI. Sag mir zusätzlich, wie ich das Cookie __obref in der Cookie-Erklärung meines Banners eintrage, mit Kategorie und einer kurzen Beschreibung. Kennzeichne, was ich vor der Veröffentlichung noch prüfen lassen sollte.

Prüfen, ob wirklich etwas ankommt

Der Teil, der beim Tracking am meisten Zeit frisst, ist nicht das Einrichten. Es ist das Prüfen, ob es wirklich läuft. Vier Prüfpunkte, in dieser Reihenfolge, sie decken die Fehler ab, die ich selbst gemacht habe.

Erstens ohne Einwilligung. Seite im privaten Fenster laden, Banner nicht bestätigen, in den Entwicklertools des Browsers den Reiter „Netzwerk” öffnen und nach openai filtern. Es darf nichts erscheinen.

Zweitens mit Einwilligung als Erstbesucher. Zustimmen, und ohne Neuladen prüfen, ob oaiq.min.js in der Netzwerkliste auftaucht und im Reiter „Anwendung” unter Cookies ein __obref steht. Wenn das erst nach einem Neuladen passiert, hängt dein Tag am falschen Auslöser.

Drittens die Conversion. Testanfrage absenden, dann im Ads Manager unter Conversions den Ereignis-Stream öffnen. Der Eintrag erscheint nach rund einer Minute mit dem Typ, den du gesendet hast. Erst dieser Eintrag ist der Beweis. Und lies das Warnungen-Panel oben rechts im Ads Manager. Bei mir stand dort eine Woche lang „Keine aktuellen Server-zu-Server-Ereignisse in den letzten 24 Stunden”, und das war exakt die Diagnose, ich hatte nur nicht hingesehen.

OpenAI Ads Manager, Reiter Ereignisstream unter Conversions mit zwei Einträgen: contents_viewed und lead_created, beide über den API-Kanal server_to_server empfangen
Ads Manager, Conversions, Ereignisstream: zwei Testereignisse, rund eine Minute nach dem Senden sichtbar, Stand 8. September 2026

Viertens die Quelle in deiner Statistik. Der Testklick aus der Anzeige sollte als chatgpt / cpc auftauchen. Tut er das nicht, fehlen die UTM-Parameter in der Anzeigengruppe oder eine Anzeige überschreibt sie mit einer eigenen URL. Wie du generell erkennst, ob dein Conversion-Tracking sauber läuft, habe ich in der Anleitung zur Consent-Mode-Diagnose beschrieben.

Genau diese vier Punkte kann eine KI für dich abarbeiten, wenn sie einen Browser steuern darf, etwa Claude Code, Cursor oder ChatGPT in der Desktop-App. Sie ruft die Seite auf, klickt sich durch das Banner, liest Netzwerk-Requests und Cookies aus und sagt dir, was fehlt. Ich habe meinen eigenen Aufbau genau so getestet, und den Trigger-Fehler von oben hat die KI gefunden, nicht ich.

Prompt für die Prüfung

Prüfe das ChatGPT-Ads-Tracking auf https://www.deine-seite.de. Öffne die Seite in einem frischen Browser ohne Cookies. Erstens: Bestätige das Cookie-Banner nicht und liste alle Netzwerk-Requests an Domains von openai.com auf. Es darf keinen geben. Zweitens: Klicke im Banner auf Akzeptieren und prüfe ohne Neuladen, ob jetzt das Script oaiq.min.js von bzrcdn.openai.com lädt und ob ein Cookie namens __obref gesetzt wurde. Wenn das erst nach einem Neuladen passiert, sag mir das ausdrücklich, dann hängt der Tag am falschen Trigger. Drittens: Prüfe, ob die Ziel-URL aus meiner Anzeige die Parameter utm_source=chatgpt und utm_medium=cpc trägt. Viertens: Sag mir, an welcher Stelle mein Kontaktformular den Erfolg meldet, und ob dort ein Aufruf von oaiq measure lead_created steht oder ein Ereignis in den Tag Manager geht. Fülle das Formular aus, aber sende es nicht ab, bevor ich es freigebe. Fünftens: Wenn die Conversion über eine eigene Server-Route gemeldet wird, rufe diese Route dreimal hintereinander auf und prüfe an den Antwort-Headern, ob jeder Aufruf die Funktion wirklich ausführt und keiner aus einem Cache kommt. Fasse am Ende zusammen, was läuft, was fehlt und was du geändert sehen willst.

Die KI macht Fehler, und sie kann nicht in deinen Ads Manager sehen. Der letzte Beweis bleibt der Ereignis-Stream dort. Und lass sie nichts abschicken, ohne dass du es freigibst, ein abgeschicktes Testformular ist eine Anfrage in deinem Postfach und eine Test-Conversion im Konto.

Experten-Tipp

Ein Pixel hinter dem Cookie-Banner misst systematisch weniger Anfragen, als tatsächlich eintreffen. Der CPA im Ads Manager fällt damit zu hoch aus, und eine Gebotsautomatik, die darauf optimiert, optimiert auf eine unvollständige Zahl. Richte das Höchstgebot am eigenen Ziel-CPA aus und vergleiche die gemessenen Anfragen regelmäßig mit dem, was in deinem Postfach ankommt. Bei kleinen Konten mit wenigen Anfragen im Monat ist diese Lücke größer als jeder Optimierungseffekt der Plattform.

Passend dazu

Du willst wissen, wann sich der Einstieg für dich lohnt?

Zum Überblick ChatGPT Ads

Wenn nichts ankommt: die häufigsten Fehler

Sechs Bilder, die mir selbst oder Kunden begegnet sind, mit dem Handgriff, der sie löst.

Die Klicks stehen in der Statistik unter Direct häufig

OpenAI hängt keine Parameter an die Ziel-URL. Ohne eigene UTM-Kennzeichnung sehen die Besucher aus wie Direkteingaben.

Lösung: UTM-Muster aus Schritt 1 in die Abfrageparameter der Anzeigengruppe eintragen. Wirkt erst ab dem Eintragen, alte Klicks bleiben unmarkiert.
Das Pixel lädt erst beim zweiten Seitenaufruf häufig

Mit „einmal pro Seite” gilt der Tag nach dem ersten blockierten Versuch als erledigt und feuert beim Klick auf Akzeptieren nicht nach. Der Erstbesucher aus der Anzeige wird nicht gemessen.

Lösung: Den Trigger Alle Seiten entfernen und den Tag nur an das Einwilligungs-Ereignis des Cookie-Banners hängen, Feuerung bei jedem Ereignis.
Der Ereignis-Stream bleibt leer, obwohl alles grün aussieht mittel

Eine Antwort aus dem Cache sieht aus wie Erfolg. Bei mir kam eine Woche lang nichts an, obwohl die Route brav einen Erfolgscode zurückgab.

Lösung: Warnungen-Panel im Ads Manager lesen. Bei einer eigenen Server-Route dreimal hintereinander auslösen und prüfen, ob jeder Aufruf die Funktion ausführt, nicht nur der erste.
Für eine Anfrage stehen zwei Zeilen im Stream mittel

Der Stream ist ein Eingangsprotokoll und zeigt beide Wege getrennt, einmal pixel_sdk, einmal server_to_server. Zusammengeführt wird beim Zählen, aber nur mit gemeinsamer Kennung.

Lösung: Prüfen, ob Pixel und Server dieselbe Ereignis-Kennung senden. Wenn ja, sind zwei Zeilen normal, gezählt wird eine. Wenn nein, einen der beiden Wege abschalten oder die Kennung nachrüsten.
Es kommen mehr Conversions an als echte Anfragen selten

Formulare mit Spam-Schutz zeigen Bots eine Erfolgsmeldung, ohne etwas zu versenden. Wer dort misst, zählt die Bots mit.

Lösung: Das Ereignis an den bestätigten Erfolg des Servers hängen, nicht an die sichtbare Erfolgsmeldung des Formulars.
Das Cookie-Banner zeigt eine leere Kategorie Unklassifiziert selten

Der automatische Scan des Banners kennt das neue Pixel-Cookie noch nicht und legt es unsortiert ab.

Lösung: Das Cookie __obref im Banner-Tool als Marketing- oder Targeting-Cookie klassifizieren, mit einer kurzen Beschreibung.

Der Aufwand für das Ganze liegt bei einem Tag Manager, zwei Tags, einem Auslöser und zwei Absätzen im Datenschutz. Das ist weniger als bei Google Ads mit Consent Mode, Enhanced Conversions und Conversion-Verknüpfung. Wer das dort schon sauber aufgesetzt hat, nutzt es hier mit. Wer es dort noch nicht hat, fängt besser dort an, denn Google bringt in Deutschland heute noch das Volumen, an dem sich ein ChatGPT-Test überhaupt messen lässt. Den aktuellen Stand der Plattform findest du im Überblick zu ChatGPT Ads, die Bedienung des Kontos im Beitrag zum OpenAI Ads Manager.

Für Technikinteressierte: Conversions API, Deduplizierung und Server-Container

Alles ab hier brauchst du nur, wenn deine Website eigenen Server-Code hat oder du bereits serverseitig trackst. Für den Start mit Tag Manager und Pixel-Ereignis ist der Guide oben vollständig.

Der Server-Weg: die Conversions API

Dein Server meldet die Anfrage direkt an OpenAI, in dem Moment, in dem er die Mail an dich verschickt hat. Adblocker und ein nicht geladenes Pixel spielen dann keine Rolle mehr. Auf meiner Seite läuft seit dem 1. September 2026 dieser Weg, weil alle vier Kontaktformulare über eine einzige Server-Route gehen und ein Aufruf reicht. Seit dem 8. September 2026 meldet zusätzlich das Pixel im Browser dasselbe Ereignis, dazu gleich mehr.

Die Zuordnung läuft über ein Cookie

Das Pixel legt im Browser das Cookie __obref an, eine Referenz auf Besucher und Sitzung. Ein Cookie geht bei jedem Aufruf an deinen eigenen Server mit. Der liest den Wert und schickt ihn unter user.obref an OpenAI. Fehlt das Cookie, lag keine Einwilligung vor, und dann wird nichts gesendet. Der Server-Weg umgeht das Cookie-Banner also nicht, er verlagert nur den Ort der Meldung. Was er gegenüber dem Browser einbüßt, ist das automatische Mitsenden gehashter Formulardaten, das macht nur das Pixel selbst.

Die Fakten aus meiner Messung vom 1. und 2. September 2026. Endpunkt ist POST https://bzr.openai.com/v1/events?pid=<PIXEL-ID> mit einem API-Schlüssel aus dem Ads Manager. Mit validate_only: true prüft die Schnittstelle die Struktur, ohne zu zählen, damit lässt sich gefahrlos testen.

{
  "validate_only": false,
  "events": [{
    "id": "<eindeutige-ereignis-id>",
    "type": "lead_created",
    "timestamp_ms": 1756729200000,
    "source_url": "https://www.deine-seite.de/kontakt/",
    "action_source": "web",
    "user": { "obref": "<wert-aus-cookie-__obref>" },
    "data": { "type": "customer_action" }
  }]
}

Die Schnittstelle validiert streng. action_source nimmt nur web an, server und app lehnt sie ab. data.type ist eine feste Liste, customer_action geht, purchase nicht. Felder wie value, currency oder click_id auf Ereignisebene kennt sie nicht. Eigene Ereignisnamen gehören nicht in type, dort steht custom, der Name kommt in ein Feld custom_event_name; ein eigenes Ereignis steht dann aber in der Zielauswahl einer Conversion-Kampagne nicht zur Verfügung, optimieren geht nur auf die Standard-Ziele. Der Schlüssel gehört als Umgebungsvariable auf den Server und darf nie im Browser-Code auftauchen.

Eine Antwort aus dem Cache sieht aus wie Erfolg

Beim Schreiben dieses Guides habe ich am 8. September 2026 gemerkt, dass meine zweite Server-Route seit einer Woche nichts meldete. Die Route antwortete brav, aber Vercel lieferte die Antwort aus dem Seiten-Cache, die Funktion lief gar nicht, und im Log stand nur die Anfrage ohne eine Zeile aus dem Code. Wer eine Server-Route für Conversions baut, prüft nach dem ersten Deployment, ob auch der zweite und dritte Aufruf die Funktion wirklich ausführen, nicht nur der erste. Bei mir half weder ein Eintrag in der Cache-Ausschlussliste noch ein no-store-Header, erst eine Route mit Dateiendung (/api/oaiq-event.json statt /api/oaiq-event/) lief bei Astro auf Vercel dauerhaft an der Seiten-Cache-Logik vorbei.

Pixel und Server parallel: die gemeinsame Ereignis-Kennung

Bei Meta oder bei Enhanced Conversions von Google kann man Browser und Server parallel melden lassen, weil beide dieselbe Kennung tragen und der Anbieter Doppelte zusammenführt. Bei OpenAI geht das genauso, aber nur, wenn du die Kennung selbst erzeugst und beiden mitgibst. Das Pixel nimmt sie als viertes Argument des measure-Aufrufs entgegen, der Server schickt sie im Feld id. Ohne gemeinsame Kennung zählt jede Anfrage doppelt, und die Schnittstelle sagt es dir nicht, sie meldet auch das Duplikat als angenommen.

Ausschnitt aus der OpenAI-Entwicklerdokumentation: Abschnitt Deduplicate browser and server events mit einem measure-Aufruf, bei dem event_id als viertes Argument übergeben wird
Quelle: developers.openai.com, Measurement Pixel, Abschnitt Deduplicate browser and server events, Stand 8. September 2026

Dazu ein Fehler von mir, damit du ihn nicht wiederholst. Am 1. September 2026 hatte ich die Kennung in das Datenobjekt geschrieben, also in das dritte Argument. Das Pixel schluckt das stillschweigend und sendet nichts, und ich hielt Deduplizierung eine Woche lang für unmöglich. Erst mit der Dokumentation daneben und einem Test am 8. September 2026 war klar: im vierten Argument kommt die Kennung an. So läuft es seitdem auf meiner Seite: das Formular erzeugt die Kennung, gibt sie dem Pixel als event_id mit und schickt sie mit der Anfrage an den Server, der sie im Feld id verwendet. Das Pixel fängt die Fälle ab, in denen der Server schweigt, der Server die Fälle, in denen ein Adblocker das Pixel blockiert.

OpenAI Ads Manager, Ereignisstream: zwei Zeilen contents_viewed in derselben Sekunde, einmal über den API-Kanal pixel_sdk und einmal über server_to_server, darunter weitere Testereignisse
Dasselbe Ereignis mit derselben Kennung aus Pixel und Server, im Stream als zwei Eingänge in derselben Sekunde sichtbar

Erschrick nicht, wenn im Ereignis-Stream trotzdem zwei Zeilen stehen, eine mit pixel_sdk und eine mit server_to_server in derselben Sekunde: der Stream ist ein Eingangsprotokoll, zusammengeführt wird laut Dokumentation erst beim Zählen, das zuerst eingetroffene Ereignis gewinnt. Ob die Conversion-Zahl im Bericht dann wirklich bei eins bleibt, prüfst du mit etwas Abstand im Reiter Conversion-Ereignisse.

Wenn du schon serverseitig trackst: TAGGRS und Stape

Wer für Google Ads oder Meta bereits einen Server-Container betreibt, hat den Server-Weg fast fertig. Beide großen Anbieter für serverseitiges Tag-Management haben Vorlagen für die OpenAI Conversions API veröffentlicht, TAGGRS als offenen Tag auf GitHub, Stape in der Vorlagen-Galerie des Tag Managers, dort zusammen mit einem passenden Pixel-Tag für den Web-Container. Beide Vorlagen stammen aus dem Frühjahr 2026 und nehmen dir genau die Punkte ab, die im Abschnitt davor Handarbeit waren.

Was du sonst selbst baust
Was die Vorlage übernimmt
Aufruf an bzr.openai.com mit Pflichtfeldern
Ein Tag im Server-Container mit Pixel-ID, API-Schlüssel und Ereignisname
Zuordnung zum Klick
Liest die Klick-Kennung oppref aus der URL und legt sie als Cookie __oppref ab
Deduplizierung gegen das Pixel
Eine Ereignis-Kennung, die Web-Tag und Server-Tag gemeinsam nutzen
Gehashte E-Mail oder Telefonnummer zur Zuordnung
Hasht die Felder serverseitig, das Pixel muss dafür nichts mitlesen
Testen, ohne zu zählen
Debug-Modus, der gegen die Schnittstelle prüft, ohne Conversions zu melden

Der Ablauf ist bei beiden gleich. Im Web-Container liegt der Pixel-Tag, wie in Schritt 2 beschrieben, und schickt das Ereignis zusätzlich an deinen Server-Container. Dort hängt der Conversions-API-Tag am Ereignis, bekommt Pixel-ID und API-Schlüssel aus dem Ads Manager und meldet an OpenAI. Die Ereignis-Kennung erzeugt eine Variable im Web-Container, sie wandert mit dem Ereignis zum Server und steht in beiden Meldungen. Das UTM-Muster aus Schritt 1 enthält oppref={oppref} schon, damit die Klick-Kennung sicher in der URL steht, aus der die Vorlage sie liest. Und das gehashte Mitsenden von E-Mail oder Telefon ist derselbe Fall wie Advanced Matching, es braucht dieselbe Einwilligung und denselben Absatz in der Datenschutzerklärung.

Lohnt sich ein Server-Container nur für ChatGPT Ads? Nein. Für einen ersten Test mit kleinem Budget ist das Pixel-Ereignis über den Tag Manager ausreichend. Der Server-Container lohnt sich, wenn du ihn ohnehin für Google Ads und Meta betreibst oder einführen willst, dann ist ChatGPT Ads ein Tag mehr im selben System, und die Consent-Logik, die du dort schon hast, gilt mit.

Häufige Fragen

Setzt ChatGPT Ads automatisch UTM-Parameter?

Nein. OpenAI hängt von sich aus keine Kennzeichnung an die Ziel-URL. Im Feld „Abfrageparameter der Landingpage” der Anzeigengruppe trägst du die UTM-Parameter selbst ein, mit utm_source=chatgpt und utm_medium=cpc. Die Anzeigen erben das Feld, nur eine Anzeige mit eigener Ziel-URL braucht es zusätzlich. Ohne diese Parameter erscheinen die Klicks in Google Analytics als Direct oder Referral.

Braucht das ChatGPT-Ads-Pixel eine Einwilligung?

Ja. Das Pixel setzt das Cookie __obref und überträgt Daten an OpenAI, es ist in Deutschland einwilligungspflichtig und gehört hinter das Cookie-Banner in die Marketing-Kategorie. Das Pixel geht standardmäßig von einer Einwilligung aus, ein direkter Einbau in die Website misst also ohne Zustimmung. Im Tag Manager mit Zustimmungseinstellung auf ad_storage und ad_user_data lädt es erst nach dem Klick auf Akzeptieren.

Brauche ich für ChatGPT Ads einen Entwickler?

Für den Standardweg nicht. Pixel und Conversion-Ereignis laufen über den Google Tag Manager, den du selbst oder mit einem der Prompts aus diesem Guide einrichtest. Einen Entwickler brauchst du erst für die Conversions API, also wenn dein Server die Anfrage direkt an OpenAI melden soll, oder wenn deine Website ohne Tag Manager gebaut ist.

Kann ich Pixel und Conversions API gleichzeitig nutzen?

Ja, aber nur mit derselben Ereignis-Kennung an beiden Stellen. Du erzeugst sie selbst, gibst sie dem Pixel als event_id im vierten Argument des measure-Aufrufs mit und schickst sie vom Server im Feld id. OpenAI führt beide Meldungen dann über Pixel-ID, Ereignisname und Kennung zusammen und zählt die erste. Ohne gemeinsame Kennung zählt jede Anfrage doppelt. Für die meisten kleinen Websites ist ein Weg die einfachere Wahl.

Welcher Weg ist für eine WordPress-Website der richtige?

Das Pixel-Ereignis über den Tag Manager. Bei einer Danke-Seite reicht ein Seitenaufruf-Trigger auf diese Seite, bei Formularen ohne Weiterleitung das Erfolgs-Ereignis des Formular-Plugins. Die Conversions API lohnt sich erst, wenn deine Website eine eigene Server-Route hat, über die alle Formulare laufen, etwa bei Astro, Next.js oder einem eigenen Backend auf Vercel.

Warum feuert das Pixel erst beim zweiten Seitenaufruf?

Weil der Tag im Tag Manager am Auslöser „Alle Seiten” mit der Option „einmal pro Seite” hängt. Der Auslöser läuft beim Laden ab, die Zustimmung fehlt noch, der Tag wird blockiert und gilt danach als erledigt. Beim Klick auf Akzeptieren feuert er nicht nach. Die Lösung ist ein einziger Auslöser auf das Einwilligungs-Ereignis deines Cookie-Banners, der deckt Erstbesucher und Wiederkehrer ab.

Geht die Conversions API auch über TAGGRS oder Stape?

Ja. Beide Anbieter haben Vorlagen für den Server-Container veröffentlicht, die den Aufruf an die OpenAI Conversions API übernehmen, die Klick-Kennung oppref aus der URL als Cookie ablegen, E-Mail und Telefonnummer serverseitig hashen und eine gemeinsame Ereignis-Kennung mit dem Pixel-Tag für die Deduplizierung nutzen. Du brauchst dafür Pixel-ID und API-Schlüssel aus dem Ads Manager und einen laufenden Server-Container. Für einen ersten Test ohne bestehendes Server-Tracking ist das Pixel-Ereignis über den Tag Manager der kürzere Weg.

Wie sehe ich, ob eine Conversion bei OpenAI angekommen ist?

Im Ads Manager unter Conversions gibt es einen Ereignis-Stream, der jedes gemeldete Ereignis mit Typ und Zeitpunkt zeigt, in der Regel rund eine Minute nach dem Absenden. Erst dieser Eintrag belegt die Kette vom Formular bis ins Konto. Die Antwort accepted_events: 1 der Conversions API heißt nur, dass die Struktur angenommen wurde, nicht, dass das Ereignis verbucht ist.

Macht ChatGPT-Werbung für dein Geschäft schon Sinn?

Seit 2013 Google Ads für deutsche KMUs
Jährliche Werbebudgets im Millionenbereich verantwortet
5,0 von 5 bei ProvenExpert
Mehr zu ChatGPT Ads →
Benjamin Häntzschel

Benjamin Häntzschel

Google Ads, KI & Conversion-Optimierung

Das könnte dich auch interessieren

ChatGPT Ads Pixel liest seit dem 17. August Formulare mit
10. September 2026 ChatGPT Ads

ChatGPT Ads Pixel liest seit dem 17. August Formulare mit

OpenAI hat Automatic Advanced Matching am 17. August auch für bereits installierte ChatGPT-Ads-Pixel eingeschaltet. Das Pixel liest damit Formulareingaben aus, hasht sie im Browser und schickt sie mit. Warum das trotz Hashing eine Einwilligungsfrage ist und wo du die Einstellung findest.

8 Min. Lesezeit Weiterlesen →