- Il tracciamento server-side su WooCommerce invia ogni ordine pagato, a partire dai dati dell’ordine del negozio stesso, a Meta, TikTok e ad altre piattaforme pubblicitarie, così un acquisto viene contato anche quando il pixel del browser non scatta mai.
- ROASaurus considera pagato un ordine WooCommerce quando il suo stato è «in lavorazione» o «completato», il che include gli ordini con pagamento alla consegna e i bonifici bancari una volta che li confermi.
- Il plugin di ROASaurus salva il visitor id e i cookie del clic sull’annuncio su ogni ordine al checkout, così l’ordine viene collegato esattamente al proprio clic sull’annuncio.
- Senza il plugin, i webhook consegnano comunque ogni ordine pagato, ma non c’è l’associazione tramite la pagina di ringraziamento: gli ordini vengono collegati solo tramite un’email indicata in precedenza sul sito o tramite un indirizzo IP e un browser univoci.
- Su WooCommerce lo script di ROASaurus segue i plugin per il consenso che usano la WP Consent API, come Complianz e CookieYes, e i banner Cookiebot, OneTrust e IAB TCF.
Il tracciamento server-side su WooCommerce invia ogni ordine pagato, a partire dai dati dell’ordine del tuo negozio, a Meta, TikTok e ad altre piattaforme pubblicitarie, invece di affidarsi solo a un pixel nel browser dell’acquirente. L’acquisto viene registrato anche quando un ad blocker blocca il pixel o l’acquirente non arriva mai alla pagina di ringraziamento.
Questa guida spiega perché i negozi WooCommerce perdono conversioni, quali dati dell’ordine ti offre WooCommerce e i due modi per collegare ROASaurus: il plugin per WordPress o i webhook. Poi associazione, consenso, configurazione e test. Per l’idea generale, leggi cos’è il tracciamento server-side.
Perché i negozi WooCommerce perdono conversioni?
Un pixel del browser registra un acquisto solo se lo script del pixel si carica, l’acquirente arriva alla pagina di ringraziamento e il browser invia l’evento. Ogni passaggio può fallire. L’ordine in sé resta comunque nel tuo database, perché WooCommerce lo salva sul server.
| Cosa succede | Pixel del browser | I dati dell’ordine in WooCommerce |
|---|---|---|
| L’acquirente paga con un reindirizzamento (per esempio PayPal o un’app della banca) e chiude la scheda | Nessuna pagina di ringraziamento, nessun evento di acquisto | Ordine pagato, stato «in lavorazione» |
| Un ad blocker o un’impostazione della privacy blocca lo script del pixel | Nessun evento di acquisto | Ordine pagato |
| Il visitatore rifiuta i cookie di marketing | Il pixel non deve caricarsi | Ordine pagato |
| Un bonifico bancario viene confermato tre giorni dopo | In quel momento nessun browser è aperto | Lo stato passa da «in sospeso» a «in lavorazione» |
| Un plugin di cache o di ottimizzazione degli script ritarda il pixel | L’evento può arrivare in ritardo o mancare | Ordine pagato |
Gli acquisti mancanti fanno due tipi di danno. La piattaforma pubblicitaria ottimizza su meno conversioni e i tuoi report mostrano un ritorno più basso di quello reale. Ecco il secondo effetto in numeri, per un negozio di esempio con un ROAS di pareggio di 2.2:
| Negozio di esempio, un mese | Solo pixel | Ogni ordine pagato |
|---|---|---|
| Spesa pubblicitaria su Meta | $8,000 | $8,000 |
| Acquisti da clic su Meta | 260 | 320 |
| Ricavi a $60 per ordine | $15,600 | $19,200 |
| ROAS | 15,600 ÷ 8,000 = 1.95 | 19,200 ÷ 8,000 = 2.40 |
| Rispetto al pareggio (2.2) | Sembra una perdita | Redditizia |
Cosa ti offre WooCommerce: ordini, webhook e REST API
Quali stati dell’ordine contano come pagati?
WooCommerce descrive in lavorazione come pagamento ricevuto, con l’ordine in attesa di essere evaso. ROASaurus invia gli ordini con stato «in lavorazione» o «completato» e salta gli ordini «in attesa di pagamento», «in sospeso», «non riusciti», «annullati» e «rimborsati». Due metodi di pagamento richiedono attenzione:
- Pagamento alla consegna. WooCommerce imposta questi ordini su «in lavorazione» finché il pagamento non viene incassato, quindi ROASaurus li invia quando vengono effettuati. Fanno eccezione gli ordini con un prodotto scaricabile: vanno «in sospeso». Vedi come tracciare gli ordini con pagamento alla consegna per capire cosa significa per resi e rifiuti.
- Bonifico bancario. WooCommerce mette questi ordini «in sospeso» mentre verifichi il pagamento. ROASaurus li invia quando li sposti su «in lavorazione».
Webhook
Un webhook è un messaggio che WooCommerce invia a un altro sistema quando qualcosa cambia. Lo crei in WooCommerce › Settings › Advanced › Webhooks. Per un topic relativo agli ordini, il payload è lo stesso oggetto ordine che restituisce la REST API. Ogni consegna porta un header X-WC-Webhook-Signature: un hash HMAC-SHA256 in base64 del payload, creato con il segreto che scegli. ROASaurus controlla quella firma prima di accettare un ordine.
Due dettagli contano nella pratica. WooCommerce consegna i webhook in background, per impostazione predefinita con WP-Cron, quindi una consegna può subire ritardi quando quella coda è in ritardo. E WooCommerce disattiva un webhook dopo più di cinque consegne fallite di fila.
REST API
La REST API permette a ROASaurus di richiedere gli ordini da solo. Con una chiave API di sola lettura, ROASaurus chiede ogni 5 minuti gli ordini «in lavorazione» e «completati» modificati dall’ultimo controllo, con 30 minuti di sovrapposizione. Gli ordini che ha già vengono ignorati. In questo modo recupera qualsiasi ordine che un webhook abbia perso.
| Campo dell’ordine | Cosa ne fa ROASaurus |
|---|---|
id | Diventa l’event id order-1042, condiviso dagli eventi del server e del browser |
total | Il valore dell’acquisto: il totale complessivo, comprese imposte e spedizione |
| Email, telefono, nome, città, stato, CAP e paese di fatturazione | Hash con SHA-256 e inviati come dati del cliente |
customer_ip_address, customer_user_agent | Inviati con l’evento e usati per associare l’ordine a un visitatore |
line_items | Id dei prodotti (l’id della variante quando c’è), quantità e prezzi |
date_paid_gmt | L’orario dell’evento per gli ordini che arrivano da un webhook o dalla REST API (la data di creazione quando manca la data di pagamento) |
meta_data | Con il plugin: il visitor id e i cookie di Meta e TikTok |
Plugin o webhook: due modi per collegarsi
Entrambi i collegamenti inviano ogni ordine pagato. Si differenziano per quanto bene ciascun ordine viene collegato al clic sull’annuncio che ha portato l’acquirente.
| Plugin ROASaurus | Solo webhook | |
|---|---|---|
| Cosa installi | Un plugin per WordPress (PHP 7.4 e WooCommerce 6.0 o successivi) | Niente: un webhook nelle impostazioni di WooCommerce |
| Come arrivano gli ordini | Il plugin invia ogni ordine pagato all’API degli ordini di ROASaurus | WooCommerce invia Order updated; controllo facoltativo tramite REST API ogni 5 minuti |
| Script di tracciamento | Caricato dal plugin su ogni pagina | Lo aggiungi tu, per esempio con il plugin WPCode o nel tuo tema |
| Visitor id e cookie dei clic sull’ordine | Sì, salvati al checkout (checkout classico e a blocchi) | No |
| Acquisto del browser sulla pagina di ringraziamento | Sì, con lo stesso event id dell’evento server | No |
| Associazione tramite la pagina di ringraziamento | Sì | No |
Puoi usarli entrambi contemporaneamente. Il plugin salva il visitor id sull’ordine come meta dati dell’ordine, e il payload del webhook lo porta con sé. ROASaurus salva ogni ordine una sola volta, in base al suo id ordine di WooCommerce, quindi il plugin e il webhook non creano mai due acquisti. Il plugin dichiara inoltre il supporto per l’High-Performance Order Storage di WooCommerce.
Come viene associato un ordine WooCommerce al clic sull’annuncio?
Una piattaforma pubblicitaria può attribuire un acquisto a un annuncio solo se riesce a collegare i due. ROASaurus lo fa collegando l’ordine al visitatore che ha cliccato l’annuncio, e quel visitatore porta con sé i click id (come fbclid e ttclid) e i parametri UTM della pagina di atterraggio. Prova questi metodi in ordine e si ferma al primo che funziona:
- Il visitor id salvato sull’ordine. Solo con il plugin. È un collegamento esatto.
- L’acquisto del browser sulla pagina di ringraziamento, che porta lo stesso id ordine. Solo con il plugin.
- Un’email con hash che il visitatore ha fornito in precedenza sul tuo sito, per esempio in un modulo popup di Klaviyo, Attentive o Wisepops, oppure tramite una chiamata Identify.
- Lo stesso indirizzo IP e lo stesso browser, visti da 3 ore prima a 15 minuti dopo l’ordine, ma solo quando corrisponde esattamente un visitatore. Sulle reti condivise, come uffici e operatori mobili, spesso più visitatori condividono un solo indirizzo IP, e in quel caso ROASaurus non tira a indovinare.
ROASaurus attende un breve momento prima di inviare ogni acquisto, così l’evento della pagina di ringraziamento può arrivare per primo. Se l’ordine risulta ancora non associato, riprova al momento dell’invio. La pagina Orders mostra il risultato per ogni ordine nella colonna Matched by. Gli ordini collegati tramite il visitor id del plugin mostrano cart, la stessa etichetta che ricevono gli ordini Shopify.
| Inviato a Meta per l’ordine 1042 | Associato (plugin) | Non associato (solo webhook) |
|---|---|---|
Event id order-1042 | Sì | Sì |
| Email, telefono, nome e indirizzo con hash | Sì | Sì |
| Indirizzo IP e browser dell’ordine | Sì | Sì |
Click id di Meta e ID browser (fbc, fbp) | Sì | No |
Visitor id con hash (external_id) | Sì | No |
| Il clic sull’annuncio nell’attribuzione di ROASaurus | Campagna e annuncio del clic | Mostrato come diretto o sconosciuto |
Questi identificatori del clic aumentano il tasso di corrispondenza di Meta per l’evento. Event Match Quality spiega come Meta li valuta.
Il consenso su WooCommerce
Ogni negozio in ROASaurus ha l’impostazione Respect visitor consent, attiva per impostazione predefinita. Su WooCommerce, lo script di ROASaurus legge la scelta del visitatore dalla WP Consent API, che i plugin per il consenso come Complianz e CookieYes compilano. Legge anche i banner Cookiebot, OneTrust, IAB TCF e Google consent mode. Finché il visitatore non accetta i cookie di marketing, lo script non assegna alcun visitor id e non carica pixel del browser.
Quando un visitatore rifiuta, lo script non assegna alcun visitor id, non conserva click id e non fa scattare pixel del browser, e il plugin non salva cookie di tracciamento nell’ordine. L’ordine pagato viene comunque inviato dal server alle tue piattaforme pubblicitarie collegate, con i dati del cliente sottoposti ad hash presi dall’ordine e con l’indirizzo IP e il browser dell’ordine. Se il tuo parere legale indica che anche gli eventi di acquisto richiedono un consenso preventivo, contatta ROASaurus prima di attivare gli acquisti server-side. La pagina di aiuto sul consenso ha i dettagli, e l’articolo su Consent Mode v2 e GDPR tratta il contesto legale.
Come configurare il tracciamento server-side su WooCommerce
Ecco i passaggi per la configurazione con il plugin:
- Aggiungi il negozio
In ROASaurus vai su Add a store, scegli WooCommerce e inserisci il dominio che visitano i tuoi clienti.
- Crea una chiave API
Apri Store settings e, sotto Orders API, clicca su Create API key. Copia subito la chiave: viene mostrata una sola volta, accanto alla chiave del tuo negozio. L’endpoint è l’indirizzo che precede
/api/v1/ordersin quella pagina. - Installa il plugin
Scarica il plugin e carica il file zip in WordPress da Plugins › Add New Plugin › Upload Plugin, poi attivalo.
- Inserisci le chiavi
In WooCommerce › ROASaurus inserisci l’endpoint, la chiave del negozio e la chiave API, poi salva.
- Collega le tue piattaforme pubblicitarie
In Tracking & platforms usa Connect with Facebook o Add pixel per Meta, TikTok e le altre. Spunta l’opzione per caricare anche il pixel del browser, così l’acquisto sulla pagina di ringraziamento viene deduplicato con l’evento server.
- Configura il consenso e testa
Blocca lo script nel tuo strumento per il consenso finché il visitatore non accetta i cookie di marketing, poi effettua un ordine di prova.
Senza il plugin, aggiungi a ogni pagina il tag dello script da Tracking & platforms, poi crea il webhook. La scheda Connection del tuo negozio mostra l’URL del tuo webhook. Tienilo riservato: chiunque abbia l’URL può inviare ordini al tuo negozio.
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
Per il backup, crea una chiave in WooCommerce › Settings › Advanced › REST API con accesso in lettura. Incolla la consumer key e il secret nella scheda Connection, salva e premi Test connection. Fetch orders now recupera subito gli ordini pagati recenti. La pagina dell’integrazione WooCommerce elenca tutte le opzioni in un unico posto.
Come si testa il tracciamento server-side su WooCommerce?
Testa prima il lato browser, poi effettua un ordine e seguilo fino alle piattaforme pubblicitarie.
- Apri il tuo negozio con
?roasaurus=connectednell’indirizzo. Un avviso conferma che lo script è in esecuzione. Con?roasaurus=debug, lo script scrive nella console del browser ciò che invia. - Nell’Event log, sotto Collected events, le visualizzazioni di pagina dovrebbero mostrare un visitor id.
- Effettua un ordine di prova. Il pagamento alla consegna è il più rapido, perché l’ordine passa subito «in lavorazione».
- Nella scheda Connection, Last order received mostra l’orario dell’ultimo ordine.
- Nell’Event log, sotto Server deliveries, ogni piattaforma collegata ha una riga con lo stato sent e la risposta della piattaforma.
PageView visitor 3f9c2a1eScript caricato con il consensoPurchase order-1042Pagina di ringraziamento, pixel del browser attivatiorder 1042 processingRicevuto dal pluginMeta Purchase sentStesso event id, deduplicatoTikTok CompletePayment sentStesso event id, deduplicatoPer vedere l’evento in Meta, incolla il codice di Events Manager › Test events nel campo Test event code del tuo pixel Meta in ROASaurus. Rimuovilo quando hai finito, perché il codice serve solo per i test. Se il plugin non riesce a consegnare un ordine, aggiunge in WooCommerce una nota all’ordine che inizia con «ROASaurus: order not sent», seguita dall’errore.
Errori da evitare
- Usare il topic Order created. Gli ordini pagati con reindirizzamento vengono creati come in attesa di pagamento. ROASaurus ignora gli ordini non pagati, e quando il pagamento arriva non segue alcun secondo messaggio «created». Usa Order updated.
- Un secret che non corrisponde. ROASaurus rifiuta una consegna la cui firma non corrisponde al secret che ha. Dopo più di cinque errori di fila, WooCommerce disattiva il webhook. Correggi il secret, riporta il webhook su Active e aggiungi la chiave REST API, così gli ordini del periodo scoperto vengono recuperati.
- Due strumenti che inviano lo stesso pixel. Se un altro plugin invia anch’esso il tuo pixel Meta o TikTok, usa i propri event id e la piattaforma conta ogni vendita due volte. Disattivalo per quel pixel. Vedi come evitare il doppio conteggio e eventi di acquisto duplicati.
- Aspettarsi eventi di aggiunta al carrello. Su WooCommerce lo script traccia da solo le visualizzazioni di pagina. Le visualizzazioni di prodotto e le aggiunte al carrello vengono rilevate automaticamente solo su Shopify. Uno sviluppatore può inviarle con una chiamata di tracciamento
tlq. - Aspettarsi conversioni di Google Ads. ROASaurus invia le conversioni di acquisto di Google Ads solo dal checkout di Shopify. Da WooCommerce invia gli acquisti a Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn e alle altre piattaforme pubblicitarie che colleghi.
- Bonifici in ritardo. Meta accetta gli eventi server fino a 7 giorni dopo l’orario dell’evento. Il plugin invia l’ordine con la data in cui è stato creato, quindi Meta rifiuta un bonifico confermato più di 7 giorni dopo il checkout. Gli ordini che arrivano tramite webhook o REST API usano invece la data di pagamento. Tieni presente anche che la pagina di ringraziamento attiva l’acquisto del browser al checkout, prima che il bonifico sia pagato. Se il pagamento viene confermato oltre 48 ore dopo, Meta e TikTok non riescono a unire le copie del browser e del server, e un bonifico che non viene mai pagato mantiene il proprio acquisto del browser.
Quando gli ordini iniziano ad arrivare, i report di attribuzione mostrano da quali campagne e da quali annunci provengono.
Fonti
- 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