Advertentieplatforms en webshops

Server-side tracking voor WooCommerce: een installatiegids

Stel server-side tracking voor WooCommerce in: verstuur betaalde bestellingen met de ROASaurus-plugin of webhooks naar Meta en TikTok, koppel ze aan advertentieklikken en test.

·Bijgewerkt op ·11 min leestijd·Door het ROASaurus-team

Belangrijkste punten
  • Server-side tracking voor WooCommerce stuurt elke betaalde bestelling vanuit de eigen bestelgegevens van de webshop naar Meta, TikTok en andere advertentieplatforms, zodat een aankoop meetelt ook als de browserpixel nooit afgaat.
  • ROASaurus beschouwt een WooCommerce-bestelling als betaald wanneer de status processing of completed is, wat bestellingen met betaling bij levering en bankoverschrijvingen omvat zodra je ze bevestigt.
  • De ROASaurus-plugin slaat bij de checkout het bezoeker-id en de cookies van de advertentieklik op bij elke bestelling, zodat de bestelling exact aan zijn advertentieklik wordt gekoppeld.
  • Zonder de plugin leveren webhooks nog steeds elke betaalde bestelling af, maar is er geen koppeling via de bedankpagina: bestellingen worden alleen gekoppeld via een e-mailadres dat eerder op de site is opgegeven of via een uniek IP-adres en browser.
  • Op WooCommerce volgt het ROASaurus-script toestemmingsplugins die de WP Consent API gebruiken, zoals Complianz en CookieYes, en de banners van Cookiebot, OneTrust en IAB TCF.

Server-side tracking voor WooCommerce stuurt elke betaalde bestelling vanuit de bestelgegevens van je webshop naar Meta, TikTok en andere advertentieplatforms, in plaats van alleen te vertrouwen op een pixel in de browser van de shopper. De aankoop wordt gerapporteerd ook als een adblocker de pixel tegenhoudt of de shopper de bedankpagina nooit bereikt.

Deze gids behandelt waarom WooCommerce-webshops conversies verliezen, welke bestelgegevens WooCommerce je geeft en de twee manieren om ROASaurus te koppelen: de WordPress-plugin of webhooks. Daarna komen matching, toestemming, instellen en testen aan bod. Voor het algemene idee lees je wat server-side tracking is.

Waarom verliezen WooCommerce-webshops conversies?

Een browserpixel rapporteert een aankoop alleen als het pixelscript laadt, de shopper de bedankpagina bereikt en de browser het event verstuurt. Elke stap kan mislukken. De bestelling zelf staat nog steeds in je database, omdat WooCommerce die op de server opslaat.

Wat er gebeurtBrowserpixelBestelgegevens in WooCommerce
De shopper betaalt via een redirect (bijvoorbeeld PayPal of een bankapp) en sluit het tabbladGeen bedankpagina, geen aankoopeventBetaalde bestelling, status processing
Een adblocker of privacy-instelling blokkeert het pixelscriptGeen aankoopeventBetaalde bestelling
De bezoeker weigert marketingcookiesDe pixel mag niet ladenBetaalde bestelling
Een bankoverschrijving wordt drie dagen later bevestigdOp dat moment is er geen browser openStatus verandert van on hold naar processing
Een cache- of scriptoptimalisatieplugin vertraagt de pixelHet event kan te laat komen of ontbrekenBetaalde bestelling
In elk geval bestaat de betaalde bestelling in WooCommerce. Server-side tracking verstuurt die bestelling, wat er ook in de browser gebeurde.

Ontbrekende aankopen doen op twee manieren schade. Het advertentieplatform optimaliseert op minder conversies, en je rapporten tonen een lager rendement dan je echt haalt. Hier is het tweede effect in cijfers, voor een voorbeeldwebshop met een break-even-ROAS van 2.2:

