Next Action Analyst

2026-07-23

Tracciare l'invio di un form senza thank you page in GTM: 3 metodi che funzionano

Hai un form che dopo l'invio mostra un messaggio "Grazie, ti contatteremo presto" senza cambiare URL, e in GTM non hai nessun trigger di Page View su cui appoggiarti. Hai provato a tracciare il click sul pulsante "Invia", ma quello conta anche i tentativi falliti per campi obbligatori vuoti o email non valide, quindi i tuoi dati di conversione sono gonfiati e inaffidabili.

Perché succede

Le cause più comuni, in ordine di frequenza:

  1. Il form usa submit via AJAX (jQuery, Fetch, plugin come Contact Form 7, Gravity Forms, HubSpot embed, Elementor Forms): il browser non ricarica la pagina, quindi niente Page View, niente URL con /grazie da intercettare.
  2. Il messaggio di conferma è un elemento nascosto che viene mostrato via JavaScript, non una nuova pagina: perfetto per un trigger di visibilità, ma solo se sai selezionarlo con precisione.
  3. Il plugin del form emette già un evento personalizzato (es. wpcf7mailsent di Contact Form 7, gform_confirmation_loaded di Gravity Forms) ma nessuno lo sta ascoltando in GTM.
  4. Il trigger "Form Submission" built-in di GTM non basta perché intercetta il submit del form HTML, non il risultato della chiamata AJAX: se la validazione blocca l'invio, il trigger scatta comunque.

Fix, passo per passo

  1. Identifica come risponde il form dopo l'invio corretto. Apri gli strumenti sviluppatore (F12) → tab Network, invia il form con dati validi e guarda se parte una chiamata XHR/Fetch con risposta 200. Poi guarda il DOM: appare un nuovo elemento con una classe tipo .form-success o .wpcf7-mail-sent-ok?
  2. Scegli il pattern in base a cosa hai trovato:
    • Se compare un elemento di conferma visibile → usa Element Visibility.
    • Se il tuo sviluppatore può aggiungere una riga di codice al callback di successo → usa dataLayer push su successo AJAX (il più affidabile).
    • Se il form è generato da un plugin noto (CF7, Gravity Forms, Elementor) → usa listener sull'evento nativo del plugin.
  3. Crea il trigger in GTM seguendo il template della sezione sotto, associandolo a un tag GA4 Event con nome evento form_submit_success (o il nome che usi già per coerenza con le altre conversioni).
  4. Aggiungi una variabile dataLayer per il nome del form (form_id o form_name) così puoi distinguere più form sulla stessa pagina senza creare trigger duplicati.
  5. Testa in modalità Anteprima di GTM prima di pubblicare: invia il form con dati corretti e verifica che l'evento scatti una sola volta, non a ogni tentativo fallito.
  6. Pubblica il container e monitora per 24-48 ore che il volume di conversioni sia coerente con il numero reale di lead ricevuti (controlla la casella email o il CRM).

Template pronto da copiare

PATTERN 1 - ELEMENT VISIBILITY (trigger nativo GTM)
Trigger type: Element Visibility
Selection method: CSS selector
Element selector: .form-success  (sostituisci con la classe reale del tuo messaggio di conferma)
Quando attivare: Once per element
Minimum percent visible: 50
Attiva su: Some Visibility Events → aggiungi condizione se serve limitare a una pagina

PATTERN 2 - DATALAYER PUSH SU SUCCESSO AJAX (il più affidabile, richiede dev)
// Codice da inserire nel callback di successo della chiamata AJAX del form
window.dataLayer = window.dataLayer || [];
dataLayer.push({
  'event': 'form_submit_success',
  'form_id': 'contatto_homepage',
  'form_name': 'Richiesta preventivo'
});

--- Trigger GTM ---
Trigger type: Custom Event
Event name: form_submit_success

--- Tag GTM (GA4 Event) ---
Event Name: generate_lead
Event Parameters:
  form_id = {{DLV - form_id}}
  form_name = {{DLV - form_name}}

PATTERN 3 - LISTENER SU EVENTO DEL PLUGIN
// Contact Form 7 (jQuery custom event, nessun dataLayer nativo)
document.addEventListener('wpcf7mailsent', function(event) {
  window.dataLayer.push({
    'event': 'form_submit_success',
    'form_id': event.detail.contactFormId
  });
}, false);

// Gravity Forms
jQuery(document).on('gform_confirmation_loaded', function(event, formId) {
  window.dataLayer.push({
    'event': 'form_submit_success',
    'form_id': formId
  });
});

// Elementor Forms
jQuery(document).on('submit_success', function(event, response) {
  window.dataLayer.push({
    'event': 'form_submit_success',
    'form_id': response.data.form_id || 'elementor_form'
  });
});

Trigger GTM identico al Pattern 2: Custom Event → form_submit_success

Come verificare che funzioni

Apri l'Anteprima di GTM, invia il form con dati validi e controlla che l'evento form_submit_success compaia una sola volta nel pannello Summary, con i parametri form_id e form_name valorizzati correttamente. Poi ripeti il test lasciando un campo obbligatorio vuoto: l'evento NON deve scattare. Se usi GA4, controlla in DebugView che l'evento arrivi con gli stessi parametri, quindi confronta per una settimana il numero di eventi con i lead effettivamente ricevuti via email o CRM: uno scostamento superiore al 5-10% indica che il trigger sta ancora intercettando tentativi falliti o duplicati.

Una volta che l'evento arriva pulito in GA4, il passo successivo è capire cosa farci: con Next Action Analyst puoi esportare questi dati di conversione insieme al resto delle metriche di campagna e ottenere subito la lista delle azioni prioritarie da fare, invece di passare ore a incrociare fogli di calcolo.

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.