Problemi di Consent Mode
Sintomo A: GA4 continua ad attivarsi prima del consenso
Causa: Lo stato predefinito di Consent Mode non impostato prima del caricamento di GA4.
Soluzione: Aggiungete il blocco predefinito del consenso prima dello script GA4 e prima di ConsentForge:
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
'analytics_storage': 'denied',
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'wait_for_update': 500
});
</script>
<!-- ConsentForge -->
<script src="https://cdn.consentforge.com/consentforge.min.js" data-token="..." defer></script>
<!-- GA4 -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXX"></script>
Sintomo B: gtag('consent', 'update') non si attiva
Come verificare: DevTools → Console → window.dataLayer.filter(e => e[0] === 'consent') — dovrebbe mostrare predefinito + aggiornamento dopo che l'utente accetta.
Causa: La funzione gtag non disponibile quando ConsentForge cerca di aggiornare la consent mode.
Soluzione: Assicuratevi che gtag sia definito su window prima del caricamento di ConsentForge (tramite il blocco predefinito sopra).
Sintomo C: Consent Mode funziona ma GA4 non mostra dati modellati
Causa: I dati di conversione modellati richiedono 5–7 giorni per apparire in Google Ads dopo la configurazione iniziale di Consent Mode.
Soluzione: Attendete 7 giorni dopo una configurazione corretta. Verificate in Google Ads → Strumenti → Diagnostica Consent Mode.
Sintomo D: Il tag di inizializzazione del consenso GTM non si attiva per primo
Come verificare: Anteprima GTM → controllate l'ordine di attivazione dei tag. Il tag ConsentForge dovrebbe attivarsi sul trigger "Inizializzazione consenso".
Soluzione: Cambiate il trigger del tag GTM di ConsentForge in Inizializzazione consenso - Tutte le pagine (non Visualizzazione pagina).
Verifica
Dopo la correzione, confermate nella Console DevTools:
// Dovrebbe mostrare i valori predefiniti 'denied' poi 'granted' dopo l'accettazione
window.dataLayer.filter(e => e[0] === 'consent')