Direct naar de inhoud

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.

De browser van de klant winkelt in de WooCommerce-webshop. In de browser stuurt de Measurement Pixel productweergaven, toevoegingen aan de winkelwagen, het begin van het afrekenen en de aankoop naar OpenAI. Zodra WooCommerce de bestelling als betaald markeert, stuurt de plugin de aankoop vanaf de server naar de OpenAI Conversions API. OpenAI ontdubbelt de twee aankopen op event-ID.

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).

Belangrijkste velden van een aankoop-event in de Conversions API
VeldWat het bevat bij een WooCommerce-aankoop
event_nameorder_created: een afgeronde aankoop
idHet event-ID. Moet overeenkomen met het browser-event voor dezelfde bestelling.
timestamp_msHet moment van de aankoop, in milliseconden.
action_sourceweb 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.
  1. Afrekenen afgerond

    Bestelling aangemaakt in WooCommerce

  2. Betaling bevestigd

    Bestelling krijgt een betaalde status

  3. Aankoop verstuurd

    order_created vanaf je server

  4. 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.

De aankoop uit de browser en de aankoop vanaf de server hebben voor dezelfde bestelling hetzelfde event-ID. OpenAI houdt de eerste die binnenkomt en negeert het duplicaat, dus de bestelling telt als één conversie.

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:

Soorten leverfouten en hoe je ermee omgaat
FoutVoorbeeldAanpak
TijdelijkTime-out, rate limit (429), serverfout (5xx)Automatisch opnieuw proberen met hetzelfde ID
ConfiguratieGeweigerde API-key (401)Instelling corrigeren en opnieuw versturen
NetwerkServer kan de API niet bereikenUitgaande 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.

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:

Afhandeling van de server-side aankoop in Pixel for ChatGPT Ads
OnderdeelGedrag
Server-side verstuurd eventorder_created, en verder niets
StartseinDe bestelling krijgt een betaalde status in WooCommerce
Event-IDAfgeleid van de bestelling; hetzelfde ID als de aankoop in de browser
AankoopmomentHet oorspronkelijke aankoopmoment wordt verstuurd
Tijdelijke foutenAutomatisch opnieuw geprobeerd
ZichtbaarheidLeverstatus, pogingen en HTTP-status per bestelling
Handmatig opnieuw versturenMogelijk voor bestellingen die in aanmerking komen, zodra de oorzaak is opgelost
API-keyOpgeslagen voor server-side gebruik; nooit in de pagina gezet
ToestemmingGebruikt de toestemming die bij de bestelling is vastgelegd (WordPress Consent API)
Opslag van bestellingenHPOS en de oudere opslag worden allebei ondersteund

De server-side route van de aankoop, zoals de plugin die uitvoert.

  1. 1Het vertrekpunt is de betaalde WooCommerce-bestelling, niet de browser van de klant.
  2. 2De aankoop gaat van je webshop naar de OpenAI Conversions API.
  3. 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.