Gids
OpenAI Conversions API voor WooCommerce
Met de OpenAI Conversions API stuurt een WooCommerce-webshop ChatGPT Ads-conversies vanaf de eigen server in plaats van vanuit de browser van de klant. Voor een webshop is de aankoop de conversie die het meest telt: zodra WooCommerce een bestelling als betaald markeert, bestaat die bestelling, of een browserscript haar nu heeft gemeld of niet. Deze gids legt uit hoe server-side aankopen meten werkt, waar een correcte implementatie rekening mee moet houden en wat het niet kan oplossen.
Bijgewerkt
Op deze pagina
In één alinea: verstuur order_created vanuit WooCommerce zodra de bestelling een betaalde status krijgt, met hetzelfde event-ID dat de pixel in de browser voor die bestelling gebruikte, het oorspronkelijke aankoopmoment en een API-key die op de server blijft. Verstuur bij tijdelijke fouten opnieuw met hetzelfde ID, en leg per bestelling vast wat er is gebeurd.
Architectuur
Server-side aankopen meten in één oogopslag
Er vertrekken twee routes uit de webshop. De browserroute draagt de hele klantreis, de serverroute de betaalde bestelling.
In de browser verstuurt de Measurement Pixel productweergaven, toevoegingen aan de winkelwagen, het begin van het afrekenen en de aankoop. Zodra WooCommerce een betaalde bestelling bevestigt, wordt de aankoop ook vanaf je server verstuurd via de OpenAI Conversions API, met hetzelfde event-ID, zodat OpenAI hem één keer kan tellen.
Browser van de klant
Bekijkt producten, vult de winkelwagen, rekent af
WooCommerce-webshop
Producten, winkelwagen, afrekenen en bestellingen
In de browser
Measurement Pixel
contents_viewed, items_added, checkout_started, order_created
OpenAI
Ontvangt browser-events
Op je server
Bestelling betaald
Statuswijziging in WooCommerce
Plugin verstuurt order_created
Zelfde event-ID · nieuwe pogingen · diagnose
Conversions API
Geauthenticeerd met je API-key
Eén aankoop geteld
OpenAI koppelt Pixel-ID, eventnaam en event-ID en negeert het latere duplicaat.
Wat browsermeting mist
De Measurement Pixel draait in de browser van de klant. Alleen daar zie je productweergaven en wat er in de winkelwagen gebeurt, maar het betekent ook dat een event verloren gaat zodra de pagina of het script niet helemaal wordt uitgevoerd:
- Contentblockers of privacytools houden het pixelscript tegen.
- De klant sluit na het betalen het tabblad, voordat de pagina Bestelling ontvangen laadt.
- Een betaling wordt pas later bevestigd, bijvoorbeeld bij een bankoverschrijving of sommige betaalmethoden met een doorverwijzing, als de klant al van de site weg is.
- Een trage of mislukte paginalading laat het verzoek wegvallen.
In al die gevallen legt WooCommerce de bestelling gewoon vast. Een server-side aankoop-event vertrekt vanuit die bestelling, dus geen van deze situaties houdt het tegen.
Hoe de Conversions API werkt
Je server doet een geauthenticeerd HTTPS-verzoek naar OpenAI met één of meer events. Het verzoek is geadresseerd aan je Pixel-ID en geautoriseerd met een Conversions API-key. Beide maak je aan op het tabblad voor conversies in Ads Manager (documentatie van de OpenAI Conversions API, Engelstalig, net als de andere documentatie van OpenAI waarnaar deze gids linkt).
| Veld | Wat het bevat bij een WooCommerce-aankoop |
|---|---|
event_name | order_created: een afgeronde aankoop |
id | Het event-ID. Moet overeenkomen met het browser-event voor dezelfde bestelling. |
timestamp_ms | Het moment van de aankoop, in milliseconden. |
action_source | web voor een webshop |
Alleen vanaf de server
OpenAI schrijft voor dat je events uitsluitend vanaf je eigen server naar de Conversions API stuurt, en de documentatie van de Pixel voegt eraan toe dat je de server-API niet rechtstreeks vanuit paginacode aanroept. De API-key mag nooit in de browser terechtkomen.
Wanneer je de aankoop verstuurt
Verstuur hem zodra WooCommerce de bestelling op een betaalde status zet, niet wanneer de pagina Bestelling ontvangen wordt getoond. Koppel je het event aan de bestelstatus in plaats van aan een paginaweergave, dan:
- wordt het één keer per bestelling verstuurd, hoe vaak de bedankpagina ook wordt herladen;
- gaat bij betaalmethoden met een latere bevestiging de aankoop pas weg als de betaling echt binnen is;
- worden onbetaalde, mislukte of afgebroken bestellingen niet als aankoop gemeld.
Afrekenen afgerond
Bestelling aangemaakt in WooCommerce
Betaling bevestigd
Bestelling krijgt een betaalde status
Aankoop verstuurd
order_created vanaf je server
Resultaat vastgelegd
Geaccepteerd, opnieuw geprobeerd of mislukt
Event-ID's en deduplicatie
Wordt een aankoop vanuit de browser én vanaf de server verstuurd, dan moet OpenAI kunnen zien dat het om één aankoop gaat. Volgens OpenAI gebeurt de deduplicatie op basis van je Pixel-ID, de event_name en het id: het eerste event dat binnenkomt met een overeenkomende sleutel telt, latere duplicaten worden genegeerd.
Het event-ID moet dus op beide routes identiek zijn. De betrouwbare manier om dat in WooCommerce te regelen, is het ID afleiden van de bestelling, die zowel de pagina Bestelling ontvangen als de server kent. Een willekeurig ID dat in de browser wordt aangemaakt, krijgt de server nooit te zien. De gids Pixel vs Conversions API laat zien hoe de twee routes in elkaar grijpen.
Browser · Pixel
Aankoop
Gedeeld event-ID, afgeleid van de WooCommerce-bestelling
Server · Conversions API
Aankoop
Gedeeld event-ID, afgeleid van de WooCommerce-bestelling
Eén conversie
Zelfde Pixel-ID, eventnaam en ID: OpenAI houdt de eerste en negeert het duplicaat.
De 7-dagenregel
OpenAI weigert events buiten een bepaald tijdvenster: het tijdstempel mag niet ouder zijn dan 7 dagen en niet meer dan 10 minuten in de toekomst liggen. Voor een webshop heeft dat twee gevolgen:
7 dagen
oudste geaccepteerde aankoopmoment
10 minuten
maximaal in de toekomst
- Verstuur het oorspronkelijke aankoopmoment, niet het moment van de poging. Anders beweert een opnieuw verstuurd event dat de aankoop later plaatsvond dan in werkelijkheid.
- Los mislukte leveringen snel op. Een bestelling waarvan het aankoopmoment meer dan 7 dagen oud is, kan niet meer worden verstuurd.
De API accepteert ook batches van maximaal 1.000 events, en volgens OpenAI mislukt de hele batch als één event erin mislukt. Eén foute bestelling kan dus andere tegenhouden als een implementatie slordig batcht.
Nieuwe pogingen en fouten
De documentatie van OpenAI zegt dat je hetzelfde ID hergebruikt wanneer je een conversie opnieuw probeert of dezelfde conversie via een andere koppeling verstuurt. Een schema voor nieuwe pogingen publiceert OpenAI niet; dat beleid bepaalt de implementatie. Een verstandig beleid maakt onderscheid tussen:
| Fout | Voorbeeld | Aanpak |
|---|---|---|
| Tijdelijk | Time-out, rate limit (429), serverfout (5xx) | Automatisch opnieuw proberen met hetzelfde ID |
| Configuratie | Geweigerde API-key (401) | Instelling corrigeren en opnieuw versturen |
| Netwerk | Server kan de API niet bereiken | Uitgaande HTTPS- of firewallregels aanpassen |
Welk beleid je ook kiest, een fout moet ergens zichtbaar zijn. Zonder vastlegging per bestelling ziet een kapotte koppeling er precies zo uit als een rustige verkoopweek.
Toestemming
Server-side versturen is geen manier om toestemming te omzeilen. De Pixel zelf verstuurt geen meetpings als de toestemming op false staat (documentatie van de Measurement Pixel), en een server-side aankoop hoort de toestemming te volgen die voor die bestelling is vastgelegd. In WordPress is de WordPress Consent API de gangbare manier waarop een cookiebanner die status met andere plugins deelt.
Zo doet Pixel for ChatGPT Ads het
Pixel for ChatGPT Ads is een WooCommerce-plugin die alleen de aankoop server-side verstuurt. Dit is wat de plugin doet op elk van de punten hierboven:
| Onderdeel | Gedrag |
|---|---|
| Server-side verstuurd event | order_created, en verder niets |
| Startsein | De bestelling krijgt een betaalde status in WooCommerce |
| Event-ID | Afgeleid van de bestelling; hetzelfde ID als de aankoop in de browser |
| Aankoopmoment | Het oorspronkelijke aankoopmoment wordt verstuurd |
| Tijdelijke fouten | Automatisch opnieuw geprobeerd |
| Zichtbaarheid | Leverstatus, pogingen en HTTP-status per bestelling |
| Handmatig opnieuw versturen | Mogelijk voor bestellingen die in aanmerking komen, zodra de oorzaak is opgelost |
| API-key | Opgeslagen voor server-side gebruik; nooit in de pagina gezet |
| Toestemming | Gebruikt de toestemming die bij de bestelling is vastgelegd (WordPress Consent API) |
| Opslag van bestellingen | HPOS en de oudere opslag worden allebei ondersteund |
De server-side route van de aankoop, zoals de plugin die uitvoert.
- 1Het vertrekpunt is de betaalde WooCommerce-bestelling, niet de browser van de klant.
- 2De aankoop gaat van je webshop naar de OpenAI Conversions API.
- 3Geblokkeerde scripts, gesloten tabbladen en contentblockers houden deze route niet tegen.
Productweergaven, toevoegen aan winkelwagen en het begin van het afrekenen blijven browser-events. Het overzicht van de ChatGPT Pixel voor WooCommerce noemt elk event en van waaruit het wordt verstuurd.
Verwachtingen
Waar server-side meten bij helpt, en wat het niet oplost
Server-side versturen maakt de aankoop betrouwbaarder. Het lost niet alles op.
Waar server-side meten bij helpt
- Aankopen waarvan het browser-event door een contentblocker werd tegengehouden.
- Klanten die na het betalen het tabblad sluiten.
- Betalingen die later worden bevestigd, als de klant de site al heeft verlaten.
- Mislukte leveringen per bestelling zien, opnieuw proberen en opnieuw versturen.
Wat het niet oplost
- Het bepaalt de attributie niet. Of een aankoop aan een advertentie in ChatGPT wordt toegeschreven, bepaalt OpenAI, niet de manier waarop het event is verstuurd.
- Het haalt geen events terug die alleen in de browser bestaan. Voor productweergaven en de winkelwagen blijft de browser nodig.
- Het omzeilt geen toestemming. Bestellingen zonder marketingtoestemming worden niet verstuurd.
- Het lost een tweede, onbeheerde pixel niet op. Dubbele exemplaren zonder gedeelde ID's tellen nog steeds dubbel.
- Het garandeert niet elke conversie. Het zorgt ervoor dat de browser niet langer de enige zwakke schakel is voor de aankoop.
Vragen
Is de Conversions API verplicht voor ChatGPT Ads?
OpenAI ondersteunt conversiemeting met de Pixel, met de Conversions API of met allebei (overzicht van conversiemeting). Voor een webshop geeft het versturen van de aankoop via beide routes, met een gedeeld ID, een route die niet van de browser afhangt.
Kan ik de Conversions API aanroepen met JavaScript op de bedankpagina?
Nee. Dan geef je je API-key prijs en ben je nog steeds afhankelijk van de browser. Volgens OpenAI hoort de Pixel in de browser en de Conversions API op de server.
Heb ik voor server-side meten een server-container in Google Tag Manager nodig?
Nee. WooCommerce draait al op een server; een plugin kan de aankoop rechtstreeks vanuit WordPress versturen.
Verstuurt deze plugin toevoegen aan winkelwagen server-side?
Nee. Alleen de aankoop gaat server-side. De andere drie events zijn browser-events.
Server-side aankopen, zonder de koppeling zelf te bouwen
Pixel for ChatGPT Ads regelt voor WooCommerce het startsein, de event-ID's, nieuwe pogingen en de diagnose per bestelling. Elk pakket heeft dezelfde functies.
Verwante gidsen
- ChatGPT Pixel voor WooCommerceWat de plugin vanuit een WooCommerce-webshop naar ChatGPT Ads stuurt, hoe je hem instelt en wat hij niet doet.
- ChatGPT Pixel of Conversions API? Het verschil uitgelegdBrowser- en servermeting voor ChatGPT Ads naast elkaar, en waarom een webshop ze allebei gebruikt.
- ChatGPT Pixel installeren in WooCommerceWat je nodig hebt, waar Pixel-ID en API-key vandaan komen, het instellen en hoe je de eerste bestelling controleert.