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:
-
localStorage (Frontend)
-
Backend Complyr (API)
- Histórico completo de consentimentos
- Auditável para conformidade LGPD
-
Backup caso localStorage seja limpo
-
Cookie de sessão (opcional)
- Para sincronização cross-domain
- 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:
❌ 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:
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¶
- Eventos Customizados - Lista completa de eventos do Pixel
- Advanced Matching - Identificação de usuários
- Solução de Problemas - Problemas comuns
- Configuração - Revise o setup inicial
📞 Suporte¶
Dúvidas sobre gerenciamento de consentimento?
- FAQ - Perguntas frequentes
- Documentação Completa - Explore toda a documentação
- Email: contato@complyr.com.br