LGPD e cookies em conformidade para encanador em Anália Franco

Guia técnico para implementar LGPD e cookies em site de encanador Anália Franco com WordPress profissional.

Mais de 60% dos sites WordPress no Brasil ainda não possuem banner de cookies em conformidade com a LGPD, segundo levantamento da ANPD de 2023. Para um encanador em Anália Franco que depende de formulários de contato e WhatsApp para captar emergências, a não conformidade representa risco jurídico real e perda de confiança do cliente local.

A legislação exige transparência sobre quais dados pessoais são coletados, para qual finalidade e com qual base legal. No caso de prestadores de serviço hidráulico, o site processa nome, telefone, endereço e geolocalização aproximada — dados sensíveis que demandam cuidado redobrado no tratamento e armazenamento.

Este guia técnico aborda a implementação prática de LGPD e cookies em WordPress, com foco em performance, usabilidade e conformidade documental para o nicho de encanamento residencial na zona leste de São Paulo.

Mapeamento de cookies e scripts no site do encanador

Antes de instalar qualquer plugin de consentimento, faça auditoria completa do que roda no frontend. Use as ferramentas de desenvolvedor do navegador (aba Application > Cookies) e extensões como Wappalyzer para identificar:

  • Cookies de sessão do WordPress (wp-settings-, wordpress_logged_in_)
  • Google Analytics 4 (_ga, ga*)
  • Facebook Pixel (_fbp, _fbc)
  • Google Ads / Google Tag Manager
  • Chat widgets (WhatsApp Business, Tawk.to, Crisp)
  • Fontes externas (Google Fonts, Font Awesome CDN)
  • Plugins de cache e segurança (Cloudflare, WP Rocket)

Cada item deve ser classificado em: Estritamente Necessários, Preferências, Estatísticas ou Marketing. Essa categorização fundamenta o banner granular e a política de privacidade.

Política de privacidade específica para encanador Anália Franco

Modelos genéricos falham ao endereçar a realidade do negócio. A política deve conter seções obrigatórias:

  1. Identificação do controlador: Razão social, CNPJ, endereço físico em Anália Franco, e-mail de contato do responsável
  2. Finalidades específicas: Orçamento via formulário, agendamento WhatsApp, geolocalização para deslocamento, histórico de atendimentos
  3. Base legal por finalidade: Execução de contrato (orçamento), legítimo interesse (analytics anonimizado), consentimento (marketing)
  4. Compartilhamento: WhatsApp Business API (Meta), Google Analytics, provedor de hospedagem, contador
  5. Retenção: Dados de orçamento por 5 anos (obrigação fiscal), logs de navegação por 12 meses, cookies de marketing até revogação
  6. Direitos do titular: Acesso, retificação, exclusão, portabilidade, oposição, revisão de decisões automatizadas
  7. Contato do encarregado: Canal direto (e-mail/telefone) para exercício de direitos

area-do-cliente-para-historico-de-manutencoes-em-moema demonstra como estruturar área logada com histórico de serviços, facilitando o direito de acesso e portabilidade de dados do cliente.

Implementação técnica do banner de consentimento

Evite plugins pesados que injetam CSS/JS desnecessários. A abordagem leve usa três componentes:

1. JavaScript vanilla para gerenciamento de consentimento

// cookie-consent.js - Carregar no footer via wp_enqueue_script
const CONSENT_KEY = 'lgpd_consent_v2';
const CONSENT_VERSION = '2024-01-15';

function getConsent() {
  try {
    const stored = localStorage.getItem(CONSENT_KEY);
    if (!stored) return null;
    const parsed = JSON.parse(stored);
    return parsed.version === CONSENT_VERSION ? parsed : null;
  } catch { return null; }
}

function setConsent(categories) {
  const consent = {
    version: CONSENT_VERSION,
    timestamp: new Date().toISOString(),
    categories: categories,
    necessary: true
  };
  localStorage.setItem(CONSENT_KEY, JSON.stringify(consent));
  applyConsent(consent);
  pushToDataLayer(consent);
}

function applyConsent(consent) {
  // Carrega scripts conforme categorias aceitas
  if (consent.categories.analytics) loadGA4();
  if (consent.categories.marketing) loadPixel();
  if (consent.categories.chat) loadWhatsAppWidget();
}

function pushToDataLayer(consent) {
  if (window.dataLayer) {
    window.dataLayer.push({
      event: 'consent_update',
      consent_status: consent.categories
    });
  }
}

