Annonsplattformar och webbshoppar

Server-side tracking för WooCommerce: en installationsguide

Sätt upp server-side tracking för WooCommerce: skicka betalda ordrar till Meta och TikTok med ROASaurus-pluginet eller webhooks, matcha dem mot annonsklick och testa.

·Uppdaterad ·11 min läsning·Av ROASaurus-teamet

Det viktigaste
  • Server-side tracking för WooCommerce skickar varje betald order från butikens egen orderdata till Meta, TikTok och andra annonsplattformar, så ett köp räknas även när webbläsarpixeln aldrig utlöses.
  • ROASaurus räknar en WooCommerce-order som betald när dess status är processing eller completed, vilket omfattar ordrar med postförskott och banköverföringar när du har bekräftat dem.
  • ROASaurus-pluginet sparar besökar-id:t och annonsklickens cookies på varje order i kassan, så ordern kopplas exakt till sitt annonsklick.
  • Utan pluginet levererar webhooks fortfarande varje betald order, men det finns ingen matchning via tacksidan: ordrar kopplas bara via en e-postadress som angetts tidigare på webbplatsen eller via en unik IP-adress och webbläsare.
  • På WooCommerce följer ROASaurus-skriptet samtyckesplugin som använder WP Consent API, till exempel Complianz och CookieYes, samt bannrarna Cookiebot, OneTrust och IAB TCF.

Server-side tracking för WooCommerce skickar varje betald order från din butiks orderdata till Meta, TikTok och andra annonsplattformar, i stället för att bara förlita sig på en pixel i köparens webbläsare. Köpet rapporteras även när en annonsblockerare stoppar pixeln eller köparen aldrig når tacksidan.

Den här guiden tar upp varför WooCommerce-butiker förlorar konverteringar, vilken orderdata WooCommerce ger dig och de två sätten att ansluta ROASaurus: WordPress-pluginet eller webhooks. Därefter följer matchning, samtycke, uppsättning och testning. För grundtanken, läs vad server-side tracking är.

Varför förlorar WooCommerce-butiker konverteringar?

En webbläsarpixel rapporterar ett köp bara när pixelskriptet laddas, köparen når tacksidan och webbläsaren skickar händelsen. Varje steg kan misslyckas. Själva ordern finns ändå kvar i din databas, eftersom WooCommerce sparar den på servern.

Vad som händerWebbläsarpixelOrderdata i WooCommerce
Köparen betalar via omdirigering (till exempel PayPal eller en bankapp) och stänger flikenIngen tacksida, ingen köphändelseBetald order, status processing
En annonsblockerare eller sekretessinställning blockerar pixelskriptetIngen köphändelseBetald order
Besökaren tackar nej till marknadsföringscookiesPixeln får inte laddasBetald order
En banköverföring bekräftas tre dagar senareIngen webbläsare är öppen vid den tidpunktenStatusen ändras från on hold till processing
Ett cache- eller skriptoptimeringsplugin fördröjer pixelnHändelsen kan bli sen eller utebliBetald order
I varje fall finns den betalda ordern i WooCommerce. Server-side tracking skickar den ordern, oavsett vad som hände i webbläsaren.

Köp som saknas ger två sorters skada. Annonsplattformen optimerar på färre konverteringar, och dina rapporter visar lägre avkastning än du faktiskt får. Här är den andra effekten i siffror, för en exempelbutik med en break-even-ROAS på 2.2:

Exempelbutik, en månadBara pixelAlla betalda ordrar
Annonskostnad på Meta$8,000$8,000
Köp från klick på Meta260320
Intäkt vid $60 per order$15,600$19,200
ROAS15,600 ÷ 8,000 = 1.9519,200 ÷ 8,000 = 2.40
Mot break-even (2.2)Ser ut som en förlustLönsam
Illustrativa siffror. Samma kampanj ser ut som en förlust i pixeldata och tjänar pengar i orderdata.

Vad WooCommerce ger dig: ordrar, webhooks och REST API:et

Vilka orderstatusar räknas som betalda?

