O banner de cookies diz "Rejeitado", mas o rastreamento continua a carregar: como testar e corrigir

O banner de cookies diz "Rejeitado", mas o rastreamento continua a carregar: como testar e corrigir

Atualizado: 27 de outubro de 2026
16 min de leitura
Guia
Auditor de segurança
Estratega de marketing

A 22 de outubro de 2026, o dono de uma loja Shopify perguntou no r/shopify como é que outros lidam com scripts que continuam a carregar depois de o visitante clicar em Rejeitar. O banner dizia uma coisa e o navegador fazia outra. É o problema de cookies mais frequente em qualquer plataforma: o banner guarda a escolha, mas nada na página está ligado para lhe obedecer. WooCommerce, Shopify, uma loja headless em Next.js ou Astro e um WordPress comum falham da mesma forma, porque as fugas vêm de vídeos incorporados, tipos de letra, código do tema e configuração de etiquetas, e não do plugin do banner.

Este guia mostra como verificar, só com o navegador, o que o seu site envia depois de Rejeitar, que pedidos costumam escapar, o que o modo de consentimento avançado da Google transmite de propósito e como bloquear cada um. Cada ponto remete para a norma, a decisão ou a documentação do fornecedor. É um guia prático de testes, não aconselhamento jurídico.

#Porque é que o rastreamento carrega mesmo depois de rejeitar os cookies

A publicação que abriu a discussão resume bem a divisão:

Os píxeis das aplicações são fáceis. A Shopify trata deles. O resto? Vídeos do YouTube, Google Fonts, widgets de chat, scripts de SEO e de análise: nada. Em janeiro de 2022, um tribunal de Munique atribuiu 100 euros a um visitante porque um site passou o endereço IP dele à Google através do Google Fonts, sem consentimento.

(u/Plus_Cell394, r/shopify, 22 de outubro de 2026, tradução própria)

Um banner só controla o que está registado nele. Código fixo no tema, colado num campo do rodapé, trazido por um bloco de incorporação ou carregado por um plugin que ignora a interface do banner corre ao carregar a página, seja qual for a resposta. O banner mostra “Rejeitado” e tem razão quanto ao próprio estado. A página é que nunca lhe perguntou nada.

#O que diz o direito europeu: Planet49 e as Diretrizes 2/2023 do CEPD

A regra está no artigo 5.º, n.º 3, da Diretiva ePrivacy: guardar informação no equipamento do utilizador ou aceder a informação lá guardada exige, em regra, consentimento. Em Portugal a autoridade de controlo para a proteção de dados é a CNPD.

O Tribunal de Justiça decidiu no acórdão Planet49 (C-673/17) que uma caixa pré-assinalada não é consentimento válido e que a regra se aplica quer a informação seja ou não um dado pessoal. As Diretrizes 2/2023 do CEPD sobre o âmbito técnico do artigo 5.º, n.º 3 (versão 2.0, adotada a 7 de outubro de 2024), incluem o JavaScript com que uma entidade instrui o navegador a enviar pedidos assíncronos com informação, e têm secções próprias sobre píxeis de rastreamento e sobre rastreamento apenas por endereço IP.

“Não usamos cookies” não encerra, portanto, a questão. As diretrizes lembram que a aplicação da regra não significa sempre que seja preciso consentimento, porque há exceções. Se alguma se aplica é uma questão jurídica. Se o pedido acontece, isso pode verificar sozinho.

#Como testar o banner de cookies nas ferramentas de programador

Chrome, Brave, Firefox e Edge funcionam da mesma maneira.

  1. Abra um perfil novo ou uma janela privada sem extensões. Os bloqueadores de anúncios escondem precisamente os pedidos que procura.
  2. Abra as ferramentas de programador antes de carregar a página. No separador Network, ative “Preserve log” e “Disable cache”.
  3. Carregue a página inicial sem tocar no banner. Anote todos os domínios externos. Antes da escolha, nada opcional deve carregar.
  4. Clique em Rejeitar e percorra uma página de produto, uma página com vídeo, o contacto e o carrinho. As fugas estão muitas vezes em modelos que a página inicial não usa.
  5. Filtre a lista por partes de domínio: google, gstatic, doubleclick, facebook, tiktok, youtube, hotjar, clarity, o nome do fornecedor de chat.
  6. No separador Application (Storage no Firefox) reveja Cookies, Local storage e Session storage de cada origem. Tudo o que vá além do registo da recusa e dos cookies funcionais de sessão precisa de justificação.
  7. Repita com Aceitar para confirmar que as ferramentas funcionam quando são permitidas.

