Next Action Analyst

2026-08-31

Evento purchase GA4 non parte su WooCommerce: come trovare la causa e risolverla

Apri i report di GA4 e l'evento purchase è vuoto o quasi, mentre WooCommerce → Analisi → Ordini mostra ricavi reali ogni giorno. Le conversioni ci sono, ma Google Analytics 4 non le vede: è uno dei disallineamenti più frustranti perché il traffico e le sessioni sembrano normali, solo l'evento di acquisto manca.

Perché succede

Il mancato invio di purchase ha quasi sempre una di queste cause, in ordine di frequenza reale osservata su siti WooCommerce:

  1. Conflitto tra plugin GA4: hai più di un plugin/tag che tenta di inviare l'evento purchase (es. plugin GA4 nativo del tema, un plugin per GA4 dedicato, GTM configurato manualmente e magari anche il tracking integrato di un plugin di Facebook Pixel/Ads che scrive nel dataLayer con un formato diverso). Uno sovrascrive o blocca l'altro, oppure il trigger non si attiva perché aspetta un evento dataLayer che non arriva mai.
  2. Pagina "Order received" saltata per pagamenti esterni: se usi PayPal, Stripe Checkout esterno, bonifico gestito da bank redirect o qualsiasi gateway che porta il cliente fuori dal sito e poi lo fa tornare, l'ordine può essere marcato come completato senza che il browser carichi mai la pagina di conferma (thank you page) dove risiede il tag purchase. Se il redirect di ritorno fallisce o l'utente chiude la scheda dopo aver pagato su PayPal, GA4 non vede nulla perché il tag non si è mai attivato.
  3. transaction_id duplicato o mancante: se l'evento purchase viene sparato più volte con lo stesso ID (es. al refresh della thank you page, o perché sia il plugin GA4 che GTM lo inviano), GA4 può deduplicare correttamente e mostrare meno acquisti di quelli reali, dando l'illusione che "non parta". Se invece il transaction_id è vuoto o null, l'evento può arrivare ma non essere contato come purchase valido in alcuni report basati su questo parametro.
  4. Consent Mode che blocca l'evento: se hai attivato Consent Mode v2 (obbligatorio per l'EEA) e analytics_storage resta su "denied" perché il banner cookie non aggiorna correttamente il consenso, o perché il consenso viene chiesto dopo che l'utente ha già effettuato l'acquisto (tipico nei flussi con pagamento esterno), GA4 riceve l'evento in forma "cookieless ping" limitata o non lo associa a una sessione utile, e nei report normali sembra assente.

Fix, passo per passo

  1. Apri Google Tag Manager (o le impostazioni del plugin GA4 che usi) e verifica quanti tag/trigger inviano un evento con nome "purchase". Se ne trovi più di uno attivo sulla stessa pagina, disattiva tutti tranne uno e documenta quale resta attivo.
  2. Controlla in WooCommerce → Impostazioni → Pagamenti quali gateway sono attivi. Per ogni gateway che reindirizza fuori dal sito (PayPal Standard, alcuni gateway Stripe/Klarna in modalità redirect), verifica se il tag purchase è agganciato solo alla pagina "Order received" oppure anche a un evento server-side/webhook. Se è solo client-side sulla thank you page, valuta l'invio lato server via Measurement Protocol o l'uso del plugin GA4 che supporta l'invio via webhook WooCommerce all'evento "order completed/processing".
  3. Ispeziona il codice o la configurazione che genera il valore di transaction_id: deve corrispondere all'ID ordine WooCommerce (order ID) e deve essere presente una sola volta per ordine, non riprodotto ad ogni caricamento della pagina di conferma. Se usi GTM, controlla nel dataLayer che il valore non sia undefined.
  4. Verifica il tuo banner Consent Mode: apri il sito in incognito, controlla nella console che dopo l'accettazione dei cookie analytics_storage passi da "denied" a "granted" prima che il tag purchase si attivi. Se il consenso arriva dopo l'evento (es. utente torna da PayPal e il banner non si è ancora inizializzato), sposta l'inizializzazione del Consent Mode il più presto possibile nel head della pagina, prima del tag GA4.
  5. Fai un ordine di test reale (anche da 1€ o con un coupon al 100%) usando il gateway di pagamento più usato dai tuoi clienti, per replicare esattamente il flusso problematico.

Template di verifica da copiare

CHECKLIST DIAGNOSI PURCHASE GA4 + WOOCOMMERCE
[ ] Solo UN tag/trigger invia l'evento "purchase" (verificato in anteprima GTM)
[ ] Thank you page si carica SEMPRE dopo pagamento esterno (test con PayPal/Stripe redirect)
[ ] transaction_id = ID ordine WooCommerce, univoco, non vuoto
[ ] transaction_id NON si duplica al refresh della thank you page
[ ] analytics_storage = "granted" PRIMA dell'attivazione del tag purchase
[ ] Evento visibile in DebugView entro 60 secondi dall'ordine test
[ ] Parametri presenti nell'evento: transaction_id, value, currency, items
[ ] Valore "value" coincide con il totale ordine reale (IVA/spedizione incluse o escluse, come deciso)

Come verificare che ora funziona

Apri GA4 → Admin → DebugView, attiva l'estensione GA4 Debugger (o il parametro debug_mode) sul browser, poi completa un ordine di test usando lo stesso gateway di pagamento problematico. Devi vedere l'evento purchase apparire in tempo reale in DebugView con transaction_id, value e currency popolati correttamente. Ripeti il test anche in modalità incognito senza aver ancora accettato i cookie, per controllare cosa succede quando il consenso è negato: l'evento non deve bloccarsi silenziosamente, ma comportarsi secondo le regole di Consent Mode che hai impostato.

Una volta che il tracciamento è stabile, il problema successivo è trasformare quei dati in decisioni: Next Action Analyst prende gli export CSV delle tue campagne e degli ordini e li traduce in una lista di azioni prioritarie, così non devi incrociare a mano GA4 e WooCommerce ogni volta che qualcosa non torna.

Smetti di leggere dashboard. Inizia ad agire.
Next Action Analyst trasforma l'export delle tue campagne in una lista di modifiche da fare domani, in ordine di priorità — con i numeri che le giustificano.