Voorbeeldwebshop, één maandAlleen pixelElke betaalde bestelling
Advertentiekosten voor Meta$8,000$8,000
Aankopen uit Meta-klikken260320
Omzet bij $60 per bestelling$15,600$19,200
ROAS15,600 ÷ 8,000 = 1.9519,200 ÷ 8,000 = 2.40
Ten opzichte van break-even (2.2)Lijkt een verliesWinstgevend
Illustratieve cijfers. Dezelfde campagne lijkt op pixeldata een verlies en levert op bestelgegevens geld op.

Wat WooCommerce je geeft: bestellingen, webhooks en de REST API

Welke bestelstatussen tellen als betaald?

WooCommerce omschrijft processing als betaling ontvangen, waarbij de bestelling nog moet worden afgehandeld. ROASaurus verstuurt bestellingen met de status processing of completed en slaat bestellingen met pending payment, on hold, failed, cancelled en refunded over. Twee betaalmethoden verdienen aandacht:

  • Betaling bij levering. WooCommerce zet deze bestellingen op processing totdat de betaling is geïnd, dus ROASaurus verstuurt ze zodra ze zijn geplaatst. Bestellingen met een downloadbaar product zijn de uitzondering: die gaan op on hold. Zie bestellingen met betaling bij levering tracken voor wat dat betekent voor retouren en weigeringen.
  • Bankoverschrijving. WooCommerce zet deze bestellingen op on hold terwijl je de betaling controleert. ROASaurus verstuurt ze zodra je ze naar processing verplaatst.

Webhooks

Een webhook is een bericht dat WooCommerce naar een ander systeem stuurt wanneer er iets verandert. Je maakt hem aan onder WooCommerce › Settings › Advanced › Webhooks. Bij een topic voor bestellingen is de payload hetzelfde bestelobject dat de REST API teruggeeft. Elke levering bevat een X-WC-Webhook-Signature-header: een base64 HMAC-SHA256-hash van de payload, gemaakt met de geheime sleutel die je kiest. ROASaurus controleert die handtekening voordat het een bestelling accepteert.

Twee details zijn in de praktijk belangrijk. WooCommerce levert webhooks op de achtergrond af, standaard met WP-Cron, dus een levering kan vertraging oplopen als die wachtrij achterloopt. En WooCommerce schakelt een webhook uit na meer dan vijf mislukte leveringen achter elkaar.

REST API

Met de REST API kan ROASaurus zelf bestellingen opvragen. Met een alleen-lezen API-sleutel vraagt ROASaurus elke 5 minuten de processing- en completed-bestellingen op die sinds de vorige controle zijn gewijzigd, met 30 minuten overlap. Bestellingen die het al heeft, worden genegeerd. Zo wordt elke bestelling opgevangen die een webhook heeft gemist.

BestelveldWat ROASaurus ermee doet
idWordt het event-id order-1042, gedeeld door de server- en browserevents
totalDe aankoopwaarde: het eindtotaal, inclusief btw en verzendkosten
E-mailadres, telefoonnummer, naam, plaats, staat, postcode en land van de factureringGehasht met SHA-256 en verstuurd als klantgegevens
customer_ip_address, customer_user_agentMeegestuurd met het event en gebruikt om de bestelling aan een bezoeker te koppelen
line_itemsProduct-id's (het variatie-id als er een is), aantallen en prijzen
date_paid_gmtDe eventtijd voor bestellingen uit een webhook of de REST API (de aanmaakdatum als er geen betaaldatum is)
meta_dataMet de plugin: het bezoeker-id en de Meta- en TikTok-cookies
Wat ROASaurus uit een WooCommerce-bestelling leest. De webhook en de REST API geven dezelfde velden terug.

Plugin of webhooks: twee manieren om te koppelen

Beide koppelingen sturen elke betaalde bestelling. Ze verschillen in hoe goed elke bestelling wordt gekoppeld aan de advertentieklik die de shopper binnenbracht.