WooCommerce beskriver processing som att betalningen är mottagen och att ordern väntar på att expedieras. ROASaurus skickar ordrar med status processing eller completed och hoppar över ordrar med status pending payment, on hold, failed, cancelled och refunded. Två betalsätt kräver uppmärksamhet:

  • Postförskott. WooCommerce sätter de här ordrarna till processing tills betalningen har tagits emot, så ROASaurus skickar dem när de läggs. Ordrar med en nedladdningsbar produkt är undantaget: de sätts på on hold. Se att spåra ordrar med postförskott för vad det betyder för returer och vägrade ordrar.
  • Banköverföring. WooCommerce sätter de här ordrarna på on hold medan du verifierar betalningen. ROASaurus skickar dem när du flyttar dem till processing.

Webhooks

En webhook är ett meddelande som WooCommerce skickar till ett annat system när något ändras. Du skapar den under WooCommerce › Settings › Advanced › Webhooks. För ett order-topic är payloaden samma orderobjekt som REST API:et returnerar. Varje leverans bär en X-WC-Webhook-Signature-header: en base64-kodad HMAC-SHA256-hash av payloaden, framställd med den hemlighet du väljer. ROASaurus kontrollerar den signaturen innan en order accepteras.

Två detaljer spelar roll i praktiken. WooCommerce levererar webhooks i bakgrunden, som standard med WP-Cron, så en leverans kan fördröjas när den kön ligger efter. Och WooCommerce inaktiverar en webhook efter fler än fem misslyckade leveranser i rad.

REST API

REST API:et låter ROASaurus be om ordrar själv. Med en skrivskyddad API-nyckel ber ROASaurus var 5:e minut om ordrar med status processing och completed som har ändrats sedan den senaste kontrollen, med 30 minuters överlapp. Ordrar som den redan har ignoreras. Det fångar upp varje order som en webhook missade.

OrderfältVad ROASaurus gör med det
idBlir händelse-id:t order-1042, som delas av server- och webbläsarhändelserna
totalKöpvärdet: totalsumman, inklusive moms och frakt
Faktureringsuppgifter: e-post, telefon, namn, stad, delstat, postnummer, landHashas med SHA-256 och skickas som kunddata
customer_ip_address, customer_user_agentSkickas med händelsen och används för att matcha ordern mot en besökare
line_itemsProdukt-id:n (variant-id:t när det finns ett), antal och priser
date_paid_gmtHändelsetiden för ordrar från en webhook eller REST API:et (skapandedatumet när det inte finns något betaldatum)
meta_dataMed pluginet: besökar-id:t och cookies från Meta och TikTok
Vad ROASaurus läser från en WooCommerce-order. Webhooken och REST API:et returnerar samma fält.

Plugin eller webhooks: två sätt att ansluta

Båda anslutningarna skickar varje betald order. De skiljer sig i hur väl varje order kopplas till det annonsklick som förde in köparen.

KassaPluginet sparar besökar-id:t och klickcookies på ordern
Order betaldStatus processing eller completed
ROASaurusTar emot ordern från pluginet eller en webhook
AnnonsplattformarMeta, TikTok och andra får ett Purchase med händelse-id order-1042
Dataflödet med pluginet. Utan det sparar kassasteget ingenting extra och ordern kommer enbart via webhook.
ROASaurus-pluginEndast webhooks
Det du installerarEtt WordPress-plugin (PHP 7.4 och WooCommerce 6.0 eller nyare)Ingenting: en webhook i WooCommerce-inställningarna
Hur ordrar kommer inPluginet skickar varje betald order till ROASaurus orders APIWooCommerce skickar Order updated; valfri kontroll via REST API var 5:e minut
TrackingskriptLaddas av pluginet på varje sidaDu lägger till det själv, till exempel med pluginet WPCode eller i ditt tema
Besökar-id och klickcookies på ordernJa, sparas i kassan (klassisk kassa och blockbaserad kassa)Nej
Webbläsarköp på tacksidanJa, med samma händelse-id som serverhändelsenNej
Matchning via tacksidanJaNej
Båda anslutningarna skickar varje betald order. Bara pluginet kopplar varje order till sin besökare i kassan.

