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

Como instalar banner de cookies LGPD no WordPress

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

Colar o snippet leva poucos minutos. O trabalho de verdade vem antes, e é descobrir quem carrega rastreador no seu site: num WordPress típico não é você, é o tema, o construtor de páginas e meia dúzia de plugins escrevendo no wp_head por conta própria.

Antes de instalar: faça o inventário

Pular esta etapa é a causa nº 1 de "instalei o banner e mesmo assim o Google Analytics grava cookie". Você não bloqueia o que não sabe que existe.

Num WordPress de PME, os rastreadores costumam entrar por cinco portas diferentes:

Porta de entradaExemplos comuns
Plugin de analyticsSite Kit, MonsterInsights, GA Google Analytics
Plugin de pixelPixelYourSite, Meta for WooCommerce, TikTok for Business
Tema / construtorElementor, Divi e Astra com integrações próprias
Código colado no temaSnippet do Ads ou do Pixel dentro do header.php
EmbedsYouTube, Google Maps, Spotify, formulários de terceiros

Rode o scanner gratuito na home e numa página feita no construtor: é onde as caixas de código personalizado costumam esconder pixel. A conferência à mão, pelo DevTools, e o que o painel libera depois de verificar o domínio estão em rodar a varredura do site.

É contra essa lista que o passo 6 confere a instalação: nada dela pode disparar antes do aceite.

Passo 1. Instalar o plugin ou o snippet

O snippet do Concedo é uma linha. Ela fica no head e precisa carregar antes de qualquer outra tag, porque é ela que declara o consent default do Google e liga o motor de bloqueio.

<script
  src="https://app.concedo.com.br/cmp/v1/loader.js"
  data-chave="pk_seu_identificador"
></script>

Sem async e sem defer. Com qualquer um dos dois, as tags do site disparam primeiro e não sobra nada para bloquear.

Escolha um dos quatro métodos abaixo. Instalar por dois caminhos ao mesmo tempo cria dois banners e um estado de consentimento imprevisível.

Método A. Plugin do Concedo (recomendado)

O plugin coloca o snippet no head, antes de qualquer outra tag, e sobrevive à atualização do tema.

  1. Baixe o plugin do Concedo.
  2. Em Plugins › Adicionar novo › Enviar plugin, envie o zip e ative.
  3. Em Configurações › Concedo, cole a chave do site e salve.
  4. Limpe o cache do site, do plugin de cache e da CDN.

Método B. Plugin de scripts no cabeçalho

Se você prefere colar o snippet à mão, um plugin de cabeçalho funciona em qualquer tema e dispensa editar código. Com o WPCode (ex-Insert Headers and Footers), que é gratuito:

  1. Painel, Plugins, Adicionar novo, procure por WPCode, instale e ative.
  2. Menu Code Snippets, item Header & Footer.
  3. Cole o snippet na caixa Header, nunca em Body ou Footer. No rodapé ele carrega tarde demais e as tags já rodaram.
  4. Salve e limpe o cache do site.

Se você já usa outro plugin com a mesma função ("Head, Footer and Post Injections", "Simple Custom CSS and JS"), use o que já está instalado. Não acumule plugins que fazem a mesma coisa.

Método C. Tema filho, via functions.php

Mais leve, sem plugin extra. Exige um tema filho: se você colar no functions.php do tema pai, a próxima atualização apaga o código.

add_action( 'wp_head', 'concedo_cmp_loader', 0 );
function concedo_cmp_loader() {
    echo '<script src="https://app.concedo.com.br/cmp/v1/loader.js" data-chave="pk_seu_identificador"></script>' . "\n";
}

A prioridade 0 no add_action faz o loader entrar antes dos scripts que outros plugins registram no mesmo hook. Sem ela, o snippet cai no meio da fila e alguns rastreadores saem na frente.

Prefira editar por FTP ou pelo gerenciador de arquivos da hospedagem. Um erro de sintaxe no editor de temas do painel derruba o site.

Método D. Via Google Tag Manager

Só faz sentido se todas as suas tags já passam pelo GTM: o snippet vai numa tag de HTML personalizado com o gatilho de Inicialização do consentimento, como descrito em instalar com GTM.

O GTM segura as tags que ele mesmo dispara e não alcança script colado direto no tema ou injetado por plugin. Num WordPress cheio de plugins, o método A cobre mais.

Passo 2. Bloquear o que os plugins injetam