CheckoutDe plugin slaat het bezoeker-id en de klikcookies op bij de bestelling
Bestelling betaaldStatus processing of completed
ROASaurusOntvangt de bestelling van de plugin of een webhook
AdvertentieplatformsMeta, TikTok en anderen krijgen een Purchase met event-id order-1042
Het datapad met de plugin. Zonder de plugin slaat de checkoutstap niets extra's op en komt de bestelling alleen via de webhook binnen.
ROASaurus-pluginAlleen webhooks
Wat je installeertEen WordPress-plugin (PHP 7.4 en WooCommerce 6.0 of nieuwer)Niets: een webhook in de WooCommerce-instellingen
Hoe bestellingen binnenkomenDe plugin stuurt elke betaalde bestelling naar de orders-API van ROASaurusWooCommerce stuurt Order updated; optionele REST API-controle elke 5 minuten
TrackingscriptDoor de plugin op elke pagina geladenJe voegt het zelf toe, bijvoorbeeld met de WPCode-plugin of in je thema
Bezoeker-id en klikcookies op de bestellingJa, opgeslagen bij de checkout (klassieke checkout en block checkout)Nee
Aankoop in de browser op de bedankpaginaJa, met hetzelfde event-id als het servereventNee
Koppeling via de bedankpaginaJaNee
Beide koppelingen sturen elke betaalde bestelling. Alleen de plugin koppelt elke bestelling bij de checkout aan zijn bezoeker.

Je kunt beide tegelijk gebruiken. De plugin slaat het bezoeker-id als meta data op bij de bestelling, en de webhook-payload neemt het mee. ROASaurus slaat elke bestelling één keer op, op basis van het bestel-id van WooCommerce, dus de plugin en de webhook maken nooit twee aankopen aan. De plugin geeft ook aan High-Performance Order Storage van WooCommerce te ondersteunen.

Hoe wordt een WooCommerce-bestelling aan de advertentieklik gekoppeld?

Een advertentieplatform kan een aankoop alleen aan een advertentie toeschrijven als het die twee kan verbinden. ROASaurus doet dit door de bestelling te koppelen aan de bezoeker die op de advertentie klikte, en die bezoeker draagt de click-id's (zoals fbclid en ttclid) en UTM-parameters van de landing met zich mee. Het probeert deze methoden in volgorde en stopt bij de eerste die werkt:

  1. Het bezoeker-id dat bij de bestelling is opgeslagen. Alleen met de plugin. Dit is een exacte koppeling.
  2. De aankoop in de browser op de bedankpagina, die hetzelfde bestel-id heeft. Alleen met de plugin.
  3. Een gehasht e-mailadres dat de bezoeker eerder op je site heeft opgegeven, bijvoorbeeld in een popupformulier van Klaviyo, Attentive of Wisepops, of via een Identify-aanroep.
  4. Hetzelfde IP-adres en dezelfde browser, gezien van 3 uur vóór tot 15 minuten na de bestelling, maar alleen als precies één bezoeker past. Op gedeelde netwerken, zoals kantoren en mobiele providers, delen vaak meerdere bezoekers één IP-adres, en dan gokt ROASaurus niet.

ROASaurus wacht kort voordat het elke aankoop verstuurt, zodat het event van de bedankpagina eerst kan binnenkomen. Is de bestelling dan nog niet gekoppeld, dan probeert het op het moment van verzenden opnieuw. De pagina Orders toont het resultaat per bestelling in de kolom Matched by. Bestellingen die via het bezoeker-id van de plugin zijn gekoppeld, tonen cart, hetzelfde label dat Shopify-bestellingen krijgen.

