- 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änder | Webbläsarpixel | Orderdata i WooCommerce |
|---|---|---|
| Köparen betalar via omdirigering (till exempel PayPal eller en bankapp) och stänger fliken | Ingen tacksida, ingen köphändelse | Betald order, status processing |
| En annonsblockerare eller sekretessinställning blockerar pixelskriptet | Ingen köphändelse | Betald order |
| Besökaren tackar nej till marknadsföringscookies | Pixeln får inte laddas | Betald order |
| En banköverföring bekräftas tre dagar senare | Ingen webbläsare är öppen vid den tidpunkten | Statusen ändras från on hold till processing |
| Ett cache- eller skriptoptimeringsplugin fördröjer pixeln | Händelsen kan bli sen eller utebli | Betald order |
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ånad | Bara pixel | Alla betalda ordrar |
|---|---|---|
| Annonskostnad på Meta | $8,000 | $8,000 |
| Köp från klick på Meta | 260 | 320 |
| Intäkt vid $60 per order | $15,600 | $19,200 |
| ROAS | 15,600 ÷ 8,000 = 1.95 | 19,200 ÷ 8,000 = 2.40 |
| Mot break-even (2.2) | Ser ut som en förlust | Lönsam |
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ält | Vad ROASaurus gör med det |
|---|---|
id | Blir händelse-id:t order-1042, som delas av server- och webbläsarhändelserna |
total | Köpvärdet: totalsumman, inklusive moms och frakt |
| Faktureringsuppgifter: e-post, telefon, namn, stad, delstat, postnummer, land | Hashas med SHA-256 och skickas som kunddata |
customer_ip_address, customer_user_agent | Skickas med händelsen och används för att matcha ordern mot en besökare |
line_items | Produkt-id:n (variant-id:t när det finns ett), antal och priser |
date_paid_gmt | Händelsetiden för ordrar från en webhook eller REST API:et (skapandedatumet när det inte finns något betaldatum) |
meta_data | Med pluginet: besökar-id:t och cookies från Meta och TikTok |
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.
| ROASaurus-plugin | Endast webhooks | |
|---|---|---|
| Det du installerar | Ett WordPress-plugin (PHP 7.4 och WooCommerce 6.0 eller nyare) | Ingenting: en webhook i WooCommerce-inställningarna |
| Hur ordrar kommer in | Pluginet skickar varje betald order till ROASaurus orders API | WooCommerce skickar Order updated; valfri kontroll via REST API var 5:e minut |
| Trackingskript | Laddas av pluginet på varje sida | Du lägger till det själv, till exempel med pluginet WPCode eller i ditt tema |
| Besökar-id och klickcookies på ordern | Ja, sparas i kassan (klassisk kassa och blockbaserad kassa) | Nej |
| Webbläsarköp på tacksidan | Ja, med samma händelse-id som serverhändelsen | Nej |
| Matchning via tacksidan | Ja | Nej |
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:
- Besökar-id:t som sparats på ordern. Bara med pluginet. Det här är en exakt koppling.
- Webbläsarköpet på tacksidan, som bär samma order-id. Bara med pluginet.
- 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.
- 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 1042 | Matchad (plugin) | Ej matchad (endast webhooks) |
|---|---|---|
Händelse-id order-1042 | Ja | Ja |
| Hashad e-post, telefon, namn och adress | Ja | Ja |
| Orderns IP-adress och webbläsare | Ja | Ja |
Metas klick-id och webbläsar-id (fbc, fbp) | Ja | Nej |
Hashat besökar-id (external_id) | Ja | Nej |
| Annonsklicket i ROASaurus-attributionen | Klickets kampanj och annons | Visas som direkt eller okänd |
De klickidentifierarna höjer Metas matchningsgrad för händelsen. Event Match Quality förklarar hur Meta poängsätter dem.
Samtycke i WooCommerce
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:
- Lägg till butiken
Gå till Add a store i ROASaurus, välj WooCommerce och ange den domän som dina kunder besöker.
- 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/orderspå den sidan. - Installera pluginet
Ladda ner pluginet och ladda upp zip-filen i WordPress under Plugins › Add New Plugin › Upload Plugin. Aktivera det sedan.
- Ange nycklarna
Ange endpointen, butiksnyckeln och API-nyckeln under WooCommerce › ROASaurus och spara.
- 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.
- 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.
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=connectedi adressen. En avisering bekräftar att skriptet körs. Med?roasaurus=debugloggar 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 samtyckePurchase order-1042Tacksidan, webbläsarpixlar utlöstaorder 1042 processingMottaget från pluginetMeta Purchase sentSamma händelse-id, dedupliceratTikTok CompletePayment sentSamma händelse-id, dedupliceratFö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
tlqtrack-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
- WooCommerce: Webhooks Documentation
- WooCommerce REST API Documentation - WP REST API v3
- WooCommerce: Order Statuses Documentation
- WooCommerce: Cash on Delivery Documentation
- Meta for Developers: Server Event Parameters