Com o loader ativo, os rastreadores que ele reconhece por padrão (GA4, Meta, TikTok, Hotjar, Clarity, LinkedIn, Pinterest) já ficam presos até o aceite, inclusive quando injetados dinamicamente. O contêiner do GTM é a exceção, e ela é deliberada: ele entra como necessário e carrega antes da escolha, porque sozinho não coleta nada. O que fica preso são as tags que ele injeta, uma a uma, e elas ainda recebem os sinais do Consent Mode v2. Restam três casos que pedem atenção manual.

Scripts colados no tema

Se existe um Pixel ou uma tag do Ads escrita direto no header.php, marque o script para que o motor de bloqueio o segure:

<script type="text/plain" data-category="marketing">
  // conteúdo original do pixel
</script>

Trocar type="text/javascript" por type="text/plain" faz o navegador não executar o script; o data-category diz ao Concedo em que categoria ele deve ser liberado. Depois do aceite, o script é reinjetado e roda normalmente. O atributo é em inglês mesmo, e aceita necessarios, estatisticas, marketing e personalizacao.

Embeds de YouTube e Google Maps

Um iframe do YouTube grava cookie de publicidade antes de qualquer clique. O loader substitui esses iframes por um aviso de conteúdo bloqueado com um botão que abre as preferências. Duas boas práticas complementares no WordPress:

  • No editor de blocos, prefira o bloco YouTube ao HTML personalizado, assim o iframe fica identificável.
  • Se o vídeo é essencial (página de vendas, curso), avalie usar o domínio youtube-nocookie.com, que reduz o rastreamento sem eliminá-lo.

Plugins de analytics com carregamento próprio

Site Kit e MonsterInsights injetam o gtag.js por conta própria. Duas opções:

  • Deixar o Concedo bloquear, que é o comportamento padrão: o script é reconhecido por padrão de URL e segurado até o aceite.
  • Desligar o carregamento pelo plugin e mover a tag para o GTM, se você já usa GTM. Fica mais previsível, ao custo de uma mudança maior.

Não confie na opção "respeitar consentimento" que alguns desses plugins oferecem sem uma CMP por trás. Ela depende de um sinal que precisa existir antes, e quem cria esse sinal é a CMP.

Passo 3. Cache e otimização

Plugins de cache e de otimização são ótimos para performance e péssimos para ordem de execução. Três regras:

  1. Nunca combine nem minifique o snippet do CMP com outros scripts. Combinar muda a ordem, e ordem é requisito.
  2. Nunca aplique defer, async ou "delay JavaScript" ao loader. Atrasar o loader cria exatamente a janela em que as tags rodam sem consentimento.
  3. Limpe o cache depois de cada mudança, o de página e o da CDN.

Onde configurar a exclusão, por plugin:

PluginOnde excluir
WP RocketOtimização de arquivos, "Excluir arquivos JavaScript"; e "Carregar JavaScript adiado", exclusões
LiteSpeed CacheOtimização de página, JS Settings, "JS Excludes" e "JS Deferred Excludes"
W3 Total CacheMinify, "Never minify the following JS files"
WP Super CacheSem minificação por padrão; confira o plugin de otimização usado em conjunto
Autoptimize"Exclude scripts from Autoptimize"

Em todas as caixas, informe o caminho do loader (app.concedo.com.br/cmp/v1/loader.js).

Com cache de página, vale saber que o banner é renderizado no navegador e não vem no HTML. Se viesse, o cache serviria a mesma página com o mesmo estado de consentimento para todo mundo.

Passo 4. WooCommerce

Loja é onde o bloqueio malfeito custa faturamento. Duas coisas para acertar:

Cookies necessários não podem ser bloqueados. Os do próprio WooCommerce sustentam carrinho e sessão, então ficam na categoria "necessários", sempre ativa:

  • woocommerce_cart_hash
  • woocommerce_items_in_cart
  • wp_woocommerce_session_*

Scripts de pagamento nunca entram no bloqueio. Mercado Pago, PagSeguro, Stripe, antifraude e o script de captura de cartão são necessários ao funcionamento do checkout: bloqueá-los derruba a venda. Só entram no bloqueio os de marketing e mensuração: Pixel, GA4, TikTok, remarketing dinâmico.

Depois de instalar, faça uma compra de teste do início ao fim: adicionar ao carrinho, checkout, pagamento aprovado. É o único teste que prova que a loja não quebrou.

Se você anuncia no Google, o banner precisa comunicar a escolha às tags do Google. No Concedo isso já vem ligado: antes de qualquer tag o loader dispara o consent default com os sete sinais: seis negados, e o de segurança concedido, porque antifraude e login não dependem de consentimento. Depois vem o update correspondente à escolha do visitante.

