Controle por Finalidade¶
Visão Geral¶
O Controle por Finalidade (Purpose-Based Control) é o sistema que permite aos usuários escolherem especificamente para quais finalidades seus dados podem ser coletados e processados. Em vez de um simples "aceitar tudo ou nada", o Complyr oferece controle granular sobre 5 categorias distintas de processamento de dados.
Este sistema atende ao princípio da finalidade determinada da LGPD (Art. 6º, I):
Art. 6º - As atividades de tratamento de dados pessoais deverão observar a boa-fé e os seguintes princípios:
I - finalidade: realização do tratamento para propósitos legítimos, específicos, explícitos e informados ao titular, sem possibilidade de tratamento posterior de forma incompatível com essas finalidades;
As 5 Finalidades do Complyr¶
graph TD
A[Consentimento do Usuário] --> B[5 Finalidades]
B --> C[Essential<br/>Essencial]
B --> D[Analytics<br/>Análise]
B --> E[Marketing<br/>Marketing]
B --> F[Personalization<br/>Personalização]
B --> G[Third Party<br/>Terceiros]
C --> C1[Sempre Ativo]
D --> D1[Opcional]
E --> E1[Opcional]
F --> F1[Opcional]
G --> G1[Opcional]
C1 --> H[Legítimo Interesse<br/>Art. 7º, IX]
D1 --> I[Consentimento<br/>Art. 7º, I]
E1 --> I
F1 --> I
G1 --> I 1. Essential (Essencial)¶
Sempre Ativo - Não pode ser desativado
Definição: Cookies e processos estritamente necessários para o funcionamento básico do website.
Base Legal (LGPD): Art. 7º, IX - Legítimo interesse do controlador ou de terceiro
Características: - ✅ Não requer consentimento (legítimo interesse) - ✅ Always-on: Usuário não pode desativar - ✅ First-party ou third-party (desde que necessário) - ✅ Não usado para tracking ou marketing - ✅ Estritamente funcional
Exemplos de Uso:
| Categoria | Exemplos | Finalidade |
|---|---|---|
| Autenticação | Session tokens, JWT, Remember-me cookies | Manter usuário logado |
| Segurança | CSRF tokens, Rate limiting | Proteção contra ataques |
| E-commerce | Carrinho de compras, Checkout session | Processar pedidos |
| Infraestrutura | Load balancer cookies, CDN tokens | Distribuição de carga |
| Preferências Básicas | Idioma, Tema (claro/escuro) | UX fundamental |
| Compliance | Consent storage (próprio Complyr) | LGPD compliance |
Código de Exemplo:
// Cookies essenciais definidos ANTES do consentimento
// (não bloqueados pelo Complyr)
// 1. Autenticação
document.cookie = 'session_token=abc123xyz; Secure; HttpOnly; SameSite=Strict; Path=/';
// 2. CSRF Protection
document.cookie = 'csrf_token=def456uvw; Secure; SameSite=Strict; Path=/';
// 3. Carrinho de compras (e-commerce)
document.cookie = 'cart_id=cart_789; Secure; SameSite=Lax; Path=/; Max-Age=604800'; // 7 dias
// 4. Preferência de idioma
document.cookie = 'language=pt-BR; Secure; SameSite=Lax; Path=/; Max-Age=31536000'; // 1 ano
// 5. Consent próprio (armazenado pelo Complyr)
localStorage.setItem('complyr_consent_' + workspaceId, JSON.stringify(consent));
Transparência: Mesmo sendo essenciais e não requerendo consentimento, você DEVE informar sua existência na Política de Privacidade:
## Cookies Essenciais
Usamos os seguintes cookies estritamente necessários para o funcionamento do site:
- **session_token**: Mantém você logado durante a sessão (24 horas)
- **csrf_token**: Protege contra ataques CSRF (sessão)
- **cart_id**: Armazena itens no carrinho de compras (7 dias)
- **language**: Memoriza sua preferência de idioma (1 ano)
Estes cookies são baseados em legítimo interesse (LGPD Art. 7º, IX) e não podem ser desativados.
2. Analytics (Análise)¶
Opcional - Requer consentimento explícito
Definição: Ferramentas de análise de comportamento, métricas de uso, otimização de performance e experiência do usuário.
Base Legal (LGPD): Art. 7º, I - Consentimento explícito e informado
Características: - ❌ Requer consentimento do usuário - 📊 Coleta dados de navegação (páginas vistas, tempo no site, origem) - 🔍 Não identifica usuário individualmente (dados agregados) - 📈 Finalidade: Melhorar website e entender comportamento - 🚫 Bloqueado sem consentimento
Ferramentas Comuns:
| Ferramenta | Descrição | Tipo de Dados |
|---|---|---|
| Google Analytics (GA4) | Análise de tráfego e comportamento | Pageviews, sessões, eventos, demografia |
| Hotjar | Heatmaps, gravações de sessão | Cliques, scrolls, movimentos do mouse |
| Mixpanel | Product analytics | Eventos customizados, funis de conversão |
| Amplitude | Analytics de produto | Comportamento de usuários, retenção |
| Matomo | Analytics open-source (self-hosted) | Tráfego, conversões, downloads |
| Plausible | Analytics leve e privacy-friendly | Pageviews simples, sem cookies |
Exemplo de Código (Google Analytics GA4):
// ANTES do consentimento: Script bloqueado
// (Complyr impede carregamento)
// DEPOIS do consentimento (Analytics aceito)
if (consent.purposes.analytics.granted) {
// 1. Carregar Google Analytics
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
// 2. Script tag inserido dinamicamente
const script = document.createElement('script');
script.async = true;
script.src = 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX';
document.head.appendChild(script);
console.log('✅ Google Analytics ativado');
}
Exemplo de Código (Hotjar):
if (consent.purposes.analytics.granted) {
// Hotjar Tracking Code
(function(h,o,t,j,a,r){
h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
h._hjSettings={hjid:YOUR_HOTJAR_ID,hjsv:6};
a=o.getElementsByTagName('head')[0];
r=o.createElement('script');r.async=1;
r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
a.appendChild(r);
})(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
console.log('✅ Hotjar ativado');
}
Boas Práticas:
✅ DO: - Usar dados agregados (sem identificação individual) - Anonimizar IPs (anonymizeIp: true no GA) - Definir período de retenção limitado (14 meses max) - Informar claramente quais métricas são coletadas
❌ DON'T: - Coletar dados sensíveis (CPF, senha, cartão de crédito) - Compartilhar dados com terceiros sem consentimento adicional - Usar analytics para remarketing (isso é marketing) - Manter dados indefinidamente
3. Marketing (Marketing e Publicidade)¶
Opcional - Requer consentimento explícito
Definição: Ferramentas de publicidade, remarketing, rastreamento de conversões e segmentação de anúncios.
Base Legal (LGPD): Art. 7º, I - Consentimento explícito e informado
Características: - ❌ Requer consentimento do usuário - 🎯 Rastreamento cross-site (third-party cookies) - 💰 Finalidade comercial (vendas, conversões) - 📢 Remarketing: Exibir anúncios para visitantes anteriores - 🚫 Bloqueado sem consentimento
Ferramentas Comuns:
| Ferramenta | Descrição | Uso Principal |
|---|---|---|
| Facebook Pixel | Rastreamento de conversões e remarketing | Anúncios no Facebook/Instagram |
| Google Ads (gtag.js) | Rastreamento de campanhas Google | Google Search Ads, Display, YouTube |
| LinkedIn Insight Tag | Analytics B2B e remarketing | LinkedIn Ads |
| Twitter Pixel | Conversões e remarketing | Twitter Ads |
| TikTok Pixel | Rastreamento de conversões | TikTok Ads |
| Pinterest Tag | Analytics e conversões | Pinterest Ads |
| Taboola / Outbrain | Native advertising | Content recommendation ads |
Exemplo de Código (Facebook Pixel):
// ANTES do consentimento: Script bloqueado
// DEPOIS do consentimento (Marketing aceito)
if (consent.purposes.marketing.granted) {
// 1. Carregar Facebook Pixel
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
// 2. Inicializar com Pixel ID
fbq('init', 'YOUR_PIXEL_ID');
// 3. Conceder consentimento
fbq('consent', 'grant');
// 4. Track PageView
fbq('track', 'PageView');
console.log('✅ Facebook Pixel ativado');
}
// QUANDO consentimento é revogado
if (!consent.purposes.marketing.granted && window.fbq) {
fbq('consent', 'revoke');
console.log('❌ Facebook Pixel bloqueado');
}
Exemplo de Código (Google Ads):
if (consent.purposes.marketing.granted) {
// Google Ads Conversion Tracking
gtag('config', 'AW-CONVERSION_ID');
// Track conversão de compra
gtag('event', 'conversion', {
'send_to': 'AW-CONVERSION_ID/CONVERSION_LABEL',
'value': 99.90,
'currency': 'BRL',
'transaction_id': 'ORDER_123'
});
console.log('✅ Google Ads ativado');
}
Transparência Necessária:
Na Política de Privacidade, você DEVE informar: - Quais plataformas de anúncios você usa - Que dados são compartilhados (eventos, conversões) - Como usuários podem optar por não participar (opt-out) - Links para políticas de privacidade das plataformas
Exemplo:
## Marketing e Publicidade
Com seu consentimento, usamos as seguintes ferramentas de marketing:
- **Facebook Pixel**: Rastreamos conversões e exibimos anúncios relevantes no Facebook e Instagram.
Dados compartilhados: páginas visitadas, produtos visualizados, compras.
[Política do Facebook](https://www.facebook.com/privacy/explanation)
- **Google Ads**: Rastreamos cliques em anúncios do Google e conversões no site.
Dados compartilhados: cliques em anúncios, conversões, valor de compras.
[Política do Google](https://policies.google.com/privacy)
Você pode revogar este consentimento a qualquer momento clicando em "Gerenciar Cookies" no rodapé.
Compliance Importante:
Se usuário revoga consentimento de marketing: 1. Parar imediatamente o rastreamento 2. Remover cookies de marketing (third-party) 3. Notificar plataformas via fbq('consent', 'revoke') 4. Não exibir anúncios de remarketing para este usuário
4. Personalization (Personalização)¶
Opcional - Requer consentimento explícito
Definição: Recursos que personalizam a experiência do usuário com base em comportamento, preferências ou histórico.
Base Legal (LGPD): Art. 7º, I - Consentimento explícito e informado
Características: - ❌ Requer consentimento do usuário - 🎨 Customização de conteúdo (recomendações, layout) - 👤 Perfil do usuário (preferências, histórico) - 🔄 Melhora UX mas não é estritamente necessário - 🚫 Bloqueado sem consentimento
Casos de Uso:
| Recurso | Descrição | Exemplo |
|---|---|---|
| Recomendações de Produtos | "Você também pode gostar de..." | E-commerce (Amazon, Netflix) |
| Customização de Layout | Ordenação, visualização preferida | Grid vs Lista, temas |
| Histórico de Navegação | "Vistos recentemente", "Continue assistindo" | Plataformas de vídeo, e-commerce |
| Sugestões de Conteúdo | Artigos relacionados, playlists | Blogs, Spotify, YouTube |
| Filtros Salvos | Preferências de busca, localização | Sites de viagens, imóveis |
| Notificações Personalizadas | Alertas sobre produtos/tópicos de interesse | Apps de notícias, e-commerce |
Exemplo de Código (Recomendações):
// Sistema de recomendações de produtos
if (consent.purposes.personalization.granted) {
// 1. Salvar histórico de navegação
const viewedProducts = JSON.parse(localStorage.getItem('viewed_products') || '[]');
viewedProducts.push({
productId: currentProduct.id,
category: currentProduct.category,
timestamp: new Date().toISOString()
});
localStorage.setItem('viewed_products', JSON.stringify(viewedProducts));
// 2. Buscar recomendações baseadas no histórico
fetch('/api/recommendations', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ viewedProducts })
})
.then(res => res.json())
.then(recommendations => {
displayRecommendations(recommendations);
console.log('✅ Recomendações personalizadas ativadas');
});
} else {
// Sem personalização: Mostrar produtos populares (genérico)
displayPopularProducts();
console.log('ℹ️ Mostrando produtos populares (sem personalização)');
}
Exemplo de Código (Layout Preferido):
if (consent.purposes.personalization.granted) {
// Salvar preferência de visualização (grid vs lista)
const viewPreference = document.querySelector('input[name="view"]:checked').value;
localStorage.setItem('catalog_view_preference', viewPreference);
// Aplicar preferência na próxima visita
const savedView = localStorage.getItem('catalog_view_preference');
if (savedView) {
applyCatalogView(savedView); // 'grid' ou 'list'
}
} else {
// Usar visualização padrão (grid)
applyCatalogView('grid');
}
Diferença entre Essential e Personalization:
| Aspecto | Essential | Personalization |
|---|---|---|
| Idioma do site | ✅ Essential (UX básica) | - |
| Tema claro/escuro | ✅ Essential (acessibilidade) | - |
| Ordenação padrão | ✅ Essential | - |
| Recomendações baseadas em histórico | - | ✅ Personalization |
| Layout preferido (grid/lista) | ⚠️ Pode ser ambos | ✅ Personalization (se baseado em histórico) |
| Filtros salvos | - | ✅ Personalization |
Boas Práticas:
✅ DO: - Oferecer experiência funcional mesmo sem personalização (fallback genérico) - Limpar dados de personalização ao revogar consentimento - Permitir exportação de preferências (LGPD Art. 18, V - portabilidade)
❌ DON'T: - Bloquear funcionalidades essenciais por falta de personalização - Usar dados de personalização para marketing sem consentimento adicional - Compartilhar preferências com terceiros sem transparência
5. Third Party (Terceiros)¶
Opcional - Requer consentimento explícito
Definição: Scripts, widgets e serviços de terceiros que não se encaixam nas categorias anteriores.
Base Legal (LGPD): Art. 7º, I - Consentimento explícito + Art. 5º, VII (operadores)
Características: - ❌ Requer consentimento do usuário - 🔌 Serviços externos (domains diferentes) - 🌐 Carregamento cross-origin - 📡 Comunicação com servidores terceiros - 🚫 Bloqueado sem consentimento
Categorias de Terceiros:
| Categoria | Exemplos | Finalidade |
|---|---|---|
| Chat ao Vivo | Intercom, Zendesk, Drift | Suporte ao cliente |
| Redes Sociais | Facebook Like Button, Twitter Embed | Compartilhamento social |
| Mapas | Google Maps, Mapbox | Localização e navegação |
| Vídeos | YouTube Embed, Vimeo | Conteúdo multimídia |
| Avaliações | Trustpilot, Google Reviews | Social proof |
| Pagamentos | Stripe.js, PayPal SDK | Processamento de pagamentos |
| CDNs | Cloudflare, jsDelivr | Entrega de assets |
Exemplo de Código (Intercom - Chat ao Vivo):
// ANTES do consentimento: Script bloqueado
// DEPOIS do consentimento (Third Party aceito)
if (consent.purposes.third_party.granted) {
// Carregar Intercom
(function(){var w=window;var ic=w.Intercom;if(typeof ic==="function"){
ic('reattach_activator');ic('update',w.intercomSettings);
}else{var d=document;var i=function(){i.c(arguments);};
i.q=[];i.c=function(args){i.q.push(args);};w.Intercom=i;
var l=function(){var s=d.createElement('script');s.type='text/javascript';
s.async=true;s.src='https://widget.intercom.io/widget/YOUR_APP_ID';
var x=d.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);};
if(document.readyState==='complete'){l();}
else if(w.attachEvent){w.attachEvent('onload',l);}
else{w.addEventListener('load',l,false);}}})();
// Inicializar Intercom
window.Intercom('boot', {
app_id: 'YOUR_APP_ID',
name: user.name,
email: user.email
});
console.log('✅ Intercom (chat) ativado');
} else {
console.log('ℹ️ Intercom bloqueado - exibir formulário de contato alternativo');
showContactForm();
}
Exemplo de Código (Google Maps):
if (consent.purposes.third_party.granted) {
// Carregar Google Maps API
const script = document.createElement('script');
script.src = 'https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap';
script.async = true;
script.defer = true;
document.head.appendChild(script);
window.initMap = function() {
const map = new google.maps.Map(document.getElementById('map'), {
center: { lat: -23.550520, lng: -46.633308 }, // São Paulo
zoom: 12
});
console.log('✅ Google Maps carregado');
};
} else {
// Fallback: Exibir imagem estática ou link para Google Maps
document.getElementById('map').innerHTML = `
<a href="https://www.google.com/maps/place/..." target="_blank">
<img src="/static/map-placeholder.png" alt="Ver no Google Maps">
</a>
`;
console.log('ℹ️ Google Maps bloqueado - usando fallback estático');
}
Exemplo de Código (YouTube Embed):
if (consent.purposes.third_party.granted) {
// Carregar iframe do YouTube normalmente
const iframe = document.createElement('iframe');
iframe.src = 'https://www.youtube.com/embed/VIDEO_ID';
iframe.width = '560';
iframe.height = '315';
iframe.frameBorder = '0';
iframe.allow = 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture';
iframe.allowFullscreen = true;
document.getElementById('video-container').appendChild(iframe);
} else {
// Fallback: Thumbnail com botão de consentimento
document.getElementById('video-container').innerHTML = `
<div class="video-placeholder">
<img src="https://img.youtube.com/vi/VIDEO_ID/hqdefault.jpg" alt="Thumbnail">
<button onclick="window.complyr.openPreferences()">
Clique para assistir (requer aceitar cookies de terceiros)
</button>
</div>
`;
}
Responsabilidade de Operadores (LGPD):
Quando você usa serviços de terceiros, eles podem atuar como operadores (Art. 5º, VII):
Operador: pessoa natural ou jurídica, de direito público ou privado, que realiza o tratamento de dados pessoais em nome do controlador.
Obrigações: 1. Contratos de DPA (Data Processing Agreement): Acordo formal com terceiros 2. Transparência: Informar quais terceiros têm acesso aos dados 3. Limitação: Terceiros só podem processar dados conforme instruído 4. Segurança: Garantir que terceiros protegem dados adequadamente
Exemplo de Transparência:
## Serviços de Terceiros
Com seu consentimento, usamos os seguintes serviços de terceiros:
- **Intercom** (chat ao vivo): Processa nome, email e mensagens de suporte. [Política](https://www.intercom.com/legal/privacy)
- **Google Maps**: Exibe mapas interativos. Pode coletar localização e IPs. [Política](https://policies.google.com/privacy)
- **YouTube**: Embeds de vídeos. YouTube pode rastrear visualizações. [Política](https://policies.google.com/privacy)
Todos os terceiros são obrigados contratualmente a proteger seus dados e usá-los apenas conforme instruído por nós.
Controle Granular na Prática¶
Cenário 1: Usuário Aceita Analytics e Rejeita Marketing¶
const consent = {
status: 'PARTIAL',
purposes: {
essential: { granted: true },
analytics: { granted: true }, // ✅ Aceito
marketing: { granted: false }, // ❌ Rejeitado
personalization: { granted: false },
third_party: { granted: false }
}
};
// Resultado:
// ✅ Google Analytics carrega
// ❌ Facebook Pixel bloqueado
// ❌ Google Ads bloqueado
// ✅ Site funciona normalmente
// ℹ️ Produtos populares (sem personalização)
Cenário 2: Usuário Aceita Tudo Exceto Marketing¶
const consent = {
status: 'PARTIAL',
purposes: {
essential: { granted: true },
analytics: { granted: true }, // ✅ Aceito
marketing: { granted: false }, // ❌ Rejeitado
personalization: { granted: true }, // ✅ Aceito
third_party: { granted: true } // ✅ Aceito
}
};
// Resultado:
// ✅ Google Analytics carrega
// ❌ Facebook Pixel bloqueado
// ✅ Recomendações personalizadas
// ✅ Intercom (chat) carrega
// ✅ YouTube embeds funcionam
Cenário 3: Usuário Rejeita Tudo¶
const consent = {
status: 'DENIED',
purposes: {
essential: { granted: true }, // ✅ Sempre ativo
analytics: { granted: false }, // ❌ Rejeitado
marketing: { granted: false }, // ❌ Rejeitado
personalization: { granted: false }, // ❌ Rejeitado
third_party: { granted: false } // ❌ Rejeitado
}
};
// Resultado:
// ❌ Google Analytics bloqueado
// ❌ Facebook Pixel bloqueado
// ❌ Hotjar bloqueado
// ❌ Intercom bloqueado
// ✅ Site funciona (apenas funcionalidades essenciais)
Implementação de Controle Granular¶
Modal de Preferências¶
Interface de Usuário:
<div id="cookie-preferences-modal">
<h2>Gerenciar Preferências de Cookies</h2>
<!-- Essential (Sempre Ativo) -->
<div class="purpose-item">
<div class="purpose-header">
<h3>Essenciais</h3>
<span class="always-active">Sempre Ativo</span>
</div>
<p>Cookies necessários para o funcionamento básico do site (login, carrinho, segurança).</p>
<input type="checkbox" checked disabled> <!-- Desabilitado, sempre ativo -->
</div>
<!-- Analytics (Opcional) -->
<div class="purpose-item">
<div class="purpose-header">
<h3>Análise</h3>
<label class="switch">
<input type="checkbox" id="analytics-toggle" data-purpose="analytics">
<span class="slider"></span>
</label>
</div>
<p>
Usamos Google Analytics e Hotjar para entender como você usa nosso site e melhorar sua experiência.
<a href="/politica-privacidade#analytics">Saiba mais</a>
</p>
</div>
<!-- Marketing (Opcional) -->
<div class="purpose-item">
<div class="purpose-header">
<h3>Marketing</h3>
<label class="switch">
<input type="checkbox" id="marketing-toggle" data-purpose="marketing">
<span class="slider"></span>
</label>
</div>
<p>
Usamos Facebook Pixel e Google Ads para exibir anúncios relevantes e medir campanhas.
<a href="/politica-privacidade#marketing">Saiba mais</a>
</p>
</div>
<!-- Personalization (Opcional) -->
<div class="purpose-item">
<div class="purpose-header">
<h3>Personalização</h3>
<label class="switch">
<input type="checkbox" id="personalization-toggle" data-purpose="personalization">
<span class="slider"></span>
</label>
</div>
<p>
Personalizamos recomendações de produtos e conteúdo com base no seu histórico de navegação.
<a href="/politica-privacidade#personalization">Saiba mais</a>
</p>
</div>
<!-- Third Party (Opcional) -->
<div class="purpose-item">
<div class="purpose-header">
<h3>Terceiros</h3>
<label class="switch">
<input type="checkbox" id="third-party-toggle" data-purpose="third_party">
<span class="slider"></span>
</label>
</div>
<p>
Carregamos serviços de terceiros como chat ao vivo (Intercom), mapas (Google Maps) e vídeos (YouTube).
<a href="/politica-privacidade#third-party">Saiba mais</a>
</p>
</div>
<!-- Botões de Ação -->
<div class="modal-actions">
<button id="save-preferences">Salvar Preferências</button>
<button id="accept-all">Aceitar Todos</button>
<button id="reject-all">Rejeitar Todos</button>
</div>
</div>
JavaScript de Controle¶
// Salvar preferências customizadas
document.getElementById('save-preferences').addEventListener('click', function() {
const purposes = {
essential: true, // Sempre ativo
analytics: document.getElementById('analytics-toggle').checked,
marketing: document.getElementById('marketing-toggle').checked,
personalization: document.getElementById('personalization-toggle').checked,
third_party: document.getElementById('third-party-toggle').checked
};
// Salvar via Complyr
saveConsent(purposes);
// Fechar modal
closeModal();
// Recarregar página para aplicar mudanças
location.reload();
});
// Aceitar todos
document.getElementById('accept-all').addEventListener('click', function() {
saveConsent({
essential: true,
analytics: true,
marketing: true,
personalization: true,
third_party: true
});
closeModal();
location.reload();
});
// Rejeitar todos (exceto essenciais)
document.getElementById('reject-all').addEventListener('click', function() {
saveConsent({
essential: true,
analytics: false,
marketing: false,
personalization: false,
third_party: false
});
closeModal();
location.reload();
});
// Função de salvar consentimento
function saveConsent(purposes) {
const consent = {
workspaceId: window.COMPLYR_WORKSPACE_ID,
purposes: purposes,
timestamp: new Date().toISOString()
};
// Salvar localmente
localStorage.setItem('complyr_consent_' + consent.workspaceId, JSON.stringify(consent));
// Enviar para backend
fetch('https://app.complyr.com.br/api/consents', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(consent)
});
// Disparar evento
document.dispatchEvent(new CustomEvent('consent-updated', { detail: purposes }));
}
Benefícios do Controle Granular¶
1. Compliance LGPD¶
✅ Art. 6º, I (Finalidade): Cada finalidade é específica e explícita
✅ Art. 6º, III (Necessidade): Usuário escolhe apenas finalidades desejadas
✅ Art. 8º, § 4º: Consentimento separado para finalidades distintas
2. Transparência e Confiança¶
✅ Usuário sabe exatamente para que seus dados serão usados
✅ Controle real (não apenas "aceitar tudo")
✅ Aumenta confiança na marca
3. Melhores Taxas de Consentimento¶
Dados da Indústria: - Banner "aceitar tudo ou nada": ~40% de aceitação - Banner com controle granular: ~65% de aceitação (pelo menos algumas finalidades)
Por quê? - Usuários sentem que têm controle - Podem aceitar analytics mas rejeitar marketing - Não são forçados a "tudo ou nada"
4. Dados de Melhor Qualidade¶
✅ Consentimento genuíno (não coagido)
✅ Menor taxa de revogação
✅ Dados de usuários realmente interessados
Perguntas Frequentes¶
1. Posso adicionar finalidades customizadas além das 5 padrão?¶
Resposta: O Complyr oferece 5 finalidades pré-configuradas que cobrem 99% dos casos de uso. Se você precisa de finalidades adicionais (por exemplo, "Geolocalização" ou "Biometria"), entre em contato com o suporte.
Alternativa: Use third_party para casos específicos e documente claramente na Política de Privacidade.
2. Essential pode ser desativado pelo usuário?¶
Resposta: NÃO. Essential é baseado em legítimo interesse (LGPD Art. 7º, IX) e não pode ser desativado. Porém, você deve: - Usar apenas para cookies estritamente necessários - Informar quais cookies são essenciais - Não abusar desta categoria (ex: Google Analytics NÃO é essencial)
3. Posso usar Analytics sem consentimento?¶
Resposta: NÃO (na maioria dos casos). Analytics coleta dados de comportamento e requer consentimento (LGPD Art. 7º, I).
Exceção: Analytics totalmente anônimo (sem IPs, sem identificação, sem cookies) pode ser baseado em legítimo interesse. Ferramentas como Plausible ou Simple Analytics podem se qualificar, mas documente claramente.
4. O que acontece se usuário aceita Analytics mas depois revoga?¶
Resposta: O Complyr automaticamente: 1. Remove cookies de analytics 2. Para carregamento de scripts (GA, Hotjar) 3. Registra revogação no backend 4. Dispara evento consent-updated com analytics: false
Você DEVE: - Parar imediatamente a coleta de dados - Opcionalmente, deletar dados históricos se solicitado (LGPD Art. 18, VI)
5. Preciso pedir consentimento separado para cada ferramenta?¶
Resposta: NÃO. O consentimento é por finalidade, não por ferramenta.
Exemplo: - Usuário aceita "Analytics" (finalidade) - Isso cobre: Google Analytics + Hotjar + Mixpanel (ferramentas da mesma finalidade)
Porém, você DEVE informar quais ferramentas usa em cada finalidade na Política de Privacidade.
6. Posso usar Facebook Pixel para analytics em vez de marketing?¶
Resposta: Tecnicamente sim, mas não recomendado. Facebook Pixel é primariamente uma ferramenta de marketing (remarketing, conversões de anúncios). Se você usa apenas para analytics sem anúncios, pode categorizá-lo como Analytics, mas: - Seja transparente sobre isso - Documente na Política de Privacidade - Considere usar ferramentas específicas de analytics (GA, Hotjar)
Melhor prática: Use Pixel no Marketing e GA no Analytics (separadamente).
7. Personalização inclui recomendações de IA?¶
Resposta: SIM. Qualquer sistema de recomendação baseado em comportamento do usuário (IA ou não) requer consentimento de Personalização: - Recomendações de produtos (ML) - Sugestões de conteúdo (algoritmos) - Customização de feed (redes sociais)
Essential vs Personalization: - Essential: Funcionalidade básica (ordenar por preço, filtrar por categoria) - Personalization: Baseado em histórico/perfil do usuário
8. Quanto tempo devo manter o registro de consentimento?¶
Resposta: A LGPD não especifica prazo mínimo, mas a boa prática é: - Durante o tratamento de dados: Enquanto processar dados do usuário - Após término: 5 anos adicionais para prova legal (prazo prescricional brasileiro)
Exemplo: - Usuário concede consentimento em 01/01/2025 - Usuário revoga consentimento em 01/01/2027 - Você para processamento imediatamente - Mantém registro de consentimento/revogação até 01/01/2032 (5 anos após revogação)
Recursos Relacionados¶
Documentação Técnica¶
- Gerenciamento de Consentimento - Sistema completo de consentimento
- Conformidade LGPD - Como o Complyr atende a LGPD
- Modos de Banner - Configurações de exibição
- API JavaScript - Controle programático
Integrações¶
- Google Tag Manager - Integração GTM + Consent Mode v2
- Facebook Pixel - Gerenciamento automático
Exemplos Práticos¶
- Site E-commerce - Implementação completa com 5 finalidades
- Aplicação React - SPA com controle granular
Próximos Passos¶
Agora que você entende o controle por finalidade, explore:
- Conformidade LGPD → - Veja como o Complyr atende cada artigo da LGPD
- Gerenciamento de Consentimento → - Sistema completo de consentimento
- Guia Rápido → - Implemente o Complyr em 3 passos