Google Consent Mode v2: os sinais, a ordem e o teste
O Consent Mode v2 é onde a maioria dos sites brasileiros erra sem perceber. O erro não aparece na tela, não gera log vermelho e não quebra o layout. Ele aparece três semanas depois, quando o público de remarketing esvazia, o número de conversões cai sem que as vendas tenham caído e ninguém consegue explicar por quê.
O que é o Consent Mode
Consent Mode é uma API do Google pela qual o seu site informa às tags do Google (Google Ads, GA4, Floodlight) se o visitante consentiu ou não com determinados usos de dados. Ele não é um banner, nem um plugin, nem um selo de conformidade.
Quatro peças diferentes costumam ser confundidas:
| Peça | Quem faz | O que resolve |
|---|---|---|
| Banner de cookies (CMP) | Você / sua CMP | Coletar e registrar a escolha do visitante |
| Bloqueio de scripts | Você / sua CMP | Impedir que rastreadores rodem antes da escolha |
| Consent Mode | API do Google | Comunicar a escolha às tags do Google |
| Prova de consentimento | Você / sua CMP | Demonstrar à ANPD que houve consentimento |
Consent Mode sem bloqueio de scripts deixa as tags que não são do Google (Meta Pixel, TikTok, Hotjar, Clarity) rodando e gravando cookies, porque o Consent Mode não governa nenhuma delas. Bloqueio sem Consent Mode deixa você em conformidade e sem a modelagem de conversões que o Google oferece para compensar o consentimento negado. As duas peças são necessárias.
Por que a v2 existe e por que ela importa no Brasil
A versão 1 do Consent Mode (2020) tinha dois sinais: ad_storage e analytics_storage.
Em novembro de 2023 o Google anunciou a v2, que acrescenta ad_user_data e
ad_personalization, e a tornou obrigatória a partir de 6 de março de 2024 para
tráfego do Espaço Econômico Europeu e do Reino Unido, por causa do Digital Markets Act.
Sem os novos sinais, os recursos de público e de mensuração personalizada param para esse
tráfego.
O Brasil não está sob o DMA. Ainda assim, a v2 importa aqui por três motivos concretos:
- Você provavelmente tem tráfego europeu. Basta um visitante do EEE para que as listas de remarketing daquele tráfego deixem de crescer. Sites de turismo, SaaS, exportadores e qualquer negócio com diáspora brasileira sentem isso primeiro.
- A LGPD já exige a escolha. O Guia Orientativo da ANPD sobre cookies trata cookies não essenciais como tratamento que depende de base legal adequada, o que leva a consentimento livre, informado e inequívoco, com recusa tão fácil quanto o aceite. Se você vai bloquear tags até o aceite, e vai, o Consent Mode é o que recupera parte da mensuração perdida.
- A modelagem só funciona se o sinal existir. Sem Consent Mode, uma recusa é simplesmente ausência de dado. Com Consent Mode, o Google recebe um ping sem cookie dizendo que houve uma conversão sem consentimento e usa isso para modelar. A diferença entre os dois cenários é dinheiro de mídia alocado com base em número certo ou errado.
Os quatro sinais obrigatórios da v2, um a um
| Sinal | Controla | Categoria típica no banner |
|---|---|---|
ad_storage | Cookies e identificadores para publicidade | Marketing |
ad_user_data | Envio de dados do usuário ao Google para fins de publicidade | Marketing |
ad_personalization | Uso dos dados para publicidade personalizada e remarketing | Personalização |
analytics_storage | Cookies e identificadores de analytics (GA4) | Estatísticas |
Existem outros três sinais, anteriores à v2 e raramente usados: functionality_storage
(preferências como idioma), personalization_storage (recomendações de conteúdo) e
security_storage (antifraude, autenticação). O security_storage costuma ficar
granted por padrão porque cai em legítimo interesse/segurança; os outros dois só entram
se o seu site realmente os usar.
Dois erros de mapeamento aparecem o tempo todo:
- Amarrar
ad_personalizationa "marketing". Personalização é uma finalidade distinta de simplesmente armazenar identificador de anúncio. Se o seu banner tem a categoria "personalização", é a ela quead_personalizationpertence. - Amarrar
analytics_storagea "marketing". Quem aceita só estatísticas e mesmo assim vê o GA4 mudo tem esse erro. Quem aceita só estatísticas e vê o Google Ads disparando tem o erro inverso, bem mais grave.
Básico x avançado: a decisão que muda o resultado
O Google chama de básico e avançado dois modos de implementação, que se distinguem pelo comportamento do seu site diante das tags.
| Básico | Avançado | |
|---|---|---|
| As tags carregam antes da escolha? | Não | Sim |
| O que é enviado antes da escolha | Nada | Ping sem cookie, com o estado de consentimento |
| Modelagem de conversões | Muito limitada | Habilitada |
gtag('consent','default') | Pode ser dispensado | Obrigatório, antes de tudo |
| Risco de conformidade | Menor (nada sai) | Exige texto claro no banner sobre o ping |
No modo básico, as tags do Google só são carregadas depois do aceite. Simples de explicar ao jurídico e de defender numa fiscalização. O custo é que uma recusa vira um buraco: nenhum sinal chega ao Google e não há o que modelar.
No modo avançado, a biblioteca do Google carrega imediatamente e envia pings cookieless enquanto o consentimento está negado. Esses pings não gravam nem leem identificador do visitante; carregam o estado do consentimento, o carimbo de tempo e dados agregados de página. É deles que sai a modelagem de conversões.
Recomendação: avançado, com o texto do banner explicando em português que, antes da
escolha, só são enviados dados agregados e sem identificação. Esse é o modo que preserva
mensuração, e uma CMP deve entregá-lo pronto, sem que você tenha de escrever uma linha de
gtag.
A ordem de execução é o requisito nº 1
Uma regra pesa mais que todas as outras: consent default precisa ser executado antes
de qualquer tag do Google ler ou gravar qualquer coisa.
A ordem correta é sempre:
gtag('consent', 'default', { ...tudo denied... })- Carregamento da biblioteca (
gtag.jsou o container do GTM) - Banner é exibido e o visitante escolhe
gtag('consent', 'update', { ...sinais da escolha... })
Inverter 1 e 2 é o erro mais comum do mercado e o mais silencioso: o GA4 grava o _ga
antes de qualquer default chegar, o que produz um cookie criado sem consentimento, que é
problema de LGPD, e um estado de consentimento inconsistente do lado do Google.
O trecho do default precisa ficar inline no head, antes de qualquer script src
de tag, e não pode depender de rede: se ele esperar o download da configuração da sua
CMP, existe uma janela em que as tags rodam sem default. Uma CMP correta injeta o
default de forma síncrona e só depois busca a configuração.
Implementação com gtag.js
Este é o bloco mínimo correto. Ele vai antes do script do gtag.js, ainda no head:
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
gtag('consent', 'default', {
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
analytics_storage: 'denied',
functionality_storage: 'denied',
personalization_storage: 'denied',
security_storage: 'granted',
wait_for_update: 500
});
gtag('set', 'ads_data_redaction', true);
gtag('set', 'url_passthrough', true);
</script>
Três parâmetros merecem explicação:
wait_for_update: 500define quantos milissegundos as tags esperam por umupdateantes de disparar com o estado padrão. Serve para o caso do visitante recorrente, cuja escolha já está salva e será restaurada assim que a CMP carregar. Sem essa espera, a tag dispara como "negado" e só depois é corrigida, e você perde eventos. Valores entre 500 e 2000 ms são os usados no mercado; acima disso, o disparo legítimo começa a atrasar.ads_data_redaction: truefaz o Google remover os identificadores de clique de anúncio das requisições enquantoad_storageestiver negado. Deixe ligado.url_passthrough: truemantémgclid,gbraid,wbraidedclidna URL durante a navegação interna, para que a conversão continue atribuível mesmo sem cookie. Ligue apenas se o seu site não quebra com parâmetros extras na URL (raro, mas confira redirecionamentos de checkout e canonical).
Quando o visitante escolhe, a CMP dispara o update correspondente:
// Aceitou tudo
gtag('consent', 'update', {
ad_storage: 'granted',
ad_user_data: 'granted',
ad_personalization: 'granted',
analytics_storage: 'granted'
});
// Aceitou só estatísticas
gtag('consent', 'update', {
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
analytics_storage: 'granted'
});
O update envia apenas o que mudou, e o que não for citado permanece com o valor do
default. Ainda assim, enviar os quatro sinais obrigatórios explicitamente em todo update é mais
seguro do que depender de memória de estado.
Padrão diferente por região
Dá para ser mais restritivo no EEE e manter o comportamento brasileiro sem duplicar o
código. O default aceita o parâmetro region com códigos ISO 3166-2, e você pode
declarar mais de um default: o mais específico vence.
gtag('consent', 'default', {
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
analytics_storage: 'denied',
region: ['BR']
});
Com a LGPD em vigor, recomendamos manter tudo negado por padrão em qualquer região e usar
region apenas quando houver um motivo de negócio documentado.
Implementação com Google Tag Manager
No GTM, a garantia de ordem depende do gatilho escolhido, e não do lugar do código no HTML.
- Ative os recursos de consentimento. Em Administrador, Configurações do contêiner, marque "Ativar visão geral do consentimento". Uma coluna nova aparece na lista de tags.
- Crie a tag de default com o bloco de
gtag('consent','default', ...)acima, como HTML personalizado, e associe ao gatilho Inicialização do consentimento - Todas as páginas. Esse gatilho é o único que o GTM garante executar antes de qualquer outro. Não use "Todas as páginas": ele roda depois. - Configure a checagem de cada tag. Na aba Consentimento avançado de cada tag, declare de quais sinais ela depende. Tags do Google já vêm com verificação embutida; tags de HTML personalizado (Meta, TikTok, Hotjar) precisam da configuração manual, e o GTM as segura até o sinal chegar.
- Dispare o
updatea partir do evento que a sua CMP empurra para odataLayerquando o visitante escolhe.
Um detalhe que causa muita dor de cabeça: a verificação de consentimento do GTM segura a tag, mas não impede que um script já presente no HTML da página rode. Se o Meta Pixel está colado direto no tema, o GTM não tem como bloqueá-lo; quem faz isso é o motor de bloqueio da CMP.
Como testar a implementação
1. O parâmetro gcs na requisição
Abra o DevTools, aba Rede, filtre por collect (GA4) ou google-analytics. Clique numa
requisição e leia o parâmetro gcs na query string. Ele tem quatro caracteres:
| Valor | ad_storage | analytics_storage |
|---|---|---|
G100 | negado | negado |
G101 | negado | concedido |
G110 | concedido | negado |
G111 | concedido | concedido |
Se o parâmetro gcs não existir na requisição, o Consent Mode não está implementado,
ou a requisição saiu antes do default.
Há também um parâmetro gcd, mais longo, que codifica os quatro sinais obrigatórios da v2. O formato
não é documentado publicamente e muda; trate-o como indício.
2. O dataLayer no console
// Antes de qualquer interação com o banner
dataLayer.filter(function (e) { return e[0] === 'consent'; });
O primeiro item precisa ser um consent default com tudo negado, e ele precisa aparecer
antes de qualquer evento de configuração de tag. Se o config do GA4 vier primeiro,
a ordem está errada.
3. Tag Assistant e DebugView
O Tag Assistant do Google mostra, por tag disparada, o estado de consentimento no
momento do disparo, incluindo quais sinais estavam negados. No GA4, o DebugView confirma
o que efetivamente chegou. As duas ferramentas servem para conferir o update.
4. O teste da recusa
Abra uma janela anônima, entre no site, recuse tudo e navegue por três páginas. Na
aba Rede, procure requisições para google-analytics.com, googleadservices.com,
facebook.net, analytics.tiktok.com. Depois abra Aplicativo, Cookies, e confira se
existe algum _ga, _gcl_au, _fbp ou _ttp. Cookie de terceiro depois de uma recusa
é falha de bloqueio, não de Consent Mode, e o bloqueio precisa ser consertado primeiro.
Modelagem de conversões: o que esperar
A modelagem é o retorno de implementar o modo avançado corretamente. O Google usa os pings sem cookie mais o comportamento observado dos usuários que consentiram para estimar as conversões dos que não consentiram, e devolve isso nos relatórios.
Ela não é automática nem instantânea. Em setembro de 2026, o Google Ads exige cerca de 700 cliques em 7 dias por país e grupo de domínios para modelar conversões, e o GA4 exige 1.000 eventos por dia com consentimento negado, por 7 dias, para a modelagem comportamental. Site pequeno, com pouco volume, recupera pouco pela modelagem, e a prioridade dele passa a ser maximizar a taxa de aceite legítima do banner, com texto claro, sem dark pattern e sem esconder o "recusar".
Doze erros comuns, com sintoma e correção
defaultdepois da tag. Sintoma: cookie_gacriado sem interação. Correção: mover o bloco inline para antes dogtag.js; no GTM, usar o gatilho de inicialização do consentimento.gcsausente. Sintoma: nenhum parâmetrogcsnas requisições. Correção: odefaultnão está rodando; verifique erro de JavaScript anterior no console.- Consent Mode sem bloqueio. Sintoma:
gcs=G100e mesmo assim o_fbpaparece. Correção: o Consent Mode não governa tags de não-Google; implemente bloqueio real. updatesemdefault. Sintoma: comportamento aleatório entre navegadores. Correção: oupdatesó faz sentido sobre um estado inicial declarado.analytics_storageamarrado a marketing. Sintoma: quem aceita só estatísticas não aparece no GA4. Correção: revisar o mapeamento categoria → sinal.ad_personalizationesquecido. Sintoma: listas de remarketing param de crescer para tráfego europeu. Correção: incluir os quatro sinais obrigatórios emdefaulteupdate.wait_for_updateausente. Sintoma: visitante recorrente que já aceitou perde o primeiro pageview. Correção:wait_for_update: 500.- Banner que reaparece toda visita. Sintoma: taxa de aceite despenca e o
updatenunca é restaurado. Correção: persistência da escolha com versão da política. - Recusar escondido. Sintoma: aceite altíssimo e risco jurídico igualmente alto. Correção: "Recusar tudo" com o mesmo peso visual de "Aceitar tudo", que é exigência da ANPD.
- Dois CMPs instalados. Sintoma: dois
defaultconflitantes, estado imprevisível. Correção: desinstalar o antigo de verdade, inclusive resquícios no tema. - Cache servindo HTML antigo. Sintoma: a correção funciona no seu navegador e não no do cliente. Correção: limpar cache de página e de CDN após qualquer mudança no bloco de consentimento.
- Tratar Consent Mode como conformidade. Sintoma: implementação impecável e nenhum registro de consentimento. Correção: ver a seção seguinte.
Consent Mode não é conformidade com a LGPD
O Consent Mode resolve o problema do Google. A LGPD tem outras exigências que nenhuma API do Google cobre:
- Base legal e finalidade informadas em linguagem clara, por categoria.
- Recusa tão fácil quanto o aceite, sem opção pré-marcada e sem dark pattern.
- Registro auditável de cada consentimento: quando, qual versão do texto, quais categorias, de onde. Sem esse registro, você não tem como demonstrar consentimento numa fiscalização, e o ônus da prova é do controlador.
- Revogação simples e a qualquer momento, tão acessível quanto foi dar o aceite.
- Minimização: guardar prova de consentimento sem transformar o próprio log em um banco de dados de IP bruto de visitante.
Implementar só o Consent Mode na mão cobre metade do problema e passa a impressão de ter coberto o todo.
Perguntas frequentes
Preciso de Consent Mode v2 se meu site só recebe tráfego brasileiro? Do ponto de vista do Google, a obrigatoriedade recai sobre tráfego do EEE e do Reino Unido. Você vai bloquear tags até o aceite por causa da LGPD, e sem Consent Mode esse bloqueio custa mensuração que a modelagem poderia recuperar.
O modo avançado é legal no Brasil? Os pings sem cookie não gravam nem leem identificador do dispositivo. O ponto de atenção é de transparência: o banner precisa dizer, em português claro, o que é enviado antes da escolha. Com essa informação, o modo avançado é defensável; sem ela, você tem um problema de informação ao titular.
Consent Mode funciona com Meta Pixel e TikTok? Não. É uma API do Google e governa apenas tags do Google. Meta e TikTok dependem do bloqueio de scripts feito pela CMP.
Preciso de uma CMP certificada pelo Google? Certificação de CMP é exigência para publishers de AdSense, Ad Manager e AdMob que monetizam tráfego do EEE, dentro do framework TCF. Para um anunciante brasileiro comum, vale implementar o Consent Mode corretamente; o selo não muda a mensuração.
Meu remarketing parou. É só implementar Consent Mode que volta? Volta o sinal; o público perdido não volta. Listas de remarketing se reconstroem com o tempo, a partir do momento em que o consentimento passa a ser comunicado corretamente. Quanto mais cedo a correção, menor o buraco.
Próximo passo
Antes de mexer em qualquer código, descubra o que o seu site carrega hoje, inclusive o que foi instalado por um plugin, por uma agência antiga ou por um script que ninguém lembra de ter colocado. O scanner gratuito do Concedo faz esse inventário sem cadastro e mostra cookies e rastreadores por categoria.
Se o seu site é WordPress, o passo seguinte é o guia de como instalar banner de cookies LGPD no WordPress, que cobre onde exatamente colar o snippet, o que fazer com plugins de cache e o cuidado extra no checkout do WooCommerce.
Continue lendo
Multa da ANPD: o valor real para uma empresa pequena
O teto de R$ 50 milhões não é o seu número. Como a ANPD chega ao valor, o que ela já aplicou e por onde um processo começa numa PME.
Por que o remarketing quebrou: os sinais que mudaram
Público que encolhe e conversão que cai sem queda de venda: como separar cookie de terceiro, ITP, ATT e Consent Mode v2, e o plano de recuperação.
Política de privacidade: grátis ou adequada, o que muda
O que uma política precisa conter item a item, os cinco defeitos das geradas por formulário e um teste de cinco minutos para auditar a sua.
Checklist de LGPD para e-commerce: 40 itens explicados
Quarenta itens agrupados por área, cada um com o que fazer, o motivo (artigo da lei ou risco concreto) e um teste que você mesmo executa para verificar.