Blog
Digital Marketing

Come tracciare le conversioni dei form con Google Tag Manager e GA4

Guida tecnica per tracciare l'invio dei form di contatto con GTM e GA4: trigger, variabili, evento personalizzato e verifica. Con snippet di configurazione.

10 minTeam Sydus22 gennaio 2026

Il form di contatto è, per la maggior parte dei siti B2B italiani, la conversione più importante. Eppure GA4 di default non la traccia. L'Enhanced Measurement di GA4 registra i click sul bottone di invio, ma non distingue tra un click su un form incompleto che non parte e un invio andato a buon fine.

Questa guida ti mostra come configurare il tracking corretto in Google Tag Manager e verificare che funzioni in GA4.

Prerequisiti

Prima di iniziare, assicurati di avere:

  • GTM installato sul sito con il container attivo
  • GA4 configurato con un tag "Configurazione GA4" in GTM già attivo su tutte le pagine
  • Accesso al codice sorgente o a un plugin del CMS per eventuale modifica al form
  • GTM Preview Mode aperto per testare in tempo reale

Metodo 1, Trigger nativo GTM su Form Submission

Questo metodo funziona senza modifiche al codice, se il form usa l'evento submit HTML standard.

Step 1: Abilita il trigger Form Submission in GTM

In GTM, per usare i trigger Form, devi prima abilitare l'auto-event listener. Vai in VariabiliVariabili incorporate → clicca Configura → abilita tutte le variabili "Form":

  • Form Element
  • Form Classes
  • Form ID
  • Form Target
  • Form Text
  • Form URL

Step 2: Crea il trigger

Vai in TriggerNuovoInvio modulo.

Configura così:

Tipo trigger: Invio modulo
Attiva su: Alcuni moduli

Condizioni (tutte devono essere vere):
  Page URL, contiene, tuodominio.it
  Form ID, è uguale a, contact-form
  (oppure)
  Form Classes, contiene, contact-form

Usa l'ID del form o una classe CSS specifica per non attivare il trigger su tutti i form del sito (es. la barra di ricerca). Per trovare l'ID del form, ispeziona l'elemento nel browser: cerca <form id="contact-form"> o <form class="contact-form wpcf7-form">.

Spunta "Attendi tag" e "Verifica convalida" se vuoi che GTM aspetti che il form passi la validazione lato client prima di sparare il trigger.

Step 3: Crea il tag evento GA4

Vai in TagNuovoEvento GA4.

Tipo tag: Evento Google Analytics: GA4
Tag di configurazione: [seleziona il tuo tag GA4]
Nome evento: form_submission

Parametri evento:
  form_type   →   contact
  page_path   →   {{Page Path}}
  page_title  →   {{Page Title}}

Trigger: il trigger "Invio modulo" creato al passo precedente.

Salva e vai alla verifica.

Leggi anche

Servizio Google Analytics 4: configurazione e tracking avanzato

Metodo 2, dataLayer.push() nel codice del form (più affidabile)

Se usi un form custom in React, Vue, Next.js o un form con validazione complessa, il trigger GTM nativo spesso non funziona perché il form non usa l'evento submit HTML standard. In questo caso, aggiungi una chiamata al dataLayer direttamente nel callback di successo del form.

Snippet JavaScript da aggiungere al callback di successo

// Da aggiungere nel callback eseguito DOPO che il form
// è stato inviato con successo (risposta 200 dal server)

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  event: 'form_submission',
  form_type: 'contact',
  page_path: window.location.pathname
});

In React con React Hook Form, il posto giusto è dentro onSubmit dopo la chiamata fetch/axios:

const onSubmit = async (data) => {
  try {
    const response = await fetch('/api/contact', {
      method: 'POST',
      body: JSON.stringify(data)
    });

    if (response.ok) {
      // Form inviato con successo
      window.dataLayer = window.dataLayer || [];
      window.dataLayer.push({
        event: 'form_submission',
        form_type: 'contact',
        page_path: window.location.pathname
      });

      // Mostra messaggio di conferma...
    }
  } catch (error) {
    // Gestisci errore...
  }
};

Configurazione GTM per il dataLayer

Crea un trigger che ascolta l'evento personalizzato nel dataLayer:

Tipo trigger: Evento personalizzato
Nome evento: form_submission

Poi crea il tag GA4 esattamente come nel Metodo 1, usando questo trigger.

Step 4: Verifica con GTM Preview

Prima di pubblicare, testa sempre in Preview Mode:

  1. Apri GTMAnteprima → inserisci l'URL del sito
  2. Compila e invia il form di test (usa dati fittizi)
  3. In GTM Preview, verifica che l'evento form_submission (o Invio modulo) appaia nella sequenza di eventi
  4. Clicca sull'evento e verifica che il tag GA4 sia listato come "Fired" (non "Not Fired")
  5. In GA4 → RapportiTempo reale, verifica che appaia l'evento form_submission entro 30 secondi

Se il tag risulta "Not Fired" in preview, controlla le condizioni del trigger, spesso il problema è che l'ID o la classe CSS del form non corrisponde esattamente a quello che hai configurato.

Step 5: Contrassegna come evento chiave in GA4

