Pular para o conteúdo
Concedo
Comece grátis
Menu

Google Consent Mode v2: os sinais, a ordem e o teste

Publicado em 24 de agosto de 2026 · atualizado em 2 de setembro de 2026

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ê.

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çaQuem fazO que resolve
Banner de cookies (CMP)Você / sua CMPColetar e registrar a escolha do visitante
Bloqueio de scriptsVocê / sua CMPImpedir que rastreadores rodem antes da escolha
Consent ModeAPI do GoogleComunicar a escolha às tags do Google
Prova de consentimentoVocê / sua CMPDemonstrar à 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:

  1. 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.
  2. 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.
  3. 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

SinalControlaCategoria típica no banner
ad_storageCookies e identificadores para publicidadeMarketing
ad_user_dataEnvio de dados do usuário ao Google para fins de publicidadeMarketing
ad_personalizationUso dos dados para publicidade personalizada e remarketingPersonalização
analytics_storageCookies 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_personalization a "marketing". Personalização é uma finalidade distinta de simplesmente armazenar identificador de anúncio. Se o seu banner tem a categoria "personalização", é a ela que ad_personalization pertence.
  • Amarrar analytics_storage a "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ásicoAvançado
As tags carregam antes da escolha?NãoSim
O que é enviado antes da escolhaNadaPing sem cookie, com o estado de consentimento
Modelagem de conversõesMuito limitadaHabilitada
gtag('consent','default')Pode ser dispensadoObrigatório, antes de tudo
Risco de conformidadeMenor (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:

  1. gtag('consent', 'default', { ...tudo denied... })
  2. Carregamento da biblioteca (gtag.js ou o container do GTM)
  3. Banner é exibido e o visitante escolhe
  4. 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: 500 define quantos milissegundos as tags esperam por um update antes 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: true faz o Google remover os identificadores de clique de anúncio das requisições enquanto ad_storage estiver negado. Deixe ligado.
  • url_passthrough: true mantém gclid, gbraid, wbraid e dclid na 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.

  1. 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.
  2. 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.
  3. 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.
  4. Dispare o update a partir do evento que a sua CMP empurra para o dataLayer quando 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:

Valorad_storageanalytics_storage
G100negadonegado
G101negadoconcedido
G110concedidonegado
G111concedidoconcedido

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

  1. default depois da tag. Sintoma: cookie _ga criado sem interação. Correção: mover o bloco inline para antes do gtag.js; no GTM, usar o gatilho de inicialização do consentimento.
  2. gcs ausente. Sintoma: nenhum parâmetro gcs nas requisições. Correção: o default não está rodando; verifique erro de JavaScript anterior no console.
  3. Consent Mode sem bloqueio. Sintoma: gcs=G100 e mesmo assim o _fbp aparece. Correção: o Consent Mode não governa tags de não-Google; implemente bloqueio real.
  4. update sem default. Sintoma: comportamento aleatório entre navegadores. Correção: o update só faz sentido sobre um estado inicial declarado.
  5. analytics_storage amarrado a marketing. Sintoma: quem aceita só estatísticas não aparece no GA4. Correção: revisar o mapeamento categoria → sinal.
  6. ad_personalization esquecido. Sintoma: listas de remarketing param de crescer para tráfego europeu. Correção: incluir os quatro sinais obrigatórios em default e update.
  7. wait_for_update ausente. Sintoma: visitante recorrente que já aceitou perde o primeiro pageview. Correção: wait_for_update: 500.
  8. Banner que reaparece toda visita. Sintoma: taxa de aceite despenca e o update nunca é restaurado. Correção: persistência da escolha com versão da política.
  9. 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.
  10. Dois CMPs instalados. Sintoma: dois default conflitantes, estado imprevisível. Correção: desinstalar o antigo de verdade, inclusive resquícios no tema.
  11. 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.
  12. Tratar Consent Mode como conformidade. Sintoma: implementação impecável e nenhum registro de consentimento. Correção: ver a seção seguinte.

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

O que o seu site carrega antes de alguém aceitar?

O scanner abre algumas páginas como um visitante anônimo e lista os cookies, scripts e iframes de terceiros que disparam sem consentimento nenhum.

Sem cadastro e sem cartão. O resultado abre numa página de endereço próprio, que não é indexada e que ninguém encontra sem o link.