Naar Meta verstuurd voor bestelling 1042Gekoppeld (plugin)Niet gekoppeld (alleen webhooks)
Event-id order-1042JaJa
Gehasht e-mailadres, telefoonnummer, naam en adresJaJa
IP-adres en browser van de bestellingJaJa
Click-id en browser-id van Meta (fbc, fbp)JaNee
Gehasht bezoeker-id (external_id)JaNee
De advertentieklik in de attributie van ROASaurusCampagne en advertentie van de klikGetoond als direct of onbekend
Een niet-gekoppelde bestelling bereikt Meta nog steeds met de bestelgegevens. Een gekoppelde bestelling voegt de click-identifiers toe die Meta gebruikt om de advertentie de credits toe te kennen.

Die click-identifiers verhogen het matchpercentage van Meta voor het event. Event Match Quality legt uit hoe Meta ze beoordeelt.

Elke webshop in ROASaurus heeft de instelling Respect visitor consent, die standaard aan staat. Op WooCommerce leest het ROASaurus-script de keuze van de bezoeker uit de WP Consent API, die toestemmingsplugins zoals Complianz en CookieYes vullen. Het leest ook Cookiebot, OneTrust, IAB TCF-banners en Google consent mode. Totdat de bezoeker marketingcookies accepteert, zet het script geen bezoeker-id en laadt het geen browserpixels.

Weigert een bezoeker, dan zet het script geen bezoeker-id, bewaart het geen click-id's en gaan er geen browserpixels af, en slaat de plugin geen trackingcookies op bij de bestelling. De betaalde bestelling wordt nog wel vanaf de server naar je gekoppelde advertentieplatforms gestuurd, met gehashte klantgegevens uit de bestelling en het IP-adres en de browser van de bestelling. Als je juridisch advies zegt dat ook aankoopevents voorafgaande toestemming nodig hebben, neem dan contact op met ROASaurus voordat je server-side aankopen inschakelt. De helppagina over toestemming geeft de details, en het artikel over Consent Mode v2 en de AVG behandelt de juridische achtergrond.

Server-side tracking voor WooCommerce instellen

Dit zijn de stappen voor de pluginroute:

  1. De webshop toevoegen

    Ga in ROASaurus naar Add a store, kies WooCommerce en voer het domein in dat je klanten bezoeken.

  2. Maak een API-sleutel aan

    Open Store settings en klik onder Orders API op Create API key. Kopieer de sleutel meteen: die wordt maar één keer getoond, naast je webshopsleutel. Het endpoint is het adres vóór /api/v1/orders op die pagina.

  3. De plugin installeren

    Download de plugin en upload de zip in WordPress onder Plugins › Add New Plugin › Upload Plugin. Activeer de plugin daarna.

  4. De sleutels invoeren

    Voer onder WooCommerce › ROASaurus het endpoint, de webshopsleutel en de API-sleutel in en sla op.

  5. Koppel je advertentieplatforms

    Gebruik op Tracking & platforms Connect with Facebook of Add pixel voor Meta, TikTok en de andere. Vink de optie aan om ook de browserpixel te laden, zodat de aankoop op de bedankpagina wordt ontdubbeld met het serverevent.

  6. Toestemming instellen en testen

    Blokkeer het script in je toestemmingstool totdat de bezoeker marketingcookies accepteert en plaats dan een testbestelling.

Voeg zonder de plugin de scripttag van Tracking & platforms toe aan elke pagina en maak dan de webhook aan. Op het tabblad Connection van je webshop staat je webhook-URL. Houd die privé: iedereen met de URL kan bestellingen naar je webshop sturen.

Webhook-instellingen
WooCommerce › Settings › Advanced › Webhooks › Add webhook

Status        Active
Topic         Order updated
Delivery URL  (your webhook URL from the Connection tab)
Secret        (a secret of your choice; paste the same one in ROASaurus)
API version   WP REST API Integration v3

Maak voor de back-up een sleutel aan onder WooCommerce › Settings › Advanced › REST API met leestoegang. Plak de consumer key en consumer secret op het tabblad Connection, sla op en klik op Test connection. Fetch orders now haalt meteen recente betaalde bestellingen op. De WooCommerce-integratiepagina toont alle opties op één plek.

