Heb je al een ChatGPT campagne live staan, of sta je op het punt dat te doen? Dan is één ding meteen duidelijk: zonder goede meting vlieg je blind. Dezelfde logica als bij Google Ads geldt hier: zonder meting stuur je op klikken in plaats van op aanvragen. In dit artikel leggen we stap voor stap uit hoe je de ChatGPT-pixel installeert en je conversies correct meet.
ChatGPT Ads-conversiemeting werkt via drie mechanismen: de oaiq JavaScript-pixel, de server-side Conversions API en een no-JavaScript image tag – allemaal rapporterend naar één Pixel ID die je aanmaakt in Ads Manager.
De pixel is vergelijkbaar met hoe je de Meta Pixel of Google-tag kent. Je plaatst de pixel op je eigen website, of stuurt server-side events via de API. Zo koppel je ChatGPT-klikken aan sitebezoek, aanmeldingen en aankopen en kun je eigen conversies inrichten.
Wil je aankopen, formulieren of registraties in Ads Manager meten, dan heb je de OpenAI-pixel, de Conversions API of beide nodig. Conversiemeting is ook nuttig wanneer de campagne nog op klikken is gericht: je ziet dan welke advertenties niet alleen bezoekers opleveren, maar ook resultaat.
Voordat je begint, zorg dat je het volgende hebt klaarstaan:
<head> én direct na <body>)Heb je nog geen GTM op je site? Installeer die eerst, via bijvoorbeeld de GTM4WP-plugin (WordPress), Code Injection (Squarespace) of rechtstreeks in je thema (Shopify).
jouwsite.nl – OpenAI Pixel. Houd het type op Web.Ken je de Meta-pixel? Dit is exact hetzelfde principe: één pixel per website. Bewaar je Pixel ID — die heb je zo nodig in GTM.
![]()
Je hebt twee opties:
• Handmatig: plak de pixel-code direct in de `<head>` van je website.
• Via Google Tag Manager (GTM): gebruik de OpenAI Ads Measurement Pixel voor GTM. Deze tag vereenvoudigt de implementatie van OpenAI’s meetpixel via GTM: in plaats van scripts handmatig toe te voegen, configureer je event-tracking voor ChatGPT-advertenties direct via GTM. Deze vind je onder templates. (Aanbevolen)
![]()
Klik in GTM op Preview en surf in het nieuwe venster naar je eigen website. Open daarna de Tag Assistant-extensie: zie je je GTM-container-ID actief? Dan staat GTM goed.
WordPress-tip: verschijnt GTM niet, leeg dan eerst je cache. Caching-plugins zoals WP Rocket serveren soms een oude versie van je site zónder de nieuwe snippet.
Let op: de OpenAI-pixel moet in de `<head>` tag staan, niet in de `<body>`. Wanneer je de pixel in de body plaatst, initialiseert deze pas nadat de DOM-inhoud laadt. Je mist dan vroege paginaweergave-events en de sessie wordt mogelijk helemaal niet geregistreerd als de gebruiker snel wegklikt. Dit is de meest voorkomende installatiefout en de makkelijkste om te voorkomen.
Elke conversie heeft drie dingen nodig: een event aangemaakt in OpenAI Ads, een trigger in GTM die de actie detecteert en een tag in GTM die het event afvuurt.
Veelgebruikte events zijn onder andere een paginaweergave, een lead (formulierinzending) en een aankoop.
<YOUR-PIXEL-ID> door jouw Pixel ID:<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: "<YOUR-PIXEL-ID>",
});
</script>Pro-tip voor testen: voeg tijdelijk
debug: truetoe aan het init-object (oaiq("init", { pixelId: "...", debug: true })). De SDK logt dan alle activiteit naar je browserconsole. Haal dit weg vóór je live gaat.
Werk je met een EU-publiek, dan is dit geen bijzaak. De pixel kent een ingebouwde consent-functie. Standaard staat consent op true, tenzij je die expliciet op false zet of de pixel een eerder geweigerde toestemming vindt.
Zet consent op false vóór de init, en pas hem aan zodra de bezoeker toestemming geeft:
<script>
oaiq("consent", false);
oaiq("init", {
pixelId: "<YOUR-PIXEL-ID>",
});
// Roep dit aan zodra de gebruiker toestemming geeft:
// oaiq("consent", true);
</script>Bij consent false stuurt de pixel geen measurement-pings. Zet je hem later op true, dan worden toekomstige events wél verstuurd — maar geblokkeerde events worden niet met terugwerkende kracht opnieuw gestuurd. Koppel de oaiq("consent", true)-aanroep dus netjes aan je consent management platform (Cookiebot, CookieYes, Complianz, of GTM Consent Mode).
Events stuur je met oaiq("measure", ...). De opbouw is altijd hetzelfde: command → eventnaam → event-data → (opties). Belangrijk detail: het type-veld in de event-data bepaalt de datavorm.
Maak in OpenAI Ads eventueel een Page View-conversie-event aan, en zet in GTM een tweede Custom HTML-tag neer:
<script>
oaiq("measure", "page_viewed", {
type: "contents",
contents: [
{
name: document.title,
content_type: "page",
},
],
});
</script>Geen aparte trigger nodig. Gebruik in plaats daarvan tag sequencing: open de geavanceerde instellingen van deze tag en laat ‘m vuren ná de basis-pixel-tag. Zo weet je zeker dat oaiq bestaat op het moment dat je dit event stuurt.
Overweging: je hoeft niet elke pageview te tracken. Vaak is het schoner om alleen de pagina’s te meten die er echt toe doen (prijspagina, demo-aanvraag). Die fungeren dan als mid-funnel signaal om later op te optimaliseren.
Vanaf hier hangt het af van wat je wilt meten. Elke conversie bestaat uit drie onderdelen: (1) een event in OpenAI Ads, (2) een trigger in GTM die de actie detecteert, en (3) een tag die het event afvuurt. De pixel kent vaste event-namen met een bijbehorende datavorm:
Datavorm (type) | Events |
|---|---|
contents | page_viewed, contents_viewed, items_added, checkout_started, order_created |
customer_action | lead_created, registration_completed, appointment_scheduled |
plan_enrollment | subscription_created, trial_started |
custom | zelf gedefinieerde events |
Iemand vult je contactformulier in. Dat is een lead.
<script>
oaiq("measure", "lead_created", { type: "customer_action" });
</script>Stuur je bezoekers na inschrijving naar een /bedankt-pagina, dan kun je de conversie op die pagina-load afvuren.
/bedankt.lead_created-code als hierboven.Twee valkuilen bij bedankpagina’s:
localStorage-check:<script>
if (!localStorage.getItem('oai_conversion_sent')) {
oaiq("measure", "lead_created", { type: "customer_action" });
localStorage.setItem('oai_conversion_sent', '1');
}
</script><meta name="robots" content="noindex, nofollow"> op je bedankpagina, zodat die niet in Google verschijnt en je data niet vervuild raakt door direct verkeer.Bij een aankoop wil je de orderwaarde meegeven. Plak je de pixelcode rechtstreeks op je orderbevestiging, dan draait die mogelijk vóórdat GTM (en de pixel) geladen is — en gebeurt er niets. De juiste aanpak is een dataLayer push.
Op je orderbevestigingspagina (vervang de waarden door de dynamische variabelen van je platform):
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: "purchase",
ecommerce: {
transaction_id: "ORD-1234",
value: 129.99,
currency: "EUR"
}
});
</script>purchase.ecommerce.value, één voor ecommerce.currency.purchase-trigger:<script>
oaiq("measure", "order_created", {
type: "contents",
amount: Math.round({{dlv - ecommerce.value}} * 100),
currency: "{{dlv - ecommerce.currency}}",
});
</script>Cruciaal detail:
amountmoet een geheel getal in de kleinste munteenheid zijn — dus centen, geen euro’s. €129,99 wordt12999. Vandaar deMath.round(value * 100). Dit is de fout die stilletjes je hele rapportage scheeftrekt.
Platformnoot: Shopify-checkout blokkeert directe GTM-toegang en vereist een custom pixel; WooCommerce heeft een eigen dataLayer-format. Voor die twee gelden aparte setups.
Ga je later ook server-side meten (via de Conversions API), dan riskeer je dat dezelfde conversie twee keer geteld wordt. De oplossing: geef aan beide kanten hetzelfde event_id mee.
<script>
oaiq(
"measure",
"order_created",
{ type: "contents", amount: 12999, currency: "EUR" },
{ event_id: "order_12345" }
);
</script>OpenAI dedupliceert op basis van je Pixel ID, de eventnaam en event_id. Het eerste binnenkomende event wint; latere duplicaten worden genegeerd. Gebruik je custom events, houd dan óók dezelfde custom_event_name aan beide kanten aan.
Je conversie hoort op drie plekken te verschijnen:
Zie je alle drie? Dan klopt het. Klik in GTM op Submit → Publish.
Zet UTM-parameters achter elke advertentie-URL. Het kost 30 seconden en geeft je in GA4 een baseline, nog voordat je pixeldata rijp is:
https://jouwsite.nl?utm_source=openai-ads&utm_medium=cpc&utm_campaign=campagnenaam&utm_content=ad-naamBelangrijk: GA4 heeft géén verbinding met OpenAI. Ook al toont GA4 50 conversies — het algoritme van OpenAI ziet daar niets van en kan er niet van leren. UTM’s zijn voor jouw overzicht; de pixel is wat je resultaten daadwerkelijk verbetert. Gebruik dus beide.
De pixel werkt goed als startpunt, maar heeft beperkingen. Bij Meta Ads verliest pixel-tracking doorgaans 40 tot 60% van conversies door browserbeperkingen. ChatGPT Ads zijn te nieuw voor harde cijfers, maar dezelfde beperkingen op browserniveau gelden.
De server-side Conversions API stuurt conversie-events direct vanuit een server-side GTM-container naar OpenAI’s Conversions API. Deze aanpak verbetert de nauwkeurigheid van je data omdat tracking minder afhankelijk wordt van browseruitvoering.
De aanbevolen aanpak is een combinatie: pixel voor browserobserveerbare events (paginaweergaven, toevoegen aan winkelwagen, begin van betaalproces) en de Conversions API voor financieel relevante momenten (orders, gekwalificeerde leads, abonnementsstarts).
Belangrijk: als je beide gebruikt, zorg dan voor deduplicatie. Als je zowel de pixel als de CAPI gebruikt zonder gedeelde event-ID’s, worden je conversies dubbel geteld. Je ROAS ziet er dan opgeblazen uit, je cost-per-acquisitie lijkt kunstmatig laag en elke optimalisatiebeslissing op basis van die data is onjuist.
<body> in plaats van de <head> — dan mist hij vroege pageviews. In GTM voorkom je dit met de Initialization – All Pages-trigger.amount in euro’s in plaats van centen — €129,99 hoort 12999 te zijn.event_id — verdubbelt je gerapporteerde conversies.Vanaf 24 augustus 2026 zijn advertenties zichtbaar in ChatGPT in Nederland. OpenAI kondigde op 18 augustus aan dat ChatGPT Ads naar 31 Europese markten komt, met Nederland bij naam genoemd. Eerlijk gezegd kun je nog niet echt zelfstandig adverteren. De aankondiging is groot, maar in de praktijk ligt het genuanceerder: de self-service Ads Manager – de omgeving waarin je zelf campagnes bouwt – is in Europa namelijk nog niet live.
Dat betekent: nu is het moment om je meting voor te bereiden, zodat je direct goed van start gaat zodra self-service ook hier beschikbaar is.
Hoe installeer ik de OpenAI Ads-pixel op mijn website? Plaats de installatie-snippet zo hoog mogelijk in de <head> van elke pagina, geïnitialiseerd met je Pixel ID. Via GTM doe je dit met een Custom HTML-tag op de trigger Initialization – All Pages.
Waar vind ik mijn Pixel ID? In OpenAI Ads Manager onder Tools → Conversions, bij de data source die je hebt aangemaakt.
Moet amount in euro’s of centen? In centen — een geheel getal in de kleinste munteenheid. €25,99 = 2599.
Kan ik pixel én Conversions API tegelijk gebruiken? Ja, dat is zelfs aan te raden. Zorg alleen dat je aan beide kanten hetzelfde event_id (en bij custom events dezelfde custom_event_name) meestuurt, zodat er niet dubbel geteld wordt.
Werkt de pixel met consent management / AVG? Ja. Zet oaiq("consent", false) vóór de init en schakel naar true zodra de bezoeker toestemming geeft. Koppel dit aan je consent management platform.
Waarom zie ik in GA4 meer/andere conversies dan in OpenAI? GA4 en OpenAI meten los van elkaar en OpenAI ziet GA4-data niet. Gebruik GA4 als sanity-check en de pixel voor optimalisatie.
De ChatGPT-pixel installeren lijkt op wat je al kent van Google of Meta, maar vraagt om aandacht voor een paar specifieke details: plaatsing in de `<head>`, correcte event-configuratie en deduplicatie als je ook de Conversions API gebruikt. Zet dit op orde voordat je budget inzet en je data is direct betrouwbaar.
Wil je weten hoe je ChatGPT Ads integreert in een bredere online advertentiestrategie? Lees dan ook onze blog over cross media reach in Google ads of bekijk hoe [Microsoft Ads vs. Google Ads](https://adoptimizr.nl/microsoft-ads-vs-google-ads-wat-is-slimmer/) zich tot elkaar verhouden.
Klaar om jouw advertentiemeting op orde te brengen? Plan een vrijblijvend gesprek met één van onze senior specialisten en ontketenen we samen jouw groeipotentieel!