Pular para o conteúdo principal

Problemas com o Consent Mode

Sintoma A: O GA4 ainda dispara antes do consentimento

Causa: O estado predefinido do Consent Mode não está definido antes de o GA4 carregar.

Correcção: Adicione o bloco de predefinição de consentimento antes do script GA4 e antes do 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>

Sintoma B: gtag('consent', 'update') não está a disparar

Como verificar: DevTools → Consola → window.dataLayer.filter(e => e[0] === 'consent') — deve mostrar predefinição + actualização após o utilizador aceitar.

Causa: A função gtag não está disponível quando o ConsentForge tenta actualizar o consent mode.

Correcção: Garanta que gtag está definido em window antes de o ConsentForge carregar (através do bloco de predefinição acima).


Causa: Os dados de conversão modelados demoram 5 a 7 dias a aparecer no Google Ads após a configuração inicial do Consent Mode.

Correcção: Aguarde 7 dias após a configuração correcta. Verifique no Google Ads → Ferramentas → Diagnósticos do Consent Mode.


Sintoma D: A tag de Inicialização de Consentimento GTM não está a disparar primeiro

Como verificar: Pré-visualização GTM → verifique a ordem de disparo das tags. A tag ConsentForge deve disparar no accionador "Inicialização de Consentimento".

Correcção: Altere o accionador da tag ConsentForge GTM para Inicialização de Consentimento - Todas as Páginas (não Visualização de Página).


Verificação

Após a correcção, confirme na Consola do DevTools:

// Deve mostrar predefinições 'denied' e depois actualização 'granted' após aceitar
window.dataLayer.filter(e => e[0] === 'consent')