// Inicialização
document.addEventListener('DOMContentLoaded', () => {
  const existing = getConsent();
  if (existing) {
    applyConsent(existing);
  } else {
    showBanner();
  }
});

2. PHP no functions.php para controle server-side

// functions.php - Controle de scripts condicional
add_action('wp_enqueue_scripts', function() {
  $consent = isset($_COOKIE['lgpd_consent_v2']) ? json_decode(stripslashes($_COOKIE['lgpd_consent_v2']), true) : null;
  
  // Scripts necessários sempre carregam
  wp_enqueue_script('site-core', get_template_directory_uri() . '/assets/js/core.js', [], '1.0', true);
  
  // Condicionais
  if ($consent && ($consent['categories']['analytics'] ?? false)) {
    wp_enqueue_script('ga4', 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXX', [], null, true);
    wp_add_inline_script('ga4', "window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-XXXXXXXX');");
  }
  
  if ($consent && ($consent['categories']['marketing'] ?? false)) {
    wp_enqueue_script('fbpixel', 'https://connect.facebook.net/en_US/fbevents.js', [], null, true);
  }
  
  if ($consent && ($consent['categories']['chat'] ?? false)) {
    wp_enqueue_script('whatsapp-widget', get_template_directory_uri() . '/assets/js/whatsapp-widget.js', [], '1.0', true);
  }
  
  // Passa consentimento para JS
  wp_localize_script('site-core', 'LGPD_CONSENT', $consent ?: ['categories' => []]);
});
add_action('wp_footer', function() {
  $policy_url = home_url('/politica-de-privacidade/');
  echo <<<HTML
  <div id="lgpd-banner" class="lgpd-banner" role="dialog" aria-labelledby="lgpd-title" aria-describedby="lgpd-desc" hidden>
    <div class="lgpd-content">
      <h2 id="lgpd-title">Privacidade e Cookies</h2>
      <p id="lgpd-desc">Usamos cookies para melhorar sua experiência, analisar tráfego e personalizar anúncios. Ao clicar em "Aceitar todos", você concorda com nossa <a href="{$policy_url}">Política de Privacidade</a>.</p>
      <div class="lgpd-options">
        <label><input type="checkbox" name="analytics" checked disabled> Estritamente necessários</label>
        <label><input type="checkbox" name="analytics" id="opt-analytics"> Analytics (GA4)</label>
        <label><input type="checkbox" name="marketing" id="opt-marketing"> Marketing (Pixel, Ads)</label>
        <label><input type="checkbox" name="chat" id="opt-chat"> Chat WhatsApp</label>
      </div>
      <div class="lgpd-actions">
        <button type="button" id="lgpd-reject" class="btn-secondary">Recusar opcionais</button>
        <button type="button" id="lgpd-accept-selected" class="btn-primary">Aceitar selecionados</button>
        <button type="button" id="lgpd-accept-all" class="btn-primary">Aceitar todos</button>
      </div>
    </div>
  </div>
  HTML;
});

Hospedagem local de fontes e recursos terceiros

Google Fonts e Font Awesome CDN enviam IP do visitante para servidores nos EUA — transferência internacional de dado pessoal que exige base legal adequada. A solução técnica:

  1. Baixe as fontes via google-webfonts-helper ou npm
  2. Converta para WOFF2 (melhor compressão)
  3. Sirva via CDN próprio ou servidor com headers Cache-Control: public, max-age=31536000, immutable
  4. Declare no CSS com @font-face usando font-display: swap
  5. Remova links <link rel="preconnect" href="https://fonts.googleapis.com"> do header

Para Font Awesome, use o kit npm @fortawesome/fontawesome-free e importe apenas ícones utilizados via tree-shaking no build (Vite/webpack) ou copie SVGs individuais para sprite SVG inline.

como-criar-blocos-gutenberg-dinamicos-com-react ensina configuração de build moderno que facilita otimização de assets estáticos como fontes e ícones.

Registro de consentimento e prova de conformidade

A LGPD exige demonstração de conformidade (accountability). Implemente logging estruturado:

Campo Tipo Exemplo
consent_id UUID v4 a1b2-c3d4-e5f6
timestamp ISO 8601 UTC 2024-01-15T14:30:22.123Z
ip_hash SHA-256 truncado a1b2c3d4... (primeiros 8 chars)
user_agent string Mozilla/5.0...
policy_version string 2024-01-15
categories JSON {"analytics":true,"marketing":false}
action enum accept_all, accept_selected, reject

Armazene em tabela customizada WordPress (wp_lgpd_consent_logs) via $wpdb->insert() no endpoint AJAX que recebe o consentimento. Roteie para API REST /wp-json/lgpd/v1/consent com nonce verification.

Formulário de exercício de direitos do titular (Art. 18 LGPD)

Crie página /direitos-do-titular/ com formulário gravidade/forms ou Contact Form 7 que envie para e-mail do encarregado e registre no banco:

  1. Identificação: Nome, e-mail, telefone (opcional), CPF (apenas se necessário para verificação)
  2. Direito solicitado: Select com opções — Acesso, Retificação, Exclusão, Portabilidade, Oposição, Revogação consentimento, Revisão decisão automatizada
  3. Detalhamento: Textarea para especificar quais dados ou tratamento
  4. Comprovante: Upload opcional de documento com foto
  5. Confirmação: Checkbox “Declaro ser o titular dos dados ou representante legal”

Prazo de resposta: 15 dias (Art. 18, §1º). Configure automação via wp_schedule_single_event para lembrete interno.

autenticacao-via-application-passwords-na-rest-api mostra como proteger endpoints administrativos que acessam esses logs sensíveis.

Testes de validação e checklist de deploy

Antes de colocar em produção, execute:

  1. Teste de bloqueio: Navegue em modo anônimo, recuse todos opcionais, verifique no Network tab se GA4, Pixel e chat não carregaram
  2. Teste de aceite parcial: Aceite apenas Analytics, confirme GA4 carrega, Pixel e chat permanecem bloqueados
  3. Teste de persistência: Recarregue página, banner não deve reaparecer, scripts condicionais devem manter estado
  4. Teste de revogação: Adicione botão “Gerenciar cookies” no rodapé que reabre banner com preferências atuais
  5. Validação CLS/LCP: Banner não deve causar layout shift — reserve espaço com min-height ou aspect-ratio
  6. Auditoria Lighthouse: Performance > 90, Acessibilidade > 95, Best Practices > 90
  7. Verificação legal: Política de privacidade acessível no rodapé, link no banner, versão datada

socorro de desentupimento no Anália Franco

Conclusão prática

Conformidade LGPD em WordPress não exige plugins caros — exige arquitetura consciente: mapeamento rigoroso, consentimento granular, logs auditáveis e recursos terceiros sob controle. O encanador em Anália Franco ganha segurança jurídica, melhora Core Web Vitals ao eliminar scripts desnecessários e transmite profissionalismo ao cliente que valoriza privacidade. Implemente em camadas: banner leve hoje, logs estruturados amanhã, portal de direitos na próxima sprint.

Checklist prático

0 de 9 concluídos

Perguntas frequentes

Quais cookies exigem consentimento prévio segundo a LGPD?

Cookies de analytics, marketing, personalização e terceiros precisam de consentimento livre e informado. Cookies estritamente necessários para funcionamento do site dispensam consentimento, mas devem ser documentados na política de privacidade.

Como implementar banner de cookies sem plugins pesados?

Use JavaScript vanilla com localStorage para gerenciar consentimento, integrando ao GTM ou GA4 via dataLayer. Snippets no functions.php controlam carregamento condicional de scripts conforme preferências do usuário.

O encanador precisa de DPO (Encarregado de Dados)?

Pequenos prestadores de serviço geralmente não exigem DPO formal, mas devem designar responsável pelo tratamento de dados. Documente essa atribuição na política de privacidade com canal de contato para titulares.

Como provar conformidade em caso de fiscalização?

Mantenha logs de consentimento com timestamp, IP anonimizado e versão da política aceita. Implemente registro de alterações na política de privacidade e relatórios de acesso/retificação de dados solicitados por clientes.

Quais dados o site de encanador costuma coletar?

Formulários de contato capturam nome, telefone, endereço e descrição do problema. Analytics coleta IP, geolocalização aproximada e comportamento de navegação. WhatsApp Business API pode processar mensagens e metadados.

Posso usar Google Fonts e Font Awesome sem violar LGPD?

Servir fontes localmente elimina transferência de IP para servidores externos. Para CDNs, configure headers de privacidade e inclua na política de cookies como terceiros. Prefira self-hosted para máxima conformidade.