Du kan använda båda samtidigt. Pluginet sparar besökar-id:t på ordern som orderns metadata, och webhookens payload för det med sig. ROASaurus lagrar varje order en gång, med dess WooCommerce-order-id, så pluginet och webhooken skapar aldrig två köp. Pluginet deklarerar dessutom stöd för WooCommerce High-Performance Order Storage.

Hur matchas en WooCommerce-order mot annonsklicket?

En annonsplattform kan bara tillskriva ett köp till en annons när den kan koppla ihop dem. ROASaurus gör det genom att koppla ordern till den besökare som klickade på annonsen, och den besökaren bär med sig klick-id:n (som fbclid och ttclid) och UTM-parametrar från landningen. Den provar de här metoderna i ordning och stannar vid den första som fungerar:

  1. Besökar-id:t som sparats på ordern. Bara med pluginet. Det här är en exakt koppling.
  2. Webbläsarköpet på tacksidan, som bär samma order-id. Bara med pluginet.
  3. En hashad e-postadress som besökaren har angett tidigare på din webbplats, till exempel i ett popup-formulär från Klaviyo, Attentive eller Wisepops, eller via ett Identify-anrop.
  4. Samma IP-adress och webbläsare, sedda från 3 timmar före till 15 minuter efter ordern, men bara när exakt en besökare passar. I delade nätverk, som kontor och mobiloperatörer, delar ofta flera besökare en IP-adress, och då gissar inte ROASaurus.

ROASaurus väntar en kort stund innan varje köp skickas, så att händelsen från tacksidan hinner komma först. Om ordern fortfarande saknar matchning försöker den igen vid skickandet. Sidan Orders visar resultatet per order i kolumnen Matched by. Ordrar som kopplats via pluginets besökar-id visar cart, samma etikett som Shopify-ordrar får.

Skickat till Meta för order 1042Matchad (plugin)Ej matchad (endast webhooks)
Händelse-id order-1042JaJa
Hashad e-post, telefon, namn och adressJaJa
Orderns IP-adress och webbläsareJaJa
Metas klick-id och webbläsar-id (fbc, fbp)JaNej
Hashat besökar-id (external_id)JaNej
Annonsklicket i ROASaurus-attributionenKlickets kampanj och annonsVisas som direkt eller okänd
En omatchad order når ändå Meta med orderdata. En matchad order lägger till de klickidentifierare som Meta använder för att tillskriva annonsen.

De klickidentifierarna höjer Metas matchningsgrad för händelsen. Event Match Quality förklarar hur Meta poängsätter dem.

Varje butik i ROASaurus har inställningen Respect visitor consent, som är påslagen som standard. På WooCommerce läser ROASaurus-skriptet besökarens val från WP Consent API, som samtyckesplugin, till exempel Complianz och CookieYes, fyller i. Det läser också Cookiebot, OneTrust, IAB TCF-bannrar och Google consent mode. Tills besökaren accepterar marknadsföringscookies sätter skriptet inget besökar-id och laddar inga webbläsarpixlar.

När en besökare tackar nej sätter skriptet inget besökar-id, behåller inga klick-id:n och utlöser inga webbläsarpixlar, och pluginet sparar inga trackingcookies på ordern. Den betalda ordern skickas ändå från servern till dina anslutna annonsplattformar, med hashad kunddata från ordern samt orderns IP-adress och webbläsare. Om din juridiska rådgivning säger att köphändelser också kräver föregående samtycke, kontakta ROASaurus innan du slår på serverköp. Hjälpsidan om samtycke har detaljerna, och inlägget om Consent Mode v2 och GDPR tar upp den juridiska bakgrunden.

Så sätter du upp server-side tracking för WooCommerce