Se você usa o Site Kit, confira em Configurações se a opção de Consent Mode está ativa e se não há um segundo bloco de consent default sendo injetado. Dois defaults conflitantes produzem estado imprevisível. O detalhamento de cada sinal está no guia do Google Consent Mode v2.

Passo 6. Verificar se funcionou

Faça em janela anônima, sempre, e depois de limpar o cache:

  1. Antes de interagir. Abra o site. DevTools, aba Aplicativo, Cookies. Só devem existir cookies do seu próprio domínio (sessão do WordPress, carrinho). Nenhum _ga, _gcl_au, _fbp, _ttp, _hjSession.
  2. Recusar tudo. Clique em "Recusar tudo" e navegue por três páginas, incluindo uma de produto. Na aba Rede, filtre por google-analytics, facebook, tiktok, hotjar: nada pode aparecer. Confira os cookies de novo.
  3. Aceitar tudo. Aceite e recarregue. Agora os scripts devem carregar e os cookies aparecer. Se não aparecerem, o aceite não soltou o bloqueio e o site ficou sem mensuração.
  4. Só estatísticas. Abra as preferências, marque apenas estatísticas e salve. GA4 dispara; Meta e TikTok, não.
  5. Revisita. Feche o navegador, abra de novo e entre no site: a escolha precisa ter sido lembrada e o banner não deve reaparecer.
  6. Checkout. Se for loja, refaça a compra de teste com "Recusar tudo" ativo. O pagamento precisa passar.

Erros comuns no WordPress

  • Snippet no rodapé. As tags do head já rodaram. Sempre no head.
  • Colado no tema pai. A atualização do tema apaga. Use tema filho ou o método A.
  • Dois banners. Sobrou um plugin de cookies antigo ativo. Desative e apague de verdade, inclusive o código que ele tenha deixado no tema.
  • Cache não limpo. Você testou o HTML antigo. Limpe cache do plugin e da CDN.
  • defer no loader. Alguma otimização "automática" pegou o snippet. Coloque-o na lista de exclusões.
  • Banner esconde o botão de recusar. Recusar precisa ter o mesmo peso visual de aceitar, e plugin que faz o contrário costuma acabar em reclamação; o que a ANPD espera está em cookies e LGPD à luz do Guia da ANPD.
  • Política de privacidade desatualizada. O WordPress já tem uma página de política em Configurações, Privacidade. Ela precisa listar as categorias de cookies que o scanner encontrou e um link para reabrir as preferências.

Perguntas frequentes

Preciso mexer em código? Pelos métodos A e B, não: você envia o plugin e cola a chave, ou cola uma linha numa caixa do painel. O método C pede quatro linhas no functions.php do tema filho.

Funciona em qualquer tema? Sim, e em qualquer versão do WordPress. O snippet é HTML puro no head, e o loader atua sobre o DOM final, sem depender de tema, de construtor ou de plugin.

O banner deixa meu site mais lento? O loader é um arquivo só, sem dependência de runtime, e é síncrono de propósito. Num WordPress, o ganho de LCP vem do que ele segura: cada gtag.js ou pixel que um plugin injeta e fica preso até o aceite é uma requisição a menos concorrendo com o conteúdo. O critério de performance está em como escolher uma CMP.

Funciona com Elementor, Divi ou WPBakery? Sim. O cuidado é o de sempre com construtores: eles têm caixas de "código personalizado" onde pixels costumam ficar escondidos. Inclua essas caixas no inventário.

E se eu tenho vários sites WordPress? Cada site tem a sua chave pública e a sua configuração, e uma conta atende quantos domínios você precisar, sem teto. A assinatura é por domínio: todos usam o plano selecionado para a conta, e cada site acrescenta uma unidade desse plano à renovação seguinte. A medição recomenda o menor plano que comporta as páginas encontradas, mas nunca troca plano ou preço sozinha. A régua está em preços. Quem cuida de uma carteira de clientes trabalha do mesmo jeito; o painel com rótulo e filtro por cliente entra a partir de um dos degraus, e para agências diz qual.

O que fazer com quem já aceitou antes de eu instalar o banner? Consentimento anterior sem registro auditável não serve como prova. Comece do zero: a primeira visita depois da instalação apresenta o banner a todo mundo.

Próximos passos

  1. Instale o snippet pelo método A ou B e coloque o loader.js na lista de exclusões do plugin de cache.
  2. Faça a verificação de seis passos acima, incluindo a compra de teste se for loja.
  3. Rode o scanner gratuito depois de limpar o cache e compare com o inventário feito antes: o que sobrou é plugin injetando por conta própria.
  4. Se você anuncia no Google, leia o guia do Consent Mode v2 e confira o parâmetro gcs nas requisições.

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.