Registe o resultado numa tabela: domínio, página, antes da escolha, depois de Rejeitar, depois de Aceitar. É a sua lista de correções.

#Que pedidos escapam com mais frequência

OrigemComo aparece no NetworkCausa habitual
YouTube ou Vimeo incorporadoyoutube.com, ytimg.com, googlevideo.com ao carregar a páginaiframe simples no conteúdo ou num bloco do tema
Google Fontsfonts.googleapis.com e fonts.gstatic.comTema ou plugin vai buscar as fontes à Google em vez de ficheiros locais
Widget de chatScript do fornecedor e websocket em todas as páginasCódigo colado no rodapé ou nas definições do tema
Mapasmaps.googleapis.com, mosaicos do mapaLocalizador de lojas ou mapa na página de contacto
Píxeis fixos no temaconnect.facebook.net, analytics.tiktok.com, etiquetas do Google AdsCódigo nos campos do cabeçalho, fora do sistema de consentimento
Etiquetas no gestor de etiquetasDisparam na pré-visualização do GTM com consentimento recusadoEtiquetas sem definições de consentimento ou acionadores em todas as páginas

A Google descreve o modo de privacidade melhorada do YouTube (youtube-nocookie.com) como impedindo que as visualizações incorporadas influenciem a personalização do espectador no YouTube. Não diz que o leitor não envia nada à Google, por isso trocar o domínio não basta.

Os tipos de letra têm decisão judicial. O tribunal regional de Munique (LG München I, 3 O 17493/20, 20 de janeiro de 2022) considerou que passar o endereço IP dinâmico de um visitante à Google através do Google Fonts sem consentimento violou os direitos dele, ordenou que a prática cessasse e atribuiu 100 euros de indemnização. O tribunal sublinhou que o Google Fonts pode ser usado sem o navegador se ligar a um servidor da Google.

Atualização de . A mesma fuga aparece em páginas de produto do WooCommerce com vídeo na galeria. Um leitor de YouTube ou Vimeo incorporado é um carregamento de terceiros que arranca logo ao abrir a página, a não ser que uma capa o substitua até o visitante carregar em reproduzir. Corrigimos isto no nosso plugin Reel, que põe vídeo na galeria de produto do WooCommerce. Desde a versão 1.0.27, os vídeos do YouTube e do Vimeo mostram uma capa com botão de reprodução, e o leitor só carrega quando o cliente o prime. Para quem nunca reproduz, nada do leitor é carregado; o YouTube reproduz a partir de youtube-nocookie.com e a capa preenche o espaço 16:9 reservado, por isso nada se desloca. Com reprodução automática ligada, o leitor é incorporado logo, como antes. Na versão 1.1.0, com o vídeo como último diapositivo da galeria, o leitor também só carrega com um clique e a reprodução automática não se aplica. Verifique a sua loja no separador Network com o consentimento recusado. Se surgirem pedidos a youtube.com, ytimg.com ou domínios do Vimeo antes de qualquer clique, a incorporação precisa de uma capa com carregamento ao clicar.

#Modo de consentimento v2 da Google: o que o básico e o avançado ainda enviam

Se vê pedidos ao Google Analytics depois de Rejeitar, confirme primeiro que modo tem ativo. A descrição do modo de consentimento distingue dois:

  • Básico: as etiquetas da Google ficam bloqueadas até o visitante interagir com o banner. Segundo a Google, nada é enviado antes do consentimento, nem sequer o estado por defeito.
  • Avançado: as etiquetas carregam logo, com recusa por defeito. Enquanto não há consentimento, enviam o estado e medições sem cookies. Com analytics_storage recusado, o Google Analytics não lê nem grava os seus cookies, mas as medições continuam a seguir para domínios do Analytics “para medição básica e modelação”.