Det här är stegen för plugin-vägen:

  1. Lägg till butiken

    Gå till Add a store i ROASaurus, välj WooCommerce och ange den domän som dina kunder besöker.

  2. Skapa en API-nyckel

    Öppna Store settings och klicka på Create API key under Orders API. Kopiera nyckeln direkt: den visas bara en gång, intill din butiksnyckel. Endpointen är adressen framför /api/v1/orders på den sidan.

  3. Installera pluginet

    Ladda ner pluginet och ladda upp zip-filen i WordPress under Plugins › Add New Plugin › Upload Plugin. Aktivera det sedan.

  4. Ange nycklarna

    Ange endpointen, butiksnyckeln och API-nyckeln under WooCommerce › ROASaurus och spara.

  5. Anslut dina annonsplattformar

    På Tracking & platforms använder du Connect with Facebook eller Add pixel för Meta, TikTok och de andra. Kryssa i alternativet för att även ladda webbläsarpixeln, så att köpet på tacksidan dedupliceras med serverhändelsen.

  6. Ställ in samtycke och testa

    Blockera skriptet i ditt samtyckesverktyg tills besökaren accepterar marknadsföringscookies och lägg sedan en testorder.

Utan pluginet lägger du till skripttaggen från Tracking & platforms på varje sida och skapar därefter webhooken. Fliken Connection för din butik visar din webhook-URL. Håll den privat: alla som har URL:en kan skicka ordrar till din butik.

Webhook-inställningar
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

För reservlösningen skapar du en nyckel under WooCommerce › Settings › Advanced › REST API med läsbehörighet. Klistra in consumer key och secret på fliken Connection, spara och tryck på Test connection. Fetch orders now hämtar de senaste betalda ordrarna direkt. Integrationssidan för WooCommerce listar alla alternativ på ett ställe.

Hur testar du server-side tracking för WooCommerce?

Testa webbläsarsidan först, lägg sedan en order och följ den till annonsplattformarna.

  • Öppna din butik med ?roasaurus=connected i adressen. En avisering bekräftar att skriptet körs. Med ?roasaurus=debug loggar skriptet vad det skickar i webbläsarens konsol.
  • Under Collected events i Event log ska sidvisningar visa ett besökar-id.
  • Lägg en testorder. Postförskott går snabbast, eftersom ordern får status processing direkt.
  • På fliken Connection visar Last order received tidpunkten för den senaste ordern.
  • I Event log, under Server deliveries, får varje ansluten plattform en rad med statusen sent och plattformens svar.
PageView visitor 3f9c2a1eSkriptet laddades med samtycke
Purchase order-1042Tacksidan, webbläsarpixlar utlösta
order 1042 processingMottaget från pluginet
Meta Purchase sentSamma händelse-id, deduplicerat
TikTok CompletePayment sentSamma händelse-id, deduplicerat
Exempel på en frisk testorder med pluginet. Med endast webhooks saknas raden för tacksidan, och det är väntat.

För att se händelsen i Meta klistrar du in koden från Events Manager › Test events i fältet Test event code för din Meta-pixel i ROASaurus. Ta bort den när du är klar, eftersom koden bara är till för test. Om pluginet inte kan leverera en order lägger det till en ordernotering i WooCommerce som börjar med ”ROASaurus: order not sent”, följt av felet.