Una volta verificato che l'evento arriva correttamente:

  1. Vai in GA4 → ConfigurazioneAttività
  2. Trova form_submission nella lista degli eventi
  3. Attiva il toggle "Contrassegna come evento chiave"

Da questo momento, form_submission apparirà come conversione nei report di Acquisizione e potrai usarlo come audience per il remarketing in Google Ads.

Traccia anche i click su telefono ed email

Se nel sito hai link tel: e mailto:, aggiungili subito. Sono conversioni micro spesso dimenticate.

Trigger per tel: links:

Tipo trigger: Solo link
Condizione: Click URL, inizia con, tel:

Trigger per mailto: links:

Tipo trigger: Solo link
Condizione: Click URL, inizia con, mailto:

Per entrambi, crea tag GA4 separati con nomi evento phone_click e email_click. Contrassegnali come eventi chiave in GA4.

Schema riepilogativo della configurazione

EventoMetodo consigliatoNome evento GA4Evento chiave
Invio form contattodataLayer.push (React/Vue) o GTM triggerform_submission
Click numero telefonoGTM, link click triggerphone_click
Click emailGTM, link click triggeremail_click
Download brochure PDFGTM, link click triggerfile_downloadNo (usa quello di Enhanced Measurement)

Errori comuni da evitare

Tracking sulla pagina di ringraziamento come unico metodo. Funziona solo se hai una thank-you page dedicata con URL univoca. Se il form mostra un messaggio inline senza cambiare URL, non tracci nulla.

Trigger su "click bottone" invece che su "form submission". Il click sul bottone avviene anche quando la validazione fallisce. Stai contando tentativi, non conversioni.

Non verificare in Preview prima di pubblicare. GTM è uno strumento che si pubblica con un click: ogni versione pubblicata va in produzione. Usa sempre Preview per testare prima.

Un tracking delle conversioni preciso è la base di ogni ottimizzazione. Se non sai quali canali generano form compilati, stai ottimizzando alla cieca. Il team di digital marketing di Sydus configura GTM e GA4 per PMI B2B che vogliono dati affidabili su cui prendere decisioni. Contattaci per una configurazione o un audit del tuo tracking attuale.

Tag

Google Analytics 4GA4GTMGoogle Tag Managerconversioniform

Domande frequenti

Hai ancora dubbi?

Qual è la differenza tra tracciare la submission del form e tracciare il redirect alla pagina di ringraziamento?

Tracciare il redirect (pagina /grazie) è più semplice da configurare, basta un trigger Page View sulla URL di destinazione, ma meno affidabile. Se il form non ha una thank-you page dedicata, questo metodo non funziona. Alcuni form reindirizzano solo sotto certe condizioni. Il metodo basato su Form Submission trigger di GTM è più robusto perché si attiva sull'azione utente, non sulla pagina risultante. L'ideale è usare entrambi come verifica incrociata, ma affidarsi al trigger su form come fonte principale.

GTM Form Submission non funziona con il mio form. Cosa potrebbe non andare?

Le cause più comuni: il form è dentro un iframe (GTM non può accedere agli eventi dentro iframe di domini diversi); il form non usa il metodo HTML standard submit (molti form React o Vue intercettano il click sul bottone e gestiscono l'invio via JS senza mai fare il submit nativo); il form ha validazione lato client che blocca l'evento prima che GTM lo veda. Per i form custom in JS, la soluzione corretta è aggiungere manualmente dataLayer.push() nel codice del form al completamento dell'invio.

Devo usare GTM o posso mandare eventi a GA4 direttamente dal codice?

Entrambi funzionano. Il vantaggio di GTM è che puoi modificare il tracking senza toccare il codice sorgente, il che è utile se non hai accesso diretto al repository o se vuoi dare autonomia al team marketing. Il vantaggio del dataLayer diretto nel codice è maggiore controllo e affidabilità, soprattutto per form complessi in framework moderni (React, Vue, Next.js) dove gli eventi DOM standard sono difficili da intercettare. Per siti Next.js con form gestiti via React Hook Form, il dataLayer nel codice è la scelta più robusta.

Come evito di contare doppio gli invii del form?

Il problema del doppio conteggio si verifica quando hai sia un trigger GTM sul form che un tracking nella pagina di ringraziamento, o quando il form può essere inviato più volte dallo stesso utente. Per prevenirlo: usa una sola metodologia di tracking per ogni form; considera l'uso del parametro 'once per event' nel trigger GTM se il form è su una single-page app; aggiungi deduplicazione lato server se la precisione è critica. In GA4 puoi anche confrontare il numero di eventi con il numero di submission ricevute dal backend come sanity check.

Posso vedere quali campi ha compilato l'utente nel form?

Tecnicamente sì, ma con attenzione alla privacy. GTM può catturare i valori dei campi del form come variabili e inviarli come parametri dell'evento GA4. Tuttavia, non dovresti mai inviare a GA4 dati personali (nome, email, telefono) perché GA4 non è conforme al GDPR per il trattamento di PII (Personally Identifiable Information). I parametri utili e conformi sono: tipo di servizio richiesto (se c'è un campo select), categoria del budget, o fonte di conoscenza (come hai conosciuto l'azienda). Dati anonimi di segmentazione, non dati identificativi.