Pular para conteúdo

Gerenciamento de Consentimento

Entenda como o Complyr gerencia automaticamente o consentimento do Facebook Pixel para garantir conformidade total com a LGPD.


📖 Visão Geral

O gerenciamento de consentimento do Facebook Pixel pelo Complyr é completamente automático. Você não precisa escrever código adicional para controlar quando o Pixel pode ou não disparar. O script Complyr detecta o Pixel e gerencia seu ciclo de vida baseado no consentimento do usuário.

Princípios: - 🔒 Opt-in por padrão: Pixel bloqueado até consentimento explícito - 🎯 Granularidade: Controle baseado no propósito "Marketing e Publicidade" - ⚡ Dinâmico: Pixel carregado/bloqueado em tempo real - 💾 Persistente: Consentimento salvo entre sessões


🔍 Detecção Automática

Como o Complyr Detecta o Pixel

O script Complyr procura automaticamente pela função fbq no objeto window:

// Verificação interna do Complyr
if (typeof window.fbq === 'function') {
  // Facebook Pixel detectado
  // Aplica gerenciamento de consentimento
}

Quando a detecção ocorre: 1. Script Complyr carrega 2. Verifica se window.fbq existe 3. Se existir, intercepta chamadas fbq() 4. Bloqueia ou libera baseado em consentimento

Sem Configuração

Você não precisa informar ao Complyr que usa Facebook Pixel. A detecção é automática.


🎯 Propósitos e Mapeamento

O consentimento do Facebook Pixel é controlado pelo propósito "Marketing e Publicidade":

Propósito Estado Comportamento do Pixel
Marketing e Publicidade ✅ Granted Pixel carrega e dispara todos os eventos
Marketing e Publicidade ❌ Denied Pixel bloqueado completamente
Analytics e Métricas Opcional Pode ser configurado para permitir eventos básicos

Mapeamento Padrão

// Configuração interna do Complyr
const consentMapping = {
  marketing: {
    facebook_pixel: true,  // Pixel controlado por marketing
    google_ads: true,
    remarketing: true
  },
  analytics: {
    google_analytics: true,
    facebook_pixel: false  // Não controlado por analytics (padrão)
  }
};

Personalização

Você pode configurar no painel Complyr se o Pixel também deve respeitar o propósito "Analytics".


🔄 Estados de Consentimento

O Facebook Pixel pode estar em 4 estados durante sua interação com o Complyr:

stateDiagram-v2
    [*] --> Blocked: Primeira visita
    Blocked --> Loading: Usuário aceita
    Loading --> Active: Pixel inicializado
    Active --> Blocked: Usuário revoga
    Active --> Active: Visitas subsequentes
    Blocked --> Blocked: Consentimento negado

1. Estado: Blocked (Bloqueado)

Quando: Usuário ainda não aceitou consentimento de marketing.

Comportamento: - ❌ fbq() não executa - ❌ Script do Pixel não carregado - ❌ Nenhum cookie criado - ❌ Nenhum dado enviado ao Facebook

Código:

// Todas essas chamadas são bloqueadas
fbq('init', 'PIXEL_ID');           // ❌ Bloqueado
fbq('track', 'PageView');          // ❌ Bloqueado
fbq('track', 'AddToCart');         // ❌ Bloqueado


2. Estado: Loading (Carregando)

Quando: Usuário acabou de aceitar consentimento de marketing.

Comportamento: - ⏳ Script do Pixel sendo carregado dinamicamente - ⏳ Aguardando inicialização - ⏳ Fila de eventos aguardando execução

Duração: ~500ms até Pixel estar ativo.


3. Estado: Active (Ativo)

Quando: Usuário aceitou consentimento e Pixel está carregado.

Comportamento: - ✅ fbq() executa normalmente - ✅ Eventos disparados para Facebook - ✅ Cookies criados (_fbp, _fbc) - ✅ Remarketing ativo

Código:

// Todas essas chamadas funcionam
fbq('init', 'PIXEL_ID');           // ✅ Executa
fbq('track', 'PageView');          // ✅ Enviado ao Facebook
fbq('track', 'AddToCart', {...});  // ✅ Enviado ao Facebook


4. Estado: Revoked (Revogado)

Quando: Usuário revoga consentimento previamente concedido.

Comportamento: - ❌ Pixel bloqueado imediatamente - 🧹 Cookies do Facebook limpos - ❌ Eventos futuros bloqueados - 💾 Histórico de revogação salvo


🚀 Fluxo Completo de Consentimento

Primeira Visita

