DataFirefly Cookie Consent: guia completo
Instalação, configuração do banner, Google Consent Mode v2, auditoria dos trackers e registo de consentimento do plugin WordPress DataFirefly Cookie Consent.
Apresentação
O DataFirefly Cookie Consent é um plugin WordPress e WooCommerce de gestão do consentimento de cookies. Combina três blocos: um banner de consentimento conforme ao RGPD e às recomendações das autoridades europeias de proteção de dados, a emissão nativa dos sinais do Google Consent Mode v2 antes de qualquer tag da Google, e uma auditoria que deteta os trackers realmente carregados no seu site, com registo de prova exportável.
Requisitos
- WordPress 6.2 ou superior
- PHP 8.0 ou superior
- WooCommerce 8.0+ (opcional, o plugin também funciona só com WordPress, com compatibilidade HPOS declarada)
- GTM ou GA4 já instalado, se quiser tirar partido do Consent Mode v2 (o plugin não instala as tags da Google por si)
Instalação
- Descarregue o ficheiro
df-cookie-consent.zipa partir da sua conta DataFirefly. - Na administração do WordPress, vá a Plugins → Adicionar → Carregar plugin, selecione o ZIP e clique em Instalar agora.
- Clique em Ativar. Na ativação, o plugin cria a tabela de registo
wp_dfcc_consent_log, gera um salt aleatório para o hash dos IP e agenda duas tarefas cron (limpeza diária do registo e análise dos trackers). - Aparece um novo menu Cookie Consent na barra lateral da administração, com quatro páginas: Painel, Definições, Auditoria e Registo.
O banner aparece de imediato no front-end com as definições predefinidas (esquema de barra no fundo da página, tema claro, modo opt-in, as 4 categorias ativas).
Configuração do banner
Todas as definições estão em Cookie Consent → Definições.
Comportamento geral
- Ativar o banner: interruptor global do plugin.
- Modo: opt-in (obrigatório na UE, sem qualquer cookie não essencial antes do consentimento) ou opt-out.
- Botão Recusar tudo no primeiro nível: ativo por predefinição, em linha com as recomendações das autoridades europeias. Não o desative se o seu público for europeu.
- Duração do cookie de consentimento: 180 dias por predefinição. A escolha do utilizador é guardada no cookie
dfcc_consent(codificado, first-party). - Versão da política: incremente este número quando a sua política de cookies mudar de forma substancial. O banner é automaticamente reapresentado a todos os visitantes e o registo guarda a nova versão.
Aparência
- Esquema: barra em largura total, cartão de canto ou modal centrada.
- Posição: topo ou fundo da página (nos esquemas de barra e de cartão).
- Tema: claro, escuro ou automático (segue a preferência de sistema do visitante através do prefers-color-scheme).
- Cor de destaque: personaliza a cor do botão principal.
Em telemóvel (menos de 640 px), o banner passa automaticamente a ecrã inteiro para se manter legível. As animações respeitam o prefers-reduced-motion.
Categorias de cookies
Estão pré-configuradas quatro categorias, cada uma com uma designação e uma descrição alteráveis:
- Necessários (necessary): sempre ativos, não desativáveis pelo visitante: carrinho, sessão, segurança.
- Funcionais (functional): preferências, idioma, chat.
- Medição de audiência (analytics): Google Analytics, Matomo, etc.
- Publicidade dirigida (marketing): Google Ads, Meta Pixel, remarketing.
Textos e ligações
O título do banner, o texto de introdução e as designações dos quatro botões (Aceitar tudo, Recusar tudo, Personalizar, Guardar as minhas escolhas) são alteráveis nas definições. Indique também os URL da sua política de privacidade e da sua política de cookies, que aparecem como ligações discretas por baixo dos botões. Todos os textos passam pelas funções de tradução do WordPress: o plugin é entregue com 5 catálogos (FR, EN, ES, DE, IT) e pode ser substituído através do Loco Translate.
Google Consent Mode v2
É o núcleo técnico do plugin. Desde março de 2024, a Google exige que os sites europeus emitam os 7 sinais do Consent Mode v2 para continuarem a medir as conversões do Google Ads e a construir as audiências do GA4.
Funcionamento
O plugin imprime um bloco gtag('consent', 'default', ...) no head do HTML com a prioridade 1 do wp_head, ou seja, antes de qualquer contentor GTM ou tag GA4 carregado de forma padrão. Os 7 sinais emitidos:
ad_storage,ad_user_data,ad_personalization: comandados pela categoria Publicidade dirigidaanalytics_storage: comandado pela categoria Medição de audiênciafunctionality_storage,personalization_storage: comandados pela categoria Funcionaissecurity_storage: sempre granted (recomendação da Google)
O mapeamento entre categorias e sinais é automático: não é necessária qualquer parametrização manual. Quando o visitante faz a sua escolha, é emitido de imediato um gtag('consent', 'update', ...), e a escolha é reaplicada como estado predefinido em cada página seguinte.
Definições do Consent Mode
- Região EEE: por predefinição, o deny estrito só se aplica aos 31 países do Espaço Económico Europeu (mais Reino Unido e Suíça), através do parâmetro region do gtag; o resto do mundo fica em granted. Deteção nativa da Cloudflare através do cabeçalho CF-IPCountry.
- url_passthrough: ativo por predefinição. Conserva os identificadores de clique gclid e dclid nos URL mesmo em caso de recusa, o que permite a medição de conversões sem cookies.
- ads_data_redaction: ativo por predefinição. Censura os dados de utilizador enviados à Google quando o ad_storage está denied.
- wait_for_update: 500 ms por predefinição. Prazo dado às tags da Google para esperarem pela atualização do consentimento.
Verificar que tudo funciona
- Abra o seu site em navegação privada, abra a consola do navegador e escreva
dataLayer: deve ver a entrada consent default antes da entrada gtm.js. - No Google Tag Assistant ou no modo Preview do GTM, o separador Consent deve mostrar os 7 sinais com o respetivo estado.
- Aceite o banner e volte a escrever
dataLayer: deve aparecer uma entrada consent update com os novos estados.
Auditoria de conformidade
A página Cookie Consent → Auditoria lança uma análise que vai buscar a sua página inicial e examina o HTML realmente servido.
O que a análise deteta
- 23 trackers conhecidos: Google Analytics 4, GTM, Meta Pixel, TikTok, LinkedIn, Pinterest, Snapchat, Twitter/X, Bing UET, Matomo, Microsoft Clarity, Hotjar, Mixpanel, Plausible, HubSpot, Intercom, Crisp, Tawk, YouTube, Vimeo, Stripe e outros, cada um classificado na sua categoria de consentimento esperada.
- 11 plugins WordPress de risco: MonsterInsights, Site Kit, PixelYourSite, Facebook/Pinterest/TikTok for WooCommerce, HubSpot, MC4WP e outros plugins que injetam trackers por sua conta.
- Cookies colocados no servidor: snapshot com identificação automática do fornecedor (_ga, _fbp, _gcl, etc.).
Pontuação e recomendações
A análise produz uma pontuação de conformidade de 0 a 100 baseada na diferença entre as categorias que declarou e os trackers realmente detetados. Os problemas são classificados em três níveis, critical, warning e info, cada um com uma recomendação acionável (por exemplo: foi detetado um tracker de marketing quando a categoria está desativada no banner). Corre também uma análise automática em segundo plano através do cron dfcc_cron_scan_trackers.
Registo de consentimento
A página Cookie Consent → Registo lista cada evento de consentimento guardado na tabela dedicada wp_dfcc_consent_log.
Dados guardados
- Data e hora em UTC, UID anónimo persistente (rastreabilidade de vários eventos do mesmo visitante)
- Tipo de evento: accept_all, reject_all, custom, withdraw
- Estado completo por categoria, versão da política e do banner
- IP com dupla proteção: hash SHA-256 com o salt aleatório gerado na ativação (irreversível), mais IP truncada a /24 (IPv4) ou /64 (IPv6) para análise anónima
- User agent, URL da página, referer, região, idioma e user_id do WordPress se houver sessão iniciada
Filtros e exportação
Filtre por período, tipo de evento ou UID, e depois exporte em CSV (BOM UTF-8, separador ponto e vírgula, abre diretamente no Excel) ou em JSON formatado. Estas exportações constituem a sua prova de consentimento em caso de fiscalização pela autoridade de proteção de dados.
Retenção
Por predefinição, o registo é conservado 1825 dias (5 anos, duração recomendada para a prova de consentimento). A limpeza automática corre todas as noites através do cron dfcc_cron_purge_logs. A retenção é ajustável nas definições. Note que a desativação do plugin conserva os registos (prova de consentimento); só a desinstalação completa através de Plugins → Eliminar limpa a tabela, as opções e os crons.
Ligação «Gerir os meus cookies» no rodapé
A regulamentação impõe que o visitante possa alterar a sua escolha a qualquer momento. Duas opções:
- Shortcode: coloque
Gérer mes cookiesnum widget ou num menu de rodapé, e gera uma ligação que reabre a modal de personalização. - API JavaScript: chame
window.dfcc.open()a partir de qualquer elemento do seu tema.
API para programadores
API JavaScript
O objeto global window.dfcc expõe:
dfcc.open(): abre a modal de personalizaçãodfcc.accept(): aceita todas as categoriasdfcc.reject(): recusa todas as categorias opcionaisdfcc.withdraw(): retira o consentimento (evento withdraw registado)dfcc.getConsent(): devolve o estado completo do consentimentodfcc.hasConsent('analytics'): verifica uma categoria em concreto (útil para condicionar os seus próprios scripts)
Endpoint REST
Está disponível um endpoint POST em wp-json/dfcc/v1/consent para registar um evento de consentimento a partir do seu próprio código (protegido por nonce).
Hooks do WordPress
dfcc_before_banner_render: ação acionada antes da apresentação do banner (para o ocultar em determinadas páginas, por exemplo)dfcc_after_consent_logged: ação acionada após cada escrita no registo (para sincronizar um CRM, por exemplo)dfcc_consent_mode_defaults: filtro sobre os estados predefinidos dos 7 sinais do Consent Modedfcc_scan_trackers_patterns: filtro para acrescentar os seus próprios padrões de deteção ao scanner
Resolução de problemas
- Os sinais do Consent Mode não aparecem antes do GTM: verifique que nenhum plugin de desempenho desloca ou difere os scripts do head. O bloco dfcc-consent-mode-default tem de continuar inline e não diferido.
- O banner reaparece a cada visita: verifique que um sistema de cache não está a servir uma página fixa com um cookie antigo, e que a duração do cookie não está a 0.
- A análise de auditoria falha: o servidor tem de conseguir fazer um pedido HTTP para a sua própria página inicial. Em alguns alojamentos com o loopback bloqueado, autorize os pedidos locais ou verifique a firewall.
- Os IP registados são os da Cloudflare: o plugin lê o CF-Connecting-IP com prioridade. Se o problema persistir, verifique que a configuração do seu servidor transmite mesmo os cabeçalhos da Cloudflare.