Hoe test je server-side tracking voor WooCommerce?

Test eerst de browserkant, plaats daarna een bestelling en volg die naar de advertentieplatforms.

  • Open je webshop met ?roasaurus=connected in het adres. Een melding bevestigt dat het script draait. Met ?roasaurus=debug logt het script in de browserconsole wat het verstuurt.
  • Onder Collected events in de Event log moeten paginaweergaven een bezoeker-id tonen.
  • Plaats een testbestelling. Betaling bij levering is het snelst, omdat de bestelling meteen op processing staat.
  • Op het tabblad Connection toont Last order received het tijdstip van de laatste bestelling.
  • In de Event log krijgt onder Server deliveries elk gekoppeld platform een regel met de status sent en het antwoord van het platform.
PageView visitor 3f9c2a1eScript geladen met toestemming
Purchase order-1042Bedankpagina, browserpixels afgegaan
order 1042 processingOntvangen van de plugin
Meta Purchase sentZelfde event-id, ontdubbeld
TikTok CompletePayment sentZelfde event-id, ontdubbeld
Voorbeeld van een gezonde testbestelling met de plugin. Bij alleen webhooks ontbreekt de regel van de bedankpagina en dat is normaal.

Om het event in Meta te zien, plak je de code uit Events Manager › Test events in het veld Test event code van je Meta-pixel in ROASaurus. Verwijder de code als je klaar bent, want hij is alleen bedoeld om te testen. Kan de plugin een bestelling niet afleveren, dan voegt hij in WooCommerce een bestelnotitie toe die begint met "ROASaurus: order not sent", gevolgd door de fout.

Fouten die je moet vermijden

  • Het topic Order created gebruiken. Bestellingen die via een redirect worden betaald, worden aangemaakt als pending payment. ROASaurus negeert onbetaalde bestellingen, en er volgt geen tweede "created"-bericht wanneer de betaling binnenkomt. Gebruik Order updated.
  • Een geheime sleutel die niet overeenkomt. ROASaurus weigert een levering waarvan de handtekening niet overeenkomt met de geheime sleutel die het heeft. Na meer dan vijf mislukkingen achter elkaar schakelt WooCommerce de webhook uit. Herstel de geheime sleutel, zet de webhook terug op Active en voeg de REST API-sleutel toe, zodat bestellingen uit de tussenliggende periode alsnog worden opgehaald.
  • Twee tools die dezelfde pixel versturen. Als een andere plugin ook je Meta- of TikTok-pixel verstuurt, gebruikt die eigen event-id's en telt het platform elke verkoop dubbel. Schakel die voor deze pixel uit. Zie dubbeltelling voorkomen en dubbele aankoopevents.
  • Events voor toevoegen aan winkelwagen verwachten. Bij WooCommerce trackt het script zelf paginaweergaven. Productweergaven en toevoegingen aan de winkelwagen worden alleen bij Shopify automatisch gedetecteerd. Een developer kan ze versturen met een tlq track-aanroep.
  • Google Ads-conversies verwachten. ROASaurus verstuurt aankoopconversies voor Google Ads alleen vanuit de Shopify-checkout. Vanuit WooCommerce verstuurt het aankopen naar Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn en de andere advertentieplatforms die je koppelt.
  • Late bankoverschrijvingen. Meta accepteert serverevents tot 7 dagen na het tijdstip van het event. De plugin verstuurt de bestelling met de datum waarop die is aangemaakt, dus Meta weigert een overschrijving die meer dan 7 dagen na de checkout wordt bevestigd. Bestellingen die via een webhook of de REST API binnenkomen, gebruiken in plaats daarvan de betaaldatum. Houd er ook rekening mee dat de bedankpagina de aankoop in de browser afvuurt bij de checkout, voordat de overschrijving is betaald. Wordt de betaling meer dan 48 uur later bevestigd, dan kunnen Meta en TikTok de kopieën van de browser en de server niet samenvoegen, en een overschrijving die nooit wordt betaald houdt zijn browseraankoop.

