- I pixel del browser perdono gli ordini che si concludono fuori dal checkout normale, come i moduli per il pagamento alla consegna, i checkout esterni, i moduli d’ordine e i funnel.
- Un ordine con pagamento alla consegna resta non pagato finché il corriere non incassa il contante, quindi una configurazione che invia gli acquisti al pagamento li riporta in ritardo o mai.
- Meta rifiuta gli eventi con un orario più vecchio di oltre 7 giorni, quindi la maggior parte dei negozi con pagamento alla consegna dovrebbe inviare l’acquisto quando l’ordine viene creato o confermato.
- Gli ordini rifiutati restano in Ads Manager, quindi dividi il tuo ROAS di pareggio per la quota di ordini che vengono pagati.
- In ROASaurus, scegli External / COD checkout in Store settings per inviare gli acquisti Shopify quando l’ordine viene creato.
Il tracciamento delle conversioni con pagamento alla consegna significa inviare ogni acquisto alle tue piattaforme pubblicitarie dall’ordine stesso, sul server, invece di affidarsi a un pixel del browser su una pagina di ringraziamento. Gli ordini delle app per il pagamento alla consegna, dei checkout esterni, dei moduli d’ordine e dei funnel spesso si concludono fuori dal checkout normale, quindi il pixel li perde o li riporta nel momento sbagliato.
Questa guida spiega perché quegli ordini vanno persi e perché lo stato del pagamento conta. Confronta tre momenti per inviare l’acquisto: quando l’ordine viene creato, quando viene confermato e quando viene pagato. Tratta anche gli ordini rifiutati e i rimborsi, e come ROASaurus gestisce i checkout esterni.
Perché i pixel perdono gli ordini con pagamento alla consegna?
Un pixel del browser riporta un acquisto quando l’acquirente raggiunge una pagina che lo esegue. Di solito è la pagina di ringraziamento del tuo checkout. Ogni percorso d’ordine che salta questa pagina, o la esegue su un altro dominio, perde l’evento di acquisto o il clic sull’annuncio che gli appartiene.
| Percorso dell’ordine | Dove si conclude l’ordine | Cosa va storto con un pixel del browser |
|---|---|---|
| App con modulo per il pagamento alla consegna | Un modulo sulla pagina del prodotto; è l’app a creare l’ordine | Il checkout del negozio non viene mai eseguito, quindi il suo evento di acquisto non scatta mai |
| Checkout esterno | Un checkout gestito da un’altra app, spesso su un altro dominio | Il tuo pixel potrebbe non caricarsi lì, e i cookie del clic sull’annuncio restano sul dominio del tuo negozio |
| Modulo d’ordine o ordine manuale | Un modulo, una chat o una telefonata; lo staff inserisce l’ordine | Non c’è nessuna sessione del browser che un pixel possa vedere |
| Funnel con checkout proprio | Un costruttore di landing page su un dominio proprio | Il clic sull’annuncio è su un dominio e l’acquisto su un altro |
L’ordine in sé non va mai perso. Finisce nel tuo negozio online o nel tuo strumento per funnel con un order id, un importo, un indirizzo email e spesso un numero di telefono. Per questo la soluzione affidabile è inviare l’acquisto dai dati dell’ordine, server-side, e portare con sé il clic sull’annuncio fino all’ordine. Il tracciamento server-side su Shopify spiega il metodo generale. Questo articolo tratta gli ordini che richiedono più attenzione.
Alcune app per il pagamento alla consegna fanno scattare anche i propri eventi del pixel. Se usano lo stesso pixel del tuo tracciamento server-side ma con un event id diverso, la piattaforma conta l’ordine due volte. Disattiva quegli eventi dell’app, oppure segui i passaggi per evitare il doppio conteggio.
Perché lo stato del pagamento conta
Un pagamento con carta viene incassato nel checkout, quindi l’ordine è pagato nel momento in cui esiste. Un ordine con pagamento alla consegna è diverso. Shopify elenca il pagamento alla consegna come metodo di pagamento manuale, e questi ordini restano in Payment pending finché non li segni come pagati. In pratica succede dopo che il corriere incassa il contante, e può volerci qualche giorno. Alcuni ordini non vengono mai pagati, perché l’acquirente rifiuta il pacco o non è a casa.
Molte configurazioni di tracciamento inviano l’acquisto quando l’ordine è pagato, perché per gli ordini con carta è il momento più sicuro. Per un ordine con pagamento alla consegna, la stessa regola significa che l’acquisto arriva con giorni di ritardo o non arriva mai. Il log qui sotto mostra un caso tipico in un negozio che invia gli acquisti al pagamento.
14 Oct 10:02 orders/create #4821 $50.00Ordine effettuato con pagamento alla consegna, pagamento in sospeso14 Oct 10:02 PurchaseNon inviato: questo negozio invia gli acquisti quando sono pagati16 Oct 09:40 #4821 shippedPacco consegnato al corriere22 Oct 15:12 orders/paid #4821Segnato come pagato dopo il versamento del corriere22 Oct 15:12 Purchase event_time=14 OctRifiutato: l’orario dell’evento è più vecchio di oltre 7 giorniWooCommerce funziona al contrario. Imposta gli ordini con pagamento alla consegna su Processing finché il pagamento non viene incassato, tranne gli ordini con un prodotto scaricabile, che vanno su On hold. Una configurazione che invia gli ordini in Processing li invia quindi appena vengono effettuati. Controlla quale stato assegna la tua piattaforma a questi ordini prima di decidere qualsiasi altra cosa.
Creato, confermato o pagato: quando conviene inviare l’acquisto?
Ci sono tre momenti tra cui scegliere. Ognuno scambia velocità con accuratezza.
| Invia l’acquisto quando l’ordine è | Ritardo tipico dopo l’ordine | Include gli ordini mai pagati | Rischio principale |
|---|---|---|---|
| Creato | Secondi | Sì: rifiuti e ordini falsi | Ads Manager mostra più ricavi di quelli che incassi |
| Confermato dal tuo team, per telefono o messaggio | Da qualche ora a un giorno | Solo i rifiuti | Serve un passaggio di conferma che possa far scattare l’evento |
| Pagato o consegnato | Da giorni a settimane | No | In ritardo o perso: il clic sull’annuncio cade fuori dalla finestra di attribuzione, oppure l’evento viene rifiutato |
Perché gli eventi di acquisto in ritardo sono un problema
Le piattaforme pubblicitarie attribuiscono un acquisto a un annuncio solo se avviene dentro la finestra di attribuzione dopo il clic. Con un’impostazione di attribuzione sul clic a 7 giorni su Meta, un acquisto conta per un annuncio fino a 7 giorni dopo il clic. Inoltre la Conversions API di Meta rifiuta gli eventi il cui event_time è più vecchio di oltre 7 giorni, e respinge l’intera richiesta se anche un solo evento è troppo vecchio. Un acquisto inviato al pagamento ha quindi due brutte opzioni:
- Inviarlo con l’orario dell’ordine. Se il pagamento è arrivato più di 7 giorni dopo, Meta lo rifiuta.
- Inviarlo con l’orario del pagamento. Meta lo accetta, ma il clic sull’annuncio potrebbe ormai avere più di 7 giorni, quindi l’acquisto non viene attribuito all’annuncio.
La velocità conta anche per l’ottimizzazione. Le campagne che ottimizzano per gli acquisti imparano dagli acquisti che invii. Un segnale che arriva con una settimana di ritardo racconta all’algoritmo il pubblico della settimana scorsa.
Quale momento scegliere
Per la maggior parte dei negozi con pagamento alla consegna, inviare alla creazione è la scelta predefinita migliore. Il segnale è immediato, il clic è ancora dentro la finestra e nulla viene rifiutato. Il costo è che gli ordini rifiutati contano come acquisti in Ads Manager. Lo correggi nei tuoi obiettivi, come mostra la sezione successiva.
Se il tuo team conferma ogni ordine per telefono o messaggio prima della spedizione, la conferma è un buon compromesso. Elimina gli ordini falsi e di solito avviene entro un giorno. Usala quando il tuo sistema può inviare l’acquisto in quel momento, per esempio tramite un’API. Gli ordini falsi contano più di quanto sembri: se la piattaforma pubblicitaria impara da loro, cerca altre persone che fanno ordini e non pagano.
Come gestire ordini rifiutati, annullamenti e rimborsi
Una volta inviato, un acquisto resta in Ads Manager. Un pacco rifiutato alla consegna non lo elimina. Nemmeno ROASaurus invia rimborsi o annullamenti a Meta, TikTok e alla maggior parte delle altre piattaforme pubblicitarie, quindi i ricavi che segnalano includono ordini che non hai mai incassato. Solo i valori di Google Ads e Microsoft Advertising possono essere corretti dopo un rimborso, quando le correzioni del valore sono attive. La soluzione è misurare il tuo tasso di rifiuto e correggere i numeri con cui fai il confronto.
Ecco un esempio svolto su un mese. Per semplicità, i prezzi sono senza IVA.
| Voce | Importo |
|---|---|
| Ordini inviati a Meta alla creazione | 200 ordini × $50 = $10,000 |
| Rifiutati alla porta (18%) | 36 ordini, $1,800 |
| Consegnati e pagati | 164 ordini, $8,200 |
| Costo del prodotto degli ordini consegnati (30%) | −$2,460 |
| Spedizione di tutti i 200 pacchi a $6 | −$1,200 |
| Spedizione di ritorno di 36 pacchi rifiutati a $6 | −$216 |
| Commissione per l’incasso del contante, $1.50 per ordine pagato | −$246 |
| Gestione, $1 per ordine | −$200 |
| Utile lordo | $3,878 |
Con $3,000 di spesa pubblicitaria, lo stesso mese appare molto diverso a seconda dei ricavi che usi:
Il tasso di margine lordo sui ricavi consegnati è $3,878 ÷ $8,200 = 47.3%, quindi il ROAS di pareggio è 1 ÷ 0.473 = 2.11. Questo pareggio vale per i ricavi consegnati. Ads Manager conta anche gli ordini rifiutati, quindi devi convertirlo prima di confrontare. Il ROAS di pareggio spiega la formula di base.
- ROAS di pareggio
- 1 ÷ tasso di margine lordo, calcolato solo sugli ordini pagati.
- Tasso di pagamento
- La quota di ordini che vengono pagati, per esempio l’82% quando il 18% viene rifiutato.
2.114 ÷ 0.82 = 2.58. Una campagna che in Ads Manager mostra meno di 2.58 perde, anche se sembra ben sopra 2.11.
Puoi verificare il risultato direttamente. Gli annunci vanno in pareggio quando la spesa pubblicitaria è uguale all’utile lordo di $3,878, e $10,000 di ricavi riportati ÷ $3,878 = 2.58.
I tassi di rifiuto spesso differiscono per regione, prodotto e campagna. Calcolali per campagna quando hai abbastanza ordini, e usa il calcolatore del POAS per controllare il risultato sull’utile lordo.
Rimborsi e annullamenti nei tuoi numeri
Su Shopify, annullamenti e rimborsi arrivano a ROASaurus tramite webhook, quindi l’analisi del profitto detrae i rimborsi dai ricavi. Scegli tu se contare gli ordini annullati che non sono mai stati evasi, e per impostazione predefinita restano esclusi. Un ordine annullato che era già stato spedito resta dentro, perché la sua spedizione ti è comunque costata. Per gli ordini recenti che potrebbero ancora tornare indietro, l’impostazione Predicted returns trattiene una quota prevista di vendite finché non arrivano i rimborsi reali.
Come ROASaurus gestisce il pagamento alla consegna e i checkout esterni
Shopify
Ogni negozio Shopify ha un Checkout type in Store settings, con due opzioni:
- Shopify checkout: l’acquisto viene inviato quando Shopify segnala l’ordine come pagato, tramite il webhook
orders/paid. - External / COD checkout: l’acquisto viene inviato quando l’ordine viene creato, tramite il webhook
orders/create. Usalo per il pagamento alla consegna e per i checkout esterni, come CheckoutChamp o Checkify, che creano da soli l’ordine Shopify.
L’impostazione vale per ogni ordine del negozio. Gli ordini con carta, pagati nel checkout, vengono creati e pagati quasi nello stesso momento, quindi la scelta cambia soprattutto quando vengono inviati gli ordini non pagati. Ogni ordine viene inviato una sola volta. Quando arriva più tardi l’aggiornamento di pagamento di un ordine con pagamento alla consegna, non viene inviato un secondo acquisto.
L’acquisto usa i dati dell’ordine stesso: l’importo, la valuta, i prodotti, e l’email, il telefono e l’indirizzo dell’acquirente, sottoposti ad hash prima di uscire. ROASaurus associa l’ordine al clic sull’annuncio tramite il visitor id che il suo script salva sul carrello. Quando un ordine non lo porta con sé, ROASaurus prova, in questo ordine: i token del carrello e del checkout, l’evento di acquisto del checkout, un’email che il visitatore ha lasciato in precedenza sul tuo sito, e lo stesso indirizzo IP e lo stesso browser poco prima dell’ordine, quando corrisponde esattamente un solo visitatore. La pagina dell’integrazione con Shopify contiene la configurazione completa.
WooCommerce e altri negozi online
Il plugin WooCommerce invia un ordine quando raggiunge Processing o Completed. Gli ordini con pagamento alla consegna raggiungono Processing quando vengono effettuati, quindi vengono inviati subito. Gli ordini con bonifico bancario vengono inviati quando passano a Processing. Gli altri connettori per negozi online inviano un ordine in questi momenti:
- Wix, Squarespace, Ecwid, Lightspeed, CCV Shop e Shopware: quando lo stato di pagamento dell’ordine è pagato.
- BigCommerce: quando l’ordine raggiunge uno stato come Awaiting Fulfillment, Awaiting Shipment, Shipped o Completed.
- Magento: quando lo stato dell’ordine è Processing o Complete.
- PrestaShop: quando l’ordine è segnato come valido.
- Webhook personalizzato e API degli ordini: quando è il tuo sistema a inviare l’ordine.
Controlla come la tua piattaforma segna gli ordini con pagamento alla consegna. Se restano non pagati finché il corriere non versa l’incasso, i loro acquisti arrivano in ritardo.
Funnel e checkout proprio
- Aggiungi lo script alle pagine del funnel
Usa la stessa store key del tuo negozio online, così un visitatore mantiene un solo visitor id su entrambi i domini.
- Elenca i tuoi domini
In Store settings, aggiungi i domini del funnel e del negozio sotto Linked domains. I link tra quei domini portano poi con sé il visitor id e i click id.
- Invia gli ordini tramite l’API degli ordini
Se è il funnel a prendere l’ordine, invia ogni ordine a
/api/v1/orderscon il cookie_tlcomevisitor_id. È il tuo sistema a decidere il momento: alla creazione, alla conferma o al pagamento. - Controlla l’Event log
Quando arrivano i primi ordini reali, apri l’Event log e controlla che ognuno sia stato inviato a ogni piattaforma collegata.
POST /api/v1/orders
X-Roasaurus-Key: <store key>
Authorization: Bearer <API key>
Content-Type: application/json
{
"order_id": "F-20931",
"created_at": "2026-10-20T14:05:00Z",
"total": 50.00,
"currency": "USD",
"email": "buyer@example.com",
"phone": "+15555550123",
"country": "US",
"visitor_id": "<value of the _tl cookie>",
"click_ids": { "fbc": "<_fbc cookie>", "fbp": "<_fbp cookie>" },
"client_ip": "203.0.113.7",
"user_agent": "Mozilla/5.0 ...",
"items": [{ "variant_id": "SKU1", "quantity": 1, "price": 50.00 }]
}L’API degli ordini conserva la prima copia di ogni order id. Se il tuo sistema la chiama alla creazione e di nuovo al pagamento, solo la prima chiamata invia un acquisto. Più dettagli in funnel e domini multipli.
Errori comuni da evitare
- Aspettare lo stato pagato in un negozio con pagamento alla consegna. Gli acquisti arrivano con una settimana di ritardo o non arrivano affatto, e gli eventi in ritardo vengono rifiutati o cadono fuori dalla finestra di attribuzione.
- Confrontare il ROAS di Ads Manager con un pareggio calcolato sugli ordini pagati. Dividi prima il pareggio per il tuo tasso di pagamento.
- Due fonti per un solo acquisto. Il pixel di un’app con modulo e i tuoi eventi server contano lo stesso ordine due volte. Vedi eventi di acquisto duplicati.
- Perdere il clic tra un dominio e l’altro. Un funnel su un altro dominio ha bisogno dello script e dei domini collegati, altrimenti i suoi ordini arrivano senza un clic sull’annuncio.
- Lasciare fuori gli ordini manuali. Gli ordini per telefono e in chat non hanno una sessione del browser, ma hanno comunque un indirizzo email o un numero di telefono. Inviati dai dati dell’ordine, danno alla piattaforma pubblicitaria qualcosa con cui fare l’associazione.
Fonti
- Meta for Developers: Server Event Parameters
- Shopify: WebhookSubscriptionTopic (GraphQL Admin API)
- Shopify Help Center: Manual payment methods
- Shopify Help Center: Understanding your order statuses
- WooCommerce: Cash on Delivery documentation
In ROASaurus
- Integrazione Shopify
- Integrazione WooCommerce
- Assistenza: funnel e più domini
- Analisi del profitto in ROASaurus