O modo avançado gera, portanto, pedidos à Google depois de Rejeitar de forma intencional. Se isso é aceitável no seu site é precisamente a questão do artigo 5.º, n.º 3, a decidir com o seu consultor, e não pela etiqueta. Um participante no r/woocommerce disse o mesmo do ponto de vista de quem testa:

No caso da Google, um pedido de rede por si só não significa que a configuração esteja errada: o Consent Mode avançado pode enviar pings sem cookies enquanto o consentimento está recusado.

(u/anamap_alex, r/woocommerce, 7 de outubro de 2026, tradução própria)

O guia de implementação da Google aponta dois erros que causam fugas reais em ambos os modos: o comando com o estado por defeito tem de correr antes de config e event, e um banner carregado de forma assíncrona precisa de wait_for_update.

#Shopify, WooCommerce e headless: onde o código contorna o banner

A documentação da Shopify sobre píxeis web diz que as extensões de píxel de aplicações respeitam a Customer Privacy API e, nas regiões que exigem consentimento, só correm depois de este ser dado. O código do tema não tem essa proteção. Para ele existe a Customer Privacy API, com analyticsProcessingAllowed(), marketingAllowed() e o evento visitorConsentCollected. O estado por defeito depende das definições de privacidade da loja: nas regiões sem exigência de consentimento tudo é permitido, e um mercado mal configurado parece um banner avariado.

Em WooCommerce, WordPress e headless não há área isolada ao nível da plataforma. Verifique os campos de código do cabeçalho e do rodapé, os plugins que imprimem as suas próprias etiquetas (avaliações, chat, integrações Meta e Google) e o conteúdo incorporado nos artigos. Se depois de Aceitar vir dois pedidos a fbevents.js, o píxel está carregado duas vezes, pelo GTM e por um plugin. O nosso guia do Google Analytics 4 explica como ligar as etiquetas da Google ao consentimento, e o artigo sobre scripts de terceiros mostra como ver o que cada script carrega.

Atualização de . A ferramenta de consentimento é ela própria código que corre em todas as páginas, por isso precisa de atualizações e de monitorização como qualquer outro plugin. O relatório semanal de vulnerabilidades da Wordfence de 12 a 18 de outubro de 2026 lista quatro plugins de consentimento. No Complianz até à versão 7.5.5, um visitante sem sessão iniciada podia deixar no conteúdo de um comentário um script persistente (stored XSS), que só é executado depois de o comentário ser aprovado; a versão 7.5.6 corrige-o. O WPConsent até 1.1.9 tinha uma falha semelhante através de comentários quando a função Script Blocking está ativa (corrigida na 1.2.0). A Record of Consent Extension for Complianz até 2.5 guardava script injetado através do parâmetro uid (corrigida na 2.6), e o Lightweight Cookie Notice até 1.19 tinha escrita no código uma chave de segurança do W3 Total Cache conhecida publicamente, o que conta nos sites que também usam o W3 Total Cache (corrigido na 1.20). Coloque o plugin de consentimento no mesmo calendário de atualizações e nos mesmos alertas de vulnerabilidades que o resto da instalação. A nossa auditoria de segurança WordPress inclui essa verificação.

#Como verificar as definições de consentimento no Google Tag Manager

A ajuda do Tag Manager sobre o modo de consentimento descreve três funcionalidades que resolvem a maior parte das dúvidas do tipo “porque é que esta etiqueta disparou”:

  1. Acionador Consent Initialization - All Pages. Existe em todos os contentores web. Dispara antes de todos os outros acionadores, incluindo Initialization, e destina-se apenas às etiquetas que definem ou atualizam o consentimento, como o modelo do banner. Se o banner corre num acionador posterior, outras etiquetas disparam antes de existir qualquer estado de consentimento.
  2. Additional Consent Checks em cada etiqueta (Advanced Settings > Consent Settings). O valor por defeito “Not set” significa que não há verificação adicional. Com “Require additional consent for tag to fire”, a etiqueta só dispara se todos os tipos de consentimento indicados estiverem concedidos. Uma etiqueta sem verificações de consentimento incorporadas, como um píxel da Meta colado em Custom HTML, dispara de outra forma seja qual for a escolha do visitante.
  3. Consent Overview. Ativa-se em Admin > Container Settings. Separa as etiquetas em “Consent Not Configured” e “Consent Configured” e permite alterar várias de uma vez. Cada etiqueta de marketing no primeiro grupo é uma fuga provável.

