2026-07-20
GTM e Contact Form 7 su GA4: invii che risultano (not set) o non arrivano affatto
Apri GA4 e cerchi le conversioni dei form, ma trovi solo eventi generici o righe con (not set) al posto del nome del modulo. Oppure, peggio, l'invio di Contact Form 7 non compare proprio da nessuna parte, nemmeno come evento generico. Se hai già provato a seguire tre thread diversi su forum vecchi di anni senza risultato, il problema è quasi sempre nella catena GTM: listener mancante, trigger configurato sull'evento sbagliato o tag GA4 senza i parametri giusti.
Perché succede
- Manca il listener JavaScript per l'evento wpcf7mailsent. CF7 non genera automaticamente un evento leggibile da GTM: serve uno snippet che intercetti
wpcf7mailsente lo spinga nel dataLayer. Senza questo passaggio, GTM non vede nulla. - Il Trigger in GTM è impostato su "Form Submission" nativo invece che su un Custom Event. Il trigger integrato di GTM per i form spesso non intercetta le submission AJAX di CF7 (il plugin non fa un vero page reload/form submit HTML standard), quindi il trigger non si attiva mai.
- Il tag GA4 Event non ha i parametri corretti o punta a un nome evento generico. Se il tag GA4 usa un nome evento tipo "form_submit" senza parametri distintivi (form_id, form_name), in GA4 tutto si accumula come evento anonimo e i report mostrano (not set) sulla dimensione form.
- Il tag si attiva ma senza Send To corretto, oppure il Measurement ID punta a una property sbagliata, o il tag GA4 Configuration non è caricato prima dell'evento.
- Cache page o ottimizzatori JS (Autoptimize, WP Rocket con minify) impediscono il caricamento dello snippet custom o di GTM stesso in modalità asincrona corretta.
Fix, passo per passo
- Nel tema o tramite un plugin "Insert Headers and Footers", aggiungi lo snippet JavaScript che ascolta
wpcf7mailsente fa il push nel dataLayer (vedi template sotto). Verifica che sia caricato su tutte le pagine con form, non solo sulla pagina contatti. - In GTM, crea un nuovo Trigger di tipo Evento personalizzato (Custom Event). Nel campo "Nome evento" inserisci esattamente
cf7_form_submit(o il nome che usi nello snippet, deve corrispondere carattere per carattere). - Crea due Variabili Data Layer: una per
formIde una performName, così puoi passarle come parametri al tag GA4. - Crea un nuovo Tag di tipo Google Analytics: evento GA4. Seleziona la tua Configuration Tag GA4 esistente (o inserisci il Measurement ID diretto se non usi una config condivisa).
- Nel campo Nome evento del tag scrivi
form_submit(minuscolo, snake_case, coerente con le convenzioni GA4). - Nella sezione Parametri evento aggiungi:
form_id= variabile formId,form_name= variabile formName,form_destination= {{Page URL}} o simile. - Assegna al tag il Trigger creato al punto 2 (il Custom Event
cf7_form_submit). - Salva, poi entra in Modalità Anteprima (Preview) di GTM e invia un form di test dal sito.
- Controlla nel pannello Tag Assistant che il trigger si attivi e che il tag GA4 spari con i parametri valorizzati (non vuoti).
- Pubblica il container GTM solo dopo aver confermato il funzionamento in anteprima.
Template copia-incolla
// 1) Snippet da inserire nel footer del sito (o via GTM Custom HTML tag)
document.addEventListener('wpcf7mailsent', function(event) {
window.dataLayer = window.dataLayer || [];
dataLayer.push({
'event': 'cf7_form_submit',
'formId': event.detail.contactFormId,
'formName': event.detail.contactFormId, // sostituisci con nome leggibile se lo mappi manualmente
'formStatus': event.detail.status
});
});
// 2) Checklist configurazione GTM
- Trigger: Custom Event
Nome evento: cf7_form_submit
- Variabili Data Layer:
DLV - formId -> Data Layer Variable Name: formId
DLV - formName -> Data Layer Variable Name: formName
- Tag: GA4 Event
Nome evento: form_submit
Parametri:
form_id = {{DLV - formId}}
form_name = {{DLV - formName}}
form_destination = {{Page URL}}
Trigger collegato: cf7_form_submit
// 3) Verifica rapida in DebugView (GA4)
[ ] Evento "form_submit" visibile in tempo reale
[ ] Parametro form_id valorizzato (non vuoto, non "(not set)")
[ ] Parametro form_name valorizzato
[ ] Nessun doppio invio (controlla se il trigger scatta 2 volte)
Come verificare che funzioni
Apri GA4, vai su DebugView, attiva l'estensione GTM/GA Debugger sul browser e invia un form di test. Dovresti vedere comparire l'evento form_submit entro pochi secondi, con i parametri form_id e form_name popolati correttamente, non vuoti e non genericamente etichettati. Se compare ma i parametri sono vuoti, il problema è nelle Variabili Data Layer di GTM, non nel tag GA4.
Una volta che l'evento arriva pulito in GA4, con parametri reali invece di (not set), puoi finalmente usarlo come base per priorità operative: dentro Next Action Analyst bas
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.