Hai un e-commerce, guardi i report di GA4 e i dati non combaciano con le vendite reali. Succede più spesso di quanto si creda. Noi lo vediamo ogni volta che prendiamo in mano un progetto già avviato: eventi doppi, purchase senza valore, sessioni perse. Il problema non è GA4. È il modo in cui lo hai configurato.
Perché il tracciamento e-commerce in GA4 è diverso da Universal Analytics?
Universal Analytics era a sessioni e hit. GA4 è a eventi e parametri. In UA l'enhanced e-commerce era un plugin: dovevi inviare un array dataLayer.push con la struttura ecommerce e GA lo interpretava. In GA4 non esiste più un oggetto ecommerce predefinito. Ogni interazione è un evento con parametri specifici: purchase, add_to_cart, view_item, ecc.
Questo cambiamento ha due conseguenze concrete:
- Devi mappare tu gli eventi nel tag di Google Tag Manager o direttamente via gtag. Non c’è più la magia dell’oggetto pronto.
- I parametri devono essere normalizzati — GA4 accetta solo determinati nomi per item_id, item_name, price, quantity. Se usi chiavi custom, il dato non viene popolato.
Noi, di Meteora Web, abbiamo gestito il sistema ERP di un negozio di abbigliamento dall’interno: marginalità, magazzino, season. Per questo sappiamo che se il dato di acquisto non arriva pulito a GA4, le analisi successive (ROAS, LTV, performance prodotto) sono aria fritta.
Sponsored Protocol
Quali sono gli eventi essenziali per enhanced e-commerce in GA4?
GA4 definisce una serie di eventi consigliati per l’e-commerce. Non sono obbligatori, ma se non li usi, perdi la maggior parte dei report predefiniti (come la canalizzazione acquisti, la vista prodotto, le prestazioni per articolo).
Gli eventi principali sono:
view_item— quando un utente visualizza la pagina prodotto.add_to_cart— quando aggiunge al carrello.remove_from_cart— quando rimuove.begin_checkout— inizio checkout.add_shipping_info— se hai step di spedizione.add_payment_info— se hai step di pagamento.purchase— acquisto completato.
Per ogni evento devi inviare una lista di item (array) con almeno: item_id, item_name, price, quantity. Altri campi come item_category, item_brand, discount sono opzionali ma arricchiscono i report.
Sponsored Protocol
Come implementare il purchase event con Google Tag Manager?
La maggior parte degli errori nasce qui. Vediamo il metodo pulito: push del dataLayer nella pagina di conferma ordine.
Supponiamo che il tuo backend (PHP, Laravel, Node, ecc.) stampi un JavaScript con i dati dell’ordine appena processato. Scriviamo il dataLayer.push per il purchase:
dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: 'ORD-2026-12345',
value: 149.99,
currency: 'EUR',
items: [
{
item_id: 'SKU-1234',
item_name: 'Maglione in lana merino',
item_category: 'Abbigliamento/Maglieria',
price: 79.99,
quantity: 2
},
{
item_id: 'SKU-5678',
item_name: 'Cappello di lana',
item_category: 'Accessori/Cappelli',
price: 29.99,
quantity: 1
}
]
}
});
Attenzione ai nomi dei campi: GA4 richiede transaction_id (stringa univoca), value (numero — tot. ordine), currency (ISO 4217, es. 'EUR'). items è un array di oggetti. Anche se invii un solo prodotto, deve sempre essere un array.
Sponsored Protocol
Poi in GTM crei un tag Google Analytics 4 – Evento GA4, innescato da un trigger personalizzato che ascolta l’evento 'purchase'. Nel tag dai all'evento il nome purchase e leggi i parametri dallo stesso dataLayer.
Come evitare l’invio duplicato del purchase?
Errore comune: l’utente ricarica la pagina di conferma e l’evento parte di nuovo. Soluzioni:
- Imposta una variabile di sessione o un flag nel database che segna l’ordine già tracciato. Se il dato è già presente, non stampi il dataLayer.
- Usa un cookie temporaneo nel browser che impedisce il push successivo quando la pagina viene ricaricata.
- In GTM, spunta “Una volta per pagina” sul trigger. Non basta se la pagina è cacheata? Meglio una variabile nel backend.
Come verificare che il tracciamento funzioni con DebugView e BigQuery?
Non fidarti dei report standard dopo aver implementato. Usa DebugView di GA4: attiva la modalità preview da GTM, esegui un acquisto di test e controlla che l'evento purchase appaia con tutti i parametri. Verifica: transaction_id è presente? value è numerico? items contiene array non vuoto?
Sponsored Protocol
Se hai BigQuery collegato a GA4 (opzione avanzata ma potente), puoi fare una query diretta:
SELECT
event_name,
event_params.value.string_value AS transaction_id,
event_params.value.double_value AS revenue
FROM `your-project.analytics_123456789.events_*`
CROSS JOIN UNNEST(event_params) AS event_params
WHERE event_name = 'purchase'
AND event_params.key = 'transaction_id'
LIMIT 10;
Se il risultato è vuoto o i parametri sono null, c’è un problema di implementazione.
Noi, di Meteora Web, abbiamo un cliente e-commerce che aveva immagini da diversi MB: ottimizzandole abbiamo ridotto il peso del 60% senza perdita di qualità. Il sito è volato in velocità. Ma il vero problema era il purchase tracking: inviava value come stringa e GA4 lo ignorava. DebugView ha risolto in 10 minuti.
Cosa fare adesso
Non serve essere un esperto di analytics per avere il tracciamento corretto. Segui questi passaggi:
Sponsored Protocol
- Controlla la pagina di conferma ordine del tuo e-commerce. Il backend stampa un dataLayer con
purchasee i parametri giusti? In caso contrario, fallo aggiungere dal tuo sviluppatore. - Configura un tag GA4 event in GTM per l'evento purchase. Usa il trigger “Custom Event” con nome 'purchase'.
- Testa con DebugView facendo un acquisto reale (usando un coupon 100% sconto se non vuoi spendere).
- Impedisci il doppio invio lato server: quando l’ordine è già stato tracciato, non reinserire il dataLayer.
- Se vuoi la massima affidabilità, attiva l’export in BigQuery e verifica con SQL. Costa pochi euro al mese e ti dà il controllo totale.
Un sito si misura in fatturato, non in complimenti. Se il tuo GA4 non sa quanti vendi, non sai se stai guadagnando o perdendo. Partiamo da qui.
Per approfondire l’intero ecosistema GA4, leggi la nostra guida pillar: Google Analytics 4 Completo — dal setup ai report avanzati.
Vedi anche: Embeddings per Search Semantica — se vuoi arricchire i tuoi dati e-commerce con ricerca basata su significato.