Misstag att undvika

  • Att använda topic Order created. Ordrar som betalas via omdirigering skapas som pending payment. ROASaurus ignorerar obetalda ordrar, och inget ytterligare ”created”-meddelande följer när betalningen kommer. Använd Order updated.
  • En hemlighet som inte stämmer. ROASaurus avvisar en leverans vars signatur inte stämmer med den hemlighet den har. Efter fler än fem misslyckanden i rad inaktiverar WooCommerce webhooken. Rätta hemligheten, sätt webhooken till Active igen och lägg till REST API-nyckeln, så att ordrar från glappet hämtas.
  • Två verktyg som skickar samma pixel. Om ett annat plugin också skickar din Meta- eller TikTok-pixel använder det sina egna händelse-id:n och plattformen räknar varje försäljning två gånger. Stäng av det för den pixeln. Se att förhindra dubbelräkning och dubbla köphändelser.
  • Att förvänta sig händelser för tillagda varor. I WooCommerce spårar skriptet sidvisningar på egen hand. Produktvisningar och tillagda varor i varukorgen upptäcks automatiskt bara i Shopify. En utvecklare kan skicka dem med ett tlq track-anrop.
  • Att förvänta sig Google Ads-konverteringar. ROASaurus skickar köpkonverteringar till Google Ads bara från Shopify-kassan. Från WooCommerce skickar det köp till Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn och de andra annonsplattformar du ansluter.
  • Sena banköverföringar. Meta accepterar serverhändelser upp till 7 dagar efter händelsetiden. Pluginet skickar ordern med det datum då den skapades, så Meta avvisar en överföring som bekräftas mer än 7 dagar efter kassan. Ordrar som kommer via webhook eller REST API:et använder i stället betaldatumet. Observera också att tacksidan utlöser webbläsarköpet i kassan, innan överföringen är betald. Om betalningen bekräftas mer än 48 timmar senare kan Meta och TikTok inte slå ihop webbläsarkopian och serverkopian, och en överföring som aldrig betalas behåller sitt webbläsarköp.

När ordrarna väl flödar visar attributionsrapporterna vilka kampanjer och annonser de kom från.

Källor

  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

I ROASaurus

Läs vidare

Annonsplattformar och webbshopparKonverteringstracking för postförskott och externa kassorKonverteringstracking för postförskott: varför pixlar missar ordrar med postförskott och externa kassor, när köpet ska skickas och hur du hanterar ordrar som kunden vägrar ta emot.Annonsplattformar och webbshopparKonverteringstracking för CCV Shop: en installationsguideKonverteringstracking för CCV Shop: skicka betalda ordrar till Meta och TikTok med en signerad webhook, koppla dem till annonsklick, sätt upp, testa och hantera sena betalningar.Annonsplattformar och webbshopparGoogle Ads enhanced conversions på ShopifyEnhanced conversions lägger till hashad kunddata på Google Ads-köp på Shopify. Så fungerar de, hur de skiljer sig från offlineimporter och hur du sätter upp dem.
Vanliga frågor

Frågor, besvarade

Behöver jag ROASaurus-pluginet för WooCommerce?

Nej. En WooCommerce-webhook räcker för att skicka varje betald order. Pluginet lägger till besökar-id:t och klickcookies på varje order samt ett deduplicerat webbläsarköp på tacksidan, vilket kopplar ordrar till annonsklick exakt, så det rekommenderas.

Vilket webhook-topic i WooCommerce ska jag använda?

Order updated, med API-versionen WP REST API Integration v3. ROASaurus ignorerar ordrar som inte har status processing eller completed och lagrar varje order bara en gång, så upprepade uppdateringar skapar inga extra köp.

Skickas ordrar med postförskott till Meta och TikTok?

Ja. WooCommerce ger ordrar med postförskott statusen processing när de läggs, och ROASaurus räknar ordrar med processing som betalda. Ordrar med banköverföring skickas när du flyttar dem från on hold till processing.

Vad skickas när en besökare tackar nej till cookies?

Den betalda ordern skickas ändå från servern med hashad kunddata samt IP-adressen och webbläsaren från ordern. Skriptet ska inte köras utan samtycke, så det finns inget besökar-id eller klick-id att koppla ordern till ett annonsklick med.

Varför slutade min WooCommerce-webhook att fungera?

WooCommerce inaktiverar en webhook efter fler än fem misslyckade leveranser i rad. Kontrollera att hemligheten i WooCommerce stämmer med den i ROASaurus, sätt webhooken till Active igen och lägg till en REST API-nyckel så att missade ordrar hämtas var 5:e minut.

Skickar ROASaurus Google Ads-konverteringar från WooCommerce?

Inte för köp. Köpkonverteringar i Google Ads skickas bara från Shopify-kassan. Från WooCommerce skickar ROASaurus köp till Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn och de andra annonsplattformar du ansluter.

Varje försäljning, spårad till annonsen som genererade den

Server-side tracking, vinst och livstidsvärde i en app. 14 dagars gratis provperiod, inget kreditkort.

Starta din gratis provperiod →