Confirme depois no Tag Assistant. O guia da Google para depurar o modo de consentimento indica que se deve escolher o primeiro evento Consent no resumo, confirmar que ad_storage, ad_user_data, ad_personalization e analytics_storage foram definidos e comparar as colunas On-page Default e On-page Update no separador Consent. Um erro típico é o estado por defeito chegar tarde: a página abre, uma etiqueta de anúncios dispara e só depois o estado passa a denied. A Google desaconselha ainda chamar o comando de consentimento gtag a partir de uma etiqueta Custom HTML.

#Shopify, WordPress, Next.js e Cloudflare Zaraz: o que cada ferramenta bloqueia

  • Shopify com banner próprio: a escolha grava-se com setTrackingConsent() para as finalidades analytics, marketing e preferences e, segundo a documentação, apenas depois de uma ação do visitante, nunca de forma automática. shouldShowBanner() indica se o visitante está numa região com banner, mas não se já consentiu. privacyBanner.showPreferences() volta a abrir as preferências e serve para uma ligação fixa no rodapé. Para lojas headless em Hydrogen, a Shopify remete para Hydrogen Analytics e consentimento, que gere a sessão no servidor para que o consentimento persista e seja respeitado no checkout.
  • WordPress e WooCommerce: o plugin WP Consent API uniformiza a forma como o plugin do banner e os restantes plugins trocam categorias de consentimento, mas não gere consentimento sozinho. Segundo a descrição, se nenhum plugin de consentimento definir o tipo de consentimento, a função devolve false e todas as categorias passam a contar como permitidas. Iframes de terceiros continuam a ter de ser bloqueados pelo plugin de consentimento.
  • Next.js: a documentação de @next/third-parties diz que GoogleTagManager carrega o contentor depois da hidratação e que YouTubeEmbed usa lite-youtube-embed. Nenhum dos dois verifica consentimento. O lite-youtube-embed usa youtube-nocookie.com, mas a miniatura por defeito vem de i.ytimg.com, um domínio da Google, antes de qualquer clique.
  • Cloudflare Zaraz: a documentação de gestão de consentimento do Zaraz explica que uma ferramenta acabada de adicionar não tem finalidade atribuída e ignora o consentimento por defeito. Atribua uma finalidade a cada ferramenta. zaraz.showConsentModal() volta a abrir a janela de consentimento.

#Como descobrir que script ou plugin fez o pedido

A referência do painel Network do Chrome descreve as ferramentas para chegar à origem. Em More filters, “3rd-party requests” mostra só pedidos de outra origem. O filtro domain: aceita asterisco, como domain:*.google.com, e cookie-name: mostra que resposta definiu um cookie. A coluna Initiator liga, no caso de scripts, à linha exata do ficheiro de origem: é aí que se vê se o responsável é o tema, um plugin, o contentor ou um excerto colado. Network request blocking bloqueia um padrão de endereço para testar se a página continua a funcionar sem ele. Para guardar prova do teste, use Export HAR (sanitized): o Chrome deixa de fora dados sensíveis como cookies, e o ficheiro pode seguir para um pedido de suporte.

#Tabela de diagnóstico

O que vê depois de RejeitarCausa provávelOnde verificar
Pedidos ao Google Analytics, sem cookie _gaModo de consentimento avançado a funcionar como previstoA escolha do modo, não a etiqueta
Aparecem cookies _ga ou _gclEstado por defeito em falta ou definido depois das etiquetasTag Assistant, primeiro evento Consent
Píxel da Meta ou TikTok disparaEtiqueta com “Not set” ou píxel de um plugin fora do GTMConsent Overview, coluna Initiator
fbevents.js carrega duas vezes depois de AceitarPíxel no GTM e num plugin da plataformaColuna Initiator nos dois pedidos
Fuga só em páginas de produto ou artigosIncorporação ou widget nesse modeloTeste em cada modelo
Fuga só em alguns paísesPredefinições regionais ou regiões da Shopify sem esse paísLocalização simulada no Chrome, definições de privacidade da loja
Scripts continuam depois de retirar o consentimentoO banner grava a nova escolha mas não envia atualizaçãoEvento de atualização no Tag Assistant