Zodra bestellingen binnenkomen, laten de attributierapporten zien uit welke campagnes en advertenties ze kwamen.

Bronnen

  1. WooCommerce: Webhooks Documentation
  2. WooCommerce REST API Documentation - WP REST API v3
  3. WooCommerce: Order Statuses Documentation
  4. WooCommerce: Cash on Delivery Documentation
  5. Meta for Developers: Server Event Parameters

In ROASaurus

Lees verder

Advertentieplatforms en webshopsConversietracking bij betaling bij levering en externe checkoutsConversietracking bij betaling bij levering: waarom pixels COD-bestellingen en bestellingen via een externe checkout missen, wanneer je de aankoop verstuurt en hoe je geweigerde bestellingen afhandelt.Advertentieplatforms en webshopsConversietracking voor CCV Shop: een installatiegidsConversietracking voor CCV Shop: verstuur betaalde bestellingen met een ondertekende webhook naar Meta en TikTok, koppel ze aan advertentieklikken, stel alles in, test het en ga om met late betalingen.Advertentieplatforms en webshopsEnhanced conversions van Google Ads op ShopifyEnhanced conversions voegen gehashte klantgegevens toe aan Google Ads-aankopen op Shopify. Zo werken ze, zo verschillen ze van offline imports en zo stel je ze in.
FAQ

Vragen, beantwoord

Heb ik de ROASaurus-plugin nodig voor WooCommerce?

Nee. Een WooCommerce-webhook is genoeg om elke betaalde bestelling te versturen. De plugin voegt het bezoeker-id en klikcookies toe aan elke bestelling en een ontdubbelde aankoop in de browser op de bedankpagina, waardoor bestellingen exact aan advertentieklikken worden gekoppeld. Daarom wordt hij aanbevolen.

Welk WooCommerce-webhooktopic moet ik gebruiken?

Order updated, met API-versie WP REST API Integration v3. ROASaurus negeert bestellingen die niet processing of completed zijn en slaat elke bestelling maar één keer op, dus herhaalde updates maken geen extra aankopen aan.

Worden bestellingen met betaling bij levering naar Meta en TikTok gestuurd?

Ja. WooCommerce geeft bestellingen met betaling bij levering de status processing wanneer ze worden geplaatst, en ROASaurus beschouwt processing-bestellingen als betaald. Bestellingen met bankoverschrijving worden verstuurd zodra je ze van on hold naar processing verplaatst.

Wat wordt er verstuurd als een bezoeker cookies weigert?

De betaalde bestelling wordt nog steeds vanaf de server verstuurd, met gehashte klantgegevens en het IP-adres en de browser van de bestelling. Het script hoort zonder toestemming niet te draaien, dus er is geen bezoeker-id of click-id om de bestelling aan een advertentieklik te koppelen.

Waarom werkt mijn WooCommerce-webhook niet meer?

WooCommerce schakelt een webhook uit na meer dan vijf mislukte leveringen achter elkaar. Controleer of de geheime sleutel in WooCommerce overeenkomt met die in ROASaurus, zet de webhook terug op Active en voeg een REST API-sleutel toe, zodat gemiste bestellingen elke 5 minuten worden opgehaald.

Verstuurt ROASaurus Google Ads-conversies vanuit WooCommerce?

Niet voor aankopen. Aankoopconversies voor Google Ads worden alleen vanuit de Shopify-checkout verstuurd. Vanuit WooCommerce verstuurt ROASaurus aankopen naar Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn en de andere advertentieplatforms die je koppelt.

Elke verkoop herleid tot de advertentie die hem opleverde

Server-side tracking, winst en lifetime value in één app. 14 dagen gratis proberen, geen creditcard.

Start je gratis proefperiode →