- Server-side tracking på WooCommerce sender hver betalt ordre fra shoppens egne ordredata til Meta, TikTok og andre annonceplatforme, så et køb tæller, selv når browserpixelen aldrig affyres.
- ROASaurus regner en WooCommerce-ordre som betalt, når dens status er processing eller completed, hvilket omfatter efterkravsordrer og bankoverførsler, når du har bekræftet dem.
- ROASaurus-pluginet gemmer besøgs-id'et og annonceklik-cookies på hver ordre ved checkout, så ordren knyttes præcist til sit annonceklik.
- Uden pluginet leverer webhooks stadig hver betalt ordre, men der er ingen matching via takkesiden: Ordrer knyttes kun via en e-mail, der er oplyst tidligere på websitet, eller via en unik IP-adresse og browser.
- På WooCommerce følger ROASaurus-scriptet samtykke-plugins, der bruger WP Consent API, for eksempel Complianz og CookieYes, samt bannerne Cookiebot, OneTrust og IAB TCF.
Server-side tracking på WooCommerce sender hver betalt ordre fra din shops ordredata til Meta, TikTok og andre annonceplatforme i stedet for kun at stole på en pixel i shopperens browser. Købet bliver rapporteret, selv når en adblocker stopper pixelen, eller shopperen aldrig når til takkesiden.
Denne guide dækker, hvorfor WooCommerce-shops mister konverteringer, de ordredata, WooCommerce giver dig, og de to måder at forbinde ROASaurus på: WordPress-pluginet eller webhooks. Derefter matching, samtykke, opsætning og test. Hvis du vil have den overordnede idé, så læs hvad server-side tracking er.
Hvorfor mister WooCommerce-shops konverteringer?
En browserpixel rapporterer kun et køb, når pixelscriptet indlæses, shopperen når til takkesiden, og browseren sender eventet. Hvert trin kan svigte. Selve ordren ligger stadig i din database, fordi WooCommerce gemmer den på serveren.
| Hvad der sker | Browserpixel | Ordredata i WooCommerce |
|---|---|---|
| Shopperen betaler via en omdirigering (for eksempel PayPal eller en bank-app) og lukker fanen | Ingen takkeside, ingen købsevent | Betalt ordre, status processing |
| En adblocker eller privatlivsindstilling blokerer pixelscriptet | Intet købsevent | Betalt ordre |
| Den besøgende afviser marketingcookies | Pixelen må ikke indlæses | Betalt ordre |
| En bankoverførsel bekræftes tre dage senere | Ingen browser er åben på det tidspunkt | Status skifter fra on hold til processing |
| Et caching- eller scriptoptimeringsplugin forsinker pixelen | Eventet kan komme for sent eller mangle | Betalt ordre |
Manglende køb gør skade på to måder. Annonceplatformen optimerer på færre konverteringer, og dine rapporter viser et lavere afkast, end du reelt får. Her er den anden effekt i tal for en eksempelshop med en break-even-ROAS på 2.2:
| Eksempelshop, én måned | Kun pixel | Alle betalte ordrer |
|---|---|---|
| Annonceforbrug på Meta | $8,000 | $8,000 |
| Køb fra Meta-klik | 260 | 320 |
| Omsætning ved $60 pr. ordre | $15,600 | $19,200 |
| ROAS | 15,600 ÷ 8,000 = 1.95 | 19,200 ÷ 8,000 = 2.40 |
| Mod break-even (2.2) | Ser ud som et tab | Rentabel |
Det, WooCommerce giver dig: ordrer, webhooks og REST API'et
Hvilke ordrestatusser tæller som betalt?
WooCommerce beskriver processing som modtaget betaling, hvor ordren venter på at blive ekspederet. ROASaurus sender ordrer med status processing eller completed og springer ordrer med status pending payment, on hold, failed, cancelled og refunded over. To betalingsmetoder kræver opmærksomhed:
- Efterkrav. WooCommerce sætter disse ordrer til processing, indtil betalingen er indkrævet, så ROASaurus sender dem, når de afgives. Ordrer med et downloadbart produkt er undtagelsen: De sættes on hold. Se tracking af efterkravsordrer for, hvad det betyder for returneringer og afviste pakker.
- Bankoverførsel. WooCommerce sætter disse ordrer on hold, mens du verificerer betalingen. ROASaurus sender dem, når du flytter dem til processing.
Webhooks
En webhook er en besked, som WooCommerce sender til et andet system, når noget ændrer sig. Du opretter den under WooCommerce › Settings › Advanced › Webhooks. For et ordreemne er payloaden det samme ordreobjekt, som REST API'et returnerer. Hver levering har en X-WC-Webhook-Signature-header: en base64 HMAC-SHA256-hash af payloaden, lavet med den hemmelige nøgle, du vælger. ROASaurus tjekker den signatur, før den accepterer en ordre.
To detaljer har betydning i praksis. WooCommerce leverer webhooks i baggrunden, som standard med WP-Cron, så en levering kan blive forsinket, når den kø halter. Og WooCommerce deaktiverer en webhook efter mere end fem mislykkede leveringer i træk.
REST API
REST API'et lader ROASaurus selv spørge efter ordrer. Med en skrivebeskyttet API-nøgle spørger ROASaurus hvert 5. minut efter processing- og completed-ordrer, der er ændret siden det seneste tjek, med 30 minutters overlap. Ordrer, den allerede har, ignoreres. Det fanger enhver ordre, en webhook missede.
| Ordrefelt | Hvad ROASaurus bruger det til |
|---|---|
id | Bliver til event-id'et order-1042, som deles af server- og browser-events |
total | Købsværdien: totalbeløbet, inklusive moms og forsendelse |
| Fakturerings-e-mail, telefon, navn, by, stat, postnummer, land | Hashes med SHA-256 og sendes som kundedata |
customer_ip_address, customer_user_agent | Sendes med eventet og bruges til at matche ordren med en besøgende |
line_items | Produkt-id'er (variant-id'et, når der er et), antal og priser |
date_paid_gmt | Eventtidspunktet for ordrer fra en webhook eller REST API'et (oprettelsesdatoen, når der ikke er nogen betalingsdato) |
meta_data | Med pluginet: besøgs-id'et og Meta- og TikTok-cookies |
Plugin eller webhooks: to måder at forbinde på
Begge forbindelser sender hver betalt ordre. De adskiller sig i, hvor godt hver ordre bliver knyttet til det annonceklik, der bragte shopperen ind.
| ROASaurus-plugin | Kun webhooks | |
|---|---|---|
| Hvad du installerer | Et WordPress-plugin (PHP 7.4 og WooCommerce 6.0 eller nyere) | Ingenting: en webhook i WooCommerce-indstillingerne |
| Sådan ankommer ordrerne | Pluginet sender hver betalt ordre til ROASaurus' ordre-API | WooCommerce sender Order updated; valgfrit REST API-tjek hvert 5. minut |
| Trackingscript | Indlæses af pluginet på hver side | Du tilføjer det selv, for eksempel med WPCode-pluginet eller i dit theme |
| Besøgs-id og klik-cookies på ordren | Ja, gemt ved checkout (klassisk checkout og block checkout) | Nej |
| Browserkøb på takkesiden | Ja, med samme event-id som server-eventet | Nej |
| Matching via takkesiden | Ja | Nej |
Du kan bruge begge på én gang. Pluginet gemmer besøgs-id'et på ordren som ordre-metadata, og webhook-payloaden tager det med. ROASaurus gemmer hver ordre én gang, efter dens WooCommerce-ordre-id, så pluginet og webhooken aldrig opretter to køb. Pluginet erklærer også understøttelse af WooCommerces High-Performance Order Storage.
Hvordan matches en WooCommerce-ordre med annonceklikket?
En annonceplatform kan kun give en annonce kredit for et køb, når den kan forbinde de to. ROASaurus gør dette ved at knytte ordren til den besøgende, der klikkede på annoncen, og den besøgende bærer klik-id'erne (som fbclid og ttclid) og UTM-parametrene fra landingen. Den prøver disse metoder i rækkefølge og stopper ved den første, der virker:
- Besøgs-id'et gemt på ordren. Kun med pluginet. Det er en præcis kobling.
- Browserkøbet på takkesiden, som bærer det samme ordre-id. Kun med pluginet.
- En hashet e-mail, som den besøgende har oplyst tidligere på dit website, for eksempel i en popup-formular fra Klaviyo, Attentive eller Wisepops eller via et Identify-kald.
- Den samme IP-adresse og browser, set fra 3 timer før til 15 minutter efter ordren, men kun når præcis én besøgende passer. På delte netværk, som kontorer og mobiludbydere, deler flere besøgende ofte én IP-adresse, og så gætter ROASaurus ikke.
ROASaurus venter kort, før den sender hvert køb, så eventet fra takkesiden kan nå frem først. Hvis ordren stadig ikke er matchet, prøver den igen ved afsendelsen. Siden Orders viser resultatet pr. ordre i kolonnen Matched by. Ordrer, der er knyttet via pluginets besøgs-id, viser cart, den samme betegnelse som Shopify-ordrer får.
| Sendt til Meta for ordre 1042 | Matchet (plugin) | Ikke matchet (kun webhooks) |
|---|---|---|
Event-id order-1042 | Ja | Ja |
| Hashet e-mail, telefon, navn og adresse | Ja | Ja |
| Ordrens IP-adresse og browser | Ja | Ja |
Metas klik-id og browser-id (fbc, fbp) | Ja | Nej |
Hashet besøgs-id (external_id) | Ja | Nej |
| Annonceklikket i ROASaurus-attribution | Klikkets kampagne og annonce | Vises som direkte eller ukendt |
Disse klik-identifikatorer hæver Metas matchrate for eventet. Event Match Quality forklarer, hvordan Meta scorer dem.
Samtykke på WooCommerce
Hver shop i ROASaurus har indstillingen Respect visitor consent, som er slået til som standard. På WooCommerce læser ROASaurus-scriptet den besøgendes valg fra WP Consent API, som samtykke-plugins, for eksempel Complianz og CookieYes, udfylder. Det læser også Cookiebot, OneTrust, IAB TCF-bannere og Google consent mode. Indtil den besøgende accepterer marketingcookies, sætter scriptet intet besøgs-id og indlæser ingen browserpixels.
Når en besøgende afviser, sætter scriptet intet besøgs-id, gemmer ingen klik-id'er og udløser ingen browserpixels, og pluginet gemmer ingen trackingcookies på ordren. Den betalte ordre sendes stadig fra serveren til dine forbundne annonceplatforme med hashede kundedata fra ordren og ordrens IP-adresse og browser. Hvis din juridiske rådgivning siger, at købsevents også kræver forudgående samtykke, så kontakt ROASaurus, før du slår server-side-køb til. Hjælpesiden om samtykke har detaljerne, og indlægget om Consent Mode v2 og GDPR dækker den juridiske baggrund.
Sådan sætter du server-side tracking op på WooCommerce
Det er trinnene for plugin-vejen:
- Tilføj shoppen
Gå til Add a store i ROASaurus, vælg WooCommerce, og indtast det domæne, dine kunder besøger.
- Opret en API-nøgle
Åbn Store settings, og klik under Orders API på Create API key. Kopiér nøglen med det samme: Den vises kun én gang, ved siden af din shopnøgle. Endpointet er adressen foran
/api/v1/orderspå den side. - Installér pluginet
Download pluginet, og upload zip-filen i WordPress under Plugins › Add New Plugin › Upload Plugin. Aktiver det derefter.
- Indtast nøglerne
Under WooCommerce › ROASaurus indtaster du endpointet, shopnøglen og API-nøglen og gemmer.
- Forbind dine annonceplatforme
På Tracking & platforms bruger du Connect with Facebook eller Add pixel til Meta, TikTok og de andre. Sæt kryds ved muligheden for også at indlæse browserpixelen, så købet på takkesiden deduplikeres med server-eventet.
- Opsæt samtykke, og test
Bloker scriptet i dit samtykkeværktøj, indtil den besøgende accepterer marketingcookies, og læg derefter en testordre.
Uden pluginet skal du tilføje script-tagget fra Tracking & platforms på hver side og derefter oprette webhooken. Fanen Connection i din shop viser din webhook-URL. Hold den privat: Alle med URL'en kan sende ordrer til din shop.
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
Til backup opretter du en nøgle under WooCommerce › Settings › Advanced › REST API med læseadgang. Indsæt consumer key og secret på fanen Connection, gem, og tryk på Test connection. Fetch orders now henter de seneste betalte ordrer med det samme. På WooCommerce-integrationssiden finder du alle muligheder samlet ét sted.
Hvordan tester du server-side tracking på WooCommerce?
Test først browsersiden, læg derefter en ordre, og følg den videre til annonceplatformene.
- Åbn din shop med
?roasaurus=connectedi adressen. En advarsel bekræfter, at scriptet kører. Med?roasaurus=debuglogger scriptet i browserkonsollen, hvad det sender. - I Event log skal sidevisninger under Collected events vise et besøgs-id.
- Læg en testordre. Efterkrav er det hurtigste, fordi ordren har status processing med det samme.
- På fanen Connection viser Last order received tidspunktet for den seneste ordre.
- I Event log får hver forbundne platform under Server deliveries en linje med status sent og platformens svar.
PageView visitor 3f9c2a1eScript indlæst med samtykkePurchase order-1042Takkeside, browserpixels udløstorder 1042 processingModtaget fra pluginetMeta Purchase sentSamme event-id, deduplikeretTikTok CompletePayment sentSamme event-id, deduplikeretFor at se eventet i Meta skal du indsætte koden fra Events Manager › Test events i feltet Test event code på din Meta-pixel i ROASaurus. Fjern den, når du er færdig, fordi koden kun er beregnet til test. Hvis pluginet ikke kan levere en ordre, tilføjer det en ordrenote i WooCommerce, der starter med »ROASaurus: order not sent«, efterfulgt af fejlen.
Fejl, du skal undgå
- Brug af emnet Order created. Ordrer, der betales via omdirigering, oprettes som pending payment. ROASaurus ignorerer ubetalte ordrer, og der følger ingen anden »created«-besked, når betalingen ankommer. Brug Order updated.
- En hemmelig nøgle, der ikke matcher. ROASaurus afviser en levering, hvis signatur ikke matcher den hemmelige nøgle, den har. Efter mere end fem fejl i træk deaktiverer WooCommerce webhooken. Ret den hemmelige nøgle, sæt webhooken tilbage til Active, og tilføj REST API-nøglen, så ordrer fra hullet bliver hentet.
- To værktøjer, der sender den samme pixel. Hvis et andet plugin også sender din Meta- eller TikTok-pixel, bruger det sine egne event-id'er, og platformen tæller hvert salg to gange. Slå det fra for den pixel. Se at undgå dobbelttælling og dobbelte købsevents.
- Forventer add-to-cart-events. På WooCommerce sporer scriptet kun sidevisninger af sig selv. Produktvisninger og tilføjelser til kurven registreres automatisk kun på Shopify. En udvikler kan sende dem med et
tlq-track-kald. - Forventer Google Ads-konverteringer. ROASaurus sender kun Google Ads-købskonverteringer fra Shopify-checkout. Fra WooCommerce sender den køb til Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn og de andre annonceplatforme, du forbinder.
- Forsinkede bankoverførsler. Meta accepterer server-events op til 7 dage efter eventtidspunktet. Pluginet sender ordren med den dato, den blev oprettet, så Meta afviser en overførsel, der bekræftes mere end 7 dage efter checkout. Ordrer, der ankommer via webhook eller REST API'et, bruger i stedet betalingsdatoen. Bemærk også, at takkesiden udløser browserkøbet ved checkout, før overførslen er betalt. Hvis betalingen bekræftes mere end 48 timer senere, kan Meta og TikTok ikke samle browser- og serverkopierne, og en overførsel, der aldrig betales, beholder sit browserkøb.
Når ordrerne begynder at komme ind, viser attributionsrapporterne, hvilke kampagner og annoncer de kom fra.
Kilder
- 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