sequenceDiagram
    participant U as Usuário
    participant C as Complyr Script
    participant P as Facebook Pixel
    participant F as Facebook Servers

    U->>C: Visita site
    Note over C: Verifica consentimento
    Note over C: Não encontrado
    C->>U: Exibe banner
    Note over P: Pixel BLOQUEADO
    P--xF: Nenhum evento enviado

Validação:

// No console
localStorage.getItem('complyr_consent')  // → null
typeof window.fbq  // → "undefined" ou função bloqueada


Aceitação de Consentimento

sequenceDiagram
    participant U as Usuário
    participant C as Complyr Script
    participant P as Facebook Pixel
    participant F as Facebook Servers

    U->>C: Clica "Aceitar Todos"
    C->>C: Salva consentimento
    C->>P: Desbloqueia Pixel
    P->>P: Carrega script
    P->>F: fbq('init')
    P->>F: fbq('track', 'PageView')
    F-->>P: 200 OK

Validação:

// No console
JSON.parse(localStorage.getItem('complyr_consent'))
// → { status: "granted", purposes: { marketing: true } }

typeof window.fbq  // → "function"
window._fbq  // → objeto do Pixel carregado


Visita Subsequente

sequenceDiagram
    participant U as Usuário
    participant C as Complyr Script
    participant P as Facebook Pixel
    participant F as Facebook Servers

    U->>C: Retorna ao site
    C->>C: Carrega consentimento (localStorage)
    Note over C: Marketing = granted
    C->>P: Pixel liberado automaticamente
    P->>F: fbq('track', 'PageView')
    Note over U: Banner NÃO exibido

Resultado: Pixel funciona normalmente sem exibir banner.


🛡️ Bloqueio Dinâmico

Como Funciona o Bloqueio

O Complyr intercepta todas as chamadas à função fbq() usando um Proxy JavaScript:

// Implementação interna do Complyr (simplificado)
const originalFbq = window.fbq;

window.fbq = new Proxy(originalFbq, {
  apply(target, thisArg, args) {
    // Verifica consentimento
    const hasConsent = checkMarketingConsent();

    if (hasConsent) {
      // Libera: executa fbq() normalmente
      return target.apply(thisArg, args);
    } else {
      // Bloqueia: não executa
      console.log('[Complyr] Facebook Pixel bloqueado - sem consentimento');
      return undefined;
    }
  }
});

Vantagens: - ✅ Bloqueio em nível de função (não apenas tags GTM) - ✅ Funciona mesmo se Pixel carregado diretamente - ✅ Nenhum dado vaza para Facebook sem consentimento - ✅ Transparente para o desenvolvedor


💾 Persistência de Consentimento

Armazenamento

O consentimento é armazenado em 3 locais:

  1. localStorage (Frontend)

    localStorage.setItem('complyr_consent', JSON.stringify({
      status: 'granted',
      purposes: {
        marketing: true,
        analytics: true
      },
      timestamp: '2025-10-22T14:30:00Z'
    }));
    

  2. Backend Complyr (API)

  3. Histórico completo de consentimentos
  4. Auditável para conformidade LGPD
  5. Backup caso localStorage seja limpo

  6. Cookie de sessão (opcional)

  7. Para sincronização cross-domain
  8. Apenas metadados (não dados sensíveis)

Duração do Consentimento

Padrão: Consentimento persiste indefinidamente até que: - Usuário revogue explicitamente - Template de consentimento seja atualizado (requer novo aceite) - localStorage seja limpo manualmente

Configurável: No painel Complyr, você pode definir: - Expiração após X dias - Revalidação periódica (ex: a cada 6 meses)


🔄 Revogação de Consentimento

Como Revogar

Opção 1: Via Interface

Usuário clica no link "Gerenciar Preferências" (normalmente no footer) e: 1. Abre modal de preferências 2. Desmarca "Marketing e Publicidade" 3. Clica "Salvar" 4. Pixel bloqueado imediatamente


Opção 2: Via API JavaScript

// Revogar consentimento programaticamente
window.complyr.revokeConsent('User requested data deletion');

// Resultado:
// 1. localStorage limpo
// 2. Pixel bloqueado
// 3. Cookies do Facebook removidos
// 4. Evento registrado no backend

O que Acontece na Revogação

graph TD
    A[Usuário Revoga] --> B[Complyr Script]
    B --> C[Limpa localStorage]
    B --> D[Bloqueia Pixel]
    B --> E[Remove Cookies FB]
    B --> F[Registra no Backend]
    D --> G[fbq bloqueado]
    E --> H[_fbp, _fbc removidos]