#Como fechar cada fuga

  • Vídeos e mapas: substitua o iframe por um marcador que só cria o iframe depois de um clique ou do consentimento. Sirva a miniatura a partir do seu servidor, senão ela própria é um pedido a terceiros.
  • Tipos de letra: descarregue os ficheiros, sirva-os a partir do seu domínio com @font-face e remova todas as ligações a fonts.googleapis.com.
  • Chat: mostre um botão local “Fale connosco” e carregue o script do fornecedor depois do clique ou do consentimento.
  • Píxeis fixos: passe-os para o gestor de etiquetas ou para o sistema de píxeis da plataforma, para que a verificação de consentimento se aplique.
  • Gestor de etiquetas: defina requisitos de consentimento em cada etiqueta e teste na pré-visualização com consentimento recusado.

Depois, repita o teste. Se, após Rejeitar, a lista mostrar apenas o seu domínio e o que decidiu conscientemente permitir, o banner diz a verdade.

#Que desenhos de banner as autoridades já contestaram

O relatório da Cookie Banner Taskforce do CEPD, adotado a 17 de janeiro de 2023, reúne práticas analisadas pelas autoridades nacionais de proteção de dados em queixas coordenadas. A maioria verifica-se na mesma sessão do teste de rede:

  • Sem botão de rejeitar na primeira camada. Uma grande maioria das autoridades considerou infração um banner com botão de aceitar e sem opção de recusa na mesma camada.
  • Caixas pré-assinaladas na segunda camada. O grupo confirmou que não dão consentimento válido.
  • Uma ligação em vez de um botão para rejeitar, e cores ou contraste que destacam “aceitar tudo”. O contraste, segundo o relatório, avalia-se caso a caso.
  • Cookies classificados como essenciais sem o serem. O relatório lembra que cabe ao responsável pelo site manter a lista de cookies atualizada e demonstrar porque é que cada um é essencial.
  • Nenhuma forma simples de retirar o consentimento. Espera-se uma ligação ou um pequeno ícone sempre visível que reabra as definições de privacidade.

A nossa auditoria de conformidade UE para WooCommerce inclui este teste em cada modelo, e a verificação gratuita do site mostra os pedidos a terceiros de um endereço público.

Próximo passo

Transforme o artigo numa implementação real

Este bloco reforça a ligação interna e conduz o leitor para o passo seguinte mais útil dentro da arquitetura do site.

Explorar outros serviços WordPress e base de conhecimento

Perguntas frequentes

Respostas práticas para aplicar o tema na execução real.

Um pedido sem cookie também precisa de consentimento#
Pode precisar. As diretrizes do CEPD tratam o JavaScript que faz o navegador enviar informação como acesso ao equipamento, e o acórdão Planet49 diz que a regra se aplica quer se trate ou não de dados pessoais. Saber se alguma exceção se aplica ao seu caso é uma avaliação jurídica.
O youtube-nocookie.com chega para travar o rastreamento do YouTube#
Não. A Google descreve o modo de privacidade melhorada como impedindo que as visualizações do vídeo incorporado influenciem a personalização do YouTube para o espectador. Não diz que o leitor deixa de contactar a Google. Só um marcador que cria o iframe depois de um clique ou do consentimento evita o pedido.
Porque é que os píxeis de aplicações da Shopify funcionam e os scripts do meu tema não#
As extensões de píxel de aplicações correm na área isolada da Shopify e respeitam a Customer Privacy API automaticamente. Um script colado no theme.liquid corre fora dessa área e carrega em cada visita até ser condicionado a analyticsProcessingAllowed() ou marketingAllowed().
Alojar o Google Fonts no próprio servidor resolve o problema da decisão de Munique#
Para os tipos de letra, sim: o tribunal fundamentou que o Google Fonts pode ser usado sem o navegador se ligar a um servidor da Google. Depois da alteração, confirme que nenhum plugin, tema ou conteúdo incorporado continua a carregar fonts.googleapis.com ou fonts.gstatic.com.

Artigos Relacionados