Validação:

// Após revogação
localStorage.getItem('complyr_consent')  // → null
document.cookie  // → sem _fbp, _fbc
typeof window.fbq  // → função bloqueada


🧪 Testando o Gerenciamento

Teste 1: Pixel Bloqueado por Padrão

Passos: 1. Abra site em janela anônima 2. Abra console (F12) 3. Verifique estado do Pixel

Comandos:

// Deve retornar null (sem consentimento)
localStorage.getItem('complyr_consent')

// Deve estar bloqueado
typeof window.fbq  // "function" mas bloqueada

Facebook Pixel Helper: Deve mostrar "Nenhum Pixel detectado" ❌


Teste 2: Pixel Liberado Após Aceitar

Passos: 1. No mesmo site, clique "Aceitar Todos" 2. Verifique console novamente

Comandos:

// Deve retornar objeto de consentimento
JSON.parse(localStorage.getItem('complyr_consent'))

// Pixel deve estar ativo
window._fbq  // → objeto carregado

Facebook Pixel Helper: Deve mostrar Pixel ativo ✅


Teste 3: Persistência Entre Sessões

Passos: 1. Aceite consentimento 2. Feche navegador 3. Reabra o site 4. Banner não deve aparecer 5. Pixel deve estar ativo imediatamente

Validação:

// localStorage persistiu
localStorage.getItem('complyr_consent')  // → consentimento salvo

// Pixel ativo sem interação
window._fbq  // → carregado automaticamente


Teste 4: Revogação

Passos: 1. Com consentimento ativo 2. Execute: window.complyr.revokeConsent() 3. Verifique que Pixel foi bloqueado

Validação:

// Consentimento removido
localStorage.getItem('complyr_consent')  // → null

// Cookies limpos
document.cookie.includes('_fbp')  // → false


🔒 Segurança e Privacidade

Dados NÃO Vazam Sem Consentimento

O bloqueio do Complyr garante que absolutamente nenhum dado seja enviado ao Facebook sem consentimento:

// SEM consentimento - BLOQUEADO
fbq('track', 'PageView');
// → Complyr intercepta e bloqueia
// → Facebook não recebe NADA

// COM consentimento - PERMITIDO
fbq('track', 'PageView');
// → Complyr permite execução
// → Facebook recebe evento

O que é bloqueado: - ❌ Requisições HTTP para facebook.com/tr - ❌ Criação de cookies _fbp, _fbc - ❌ Coleta de dados de navegação - ❌ Advanced Matching (mesmo se configurado)


Conformidade LGPD

Artigos Atendidos:

  • Art. 7º, I: Consentimento explícito para marketing
  • Art. 8º, §4º: Consentimento em destaque (banner)
  • Art. 18, IX: Direito de revogar consentimento
  • Art. 46: Registro e histórico de consentimento
  • Art. 48: Comunicação clara e acessível

💡 Boas Práticas

1. Ordem de Carregamento

✅ CORRETO:

<script data-complyr-script></script>  <!-- 1º -->
<script> Facebook Pixel </script>       <!-- 2º -->

❌ ERRADO:

<script> Facebook Pixel </script>       <!-- Pixel carrega primeiro -->
<script data-complyr-script></script>  <!-- Complyr não pode interceptar -->


2. Não Forçar Carregamento

❌ NÃO FAÇA:

// Forçar Pixel sem consentimento
if (!window.fbq) {
  // Carregar Pixel manualmente
  const script = document.createElement('script');
  script.src = 'https://connect.facebook.net/en_US/fbevents.js';
  document.head.appendChild(script);
}

✅ FAÇA:

// Confiar no Complyr para gerenciar
// Não adicione lógica customizada de carregamento


3. Identificar Usuários Corretamente

✅ BOM:

// Após login, use API Complyr
window.complyr.identify('email', 'user@example.com');

// Complyr automaticamente:
// 1. Hasheia o email (SHA-256)
// 2. Atualiza Advanced Matching se Pixel ativo
// 3. Respeita consentimento

❌ RUIM:

// Enviar email sem hashear
fbq('track', 'Lead', { email: 'user@example.com' });  // ❌ Vazamento de PII


4. Testar em Ambiente Controlado

Antes de publicar em produção:

  • Testado em janela anônima
  • Validado com Facebook Pixel Helper
  • Verificado localStorage
  • Testado revogação
  • Validado em Events Manager
  • Testado em diferentes navegadores

🔗 Próximos Passos


📞 Suporte

Dúvidas sobre gerenciamento de consentimento?