API JavaScript¶
Interface completa de programação JavaScript para controlar consentimento, políticas e identificação de usuários na plataforma Complyr.
🎯 Visão Geral¶
A API JavaScript do Complyr fornece um conjunto de métodos globais acessíveis via window.complyr para controle programático de:
- ✅ Consentimento de usuários: Aceitar, revogar, consultar
- ✅ Identificação de usuários: Advanced Matching para GTM e Facebook Pixel
- ✅ Gerenciamento de políticas: Carregar, aceitar, exibir políticas
- ✅ Controle de preferências: Abrir modal de preferências programaticamente
- ✅ Eventos personalizados: Reagir a mudanças de consentimento
Disponibilidade:
// Verificar se API está disponível
if (window.complyr) {
console.log('Complyr API disponível');
} else {
console.log('Aguardando carregamento...');
}
🚀 Início Rápido¶
Instalação do Script¶
<script
src="https://app.complyr.com.br/tag/js"
data-workspace-id="SEU_WORKSPACE_ID"
data-complyr-script
async
defer>
</script>
Primeiro Uso¶
// Aguardar carregamento completo
document.addEventListener('DOMContentLoaded', function() {
if (window.complyr) {
// API pronta para uso
window.complyr.identify('email', 'usuario@example.com');
}
});
// Ou usar evento customizado
window.addEventListener('complyr:loaded', function() {
console.log('Complyr carregado!');
window.complyr.identify('email', 'usuario@example.com');
});
📋 Métodos Disponíveis¶
A API Complyr expõe 5 métodos principais via window.complyr:
1. loadPolicy()¶
Carrega e exibe uma política em elemento HTML específico.
Casos de uso: - Exibir Política de Privacidade em página dedicada - Mostrar Termos de Uso em formulário de cadastro - Renderizar Política de Cookies em modal
2. identify()¶
Identifica o usuário para Advanced Matching em GTM e Facebook Pixel.
Casos de uso: - Melhorar match rate de Facebook Pixel - Ativar Advanced Matching após login - Rastreamento cross-device - Enhanced Conversions no Google Ads
3. revokeConsent()¶
Revoga o consentimento do usuário, bloqueando scripts de rastreamento.
Casos de uso: - Implementar botão "Excluir meus dados" - Conformidade com LGPD Art. 18, VI (direito à exclusão) - Resetar consentimento para novos testes - Responder a solicitações DSAR
4. acceptPolicy()¶
Registra aceitação de uma política específica por um usuário identificado.
Casos de uso: - Registrar aceite de Termos de Uso no cadastro - Auditar aceitação de Política de Privacidade - Conformidade com LGPD Art. 8º (consentimento) - Histórico legal de aceitações
5. openPreferences()¶
Abre o modal de preferências de consentimento programaticamente.
Casos de uso: - Botão "Gerenciar Preferências de Cookies" no footer - Link na Política de Privacidade - Menu de configurações de privacidade - Reabrir preferências após mudanças no site
🔔 Eventos JavaScript¶
A API Complyr dispara eventos customizados que você pode escutar:
Eventos Disponíveis¶
| Evento | Descrição | Dados |
|---|---|---|
complyr:loaded | Script Complyr carregou completamente | { version: string } |
complyr:consent-updated | Consentimento foi atualizado | { purposes: {...}, status: string } |
complyr:consent-revoked | Consentimento foi revogado | { reason: string } |
complyr:user-identified | Usuário foi identificado | { type: string } |
complyr:policy-accepted | Política foi aceita | { policyType: string, user: string } |
Exemplo de Uso¶
// Escutar mudanças de consentimento
window.addEventListener('complyr:consent-updated', function(event) {
const consent = event.detail;
console.log('Consentimento atualizado:', consent);
if (consent.purposes.marketing) {
console.log('Marketing habilitado - carregar scripts de ads');
}
});
// Escutar identificação de usuário
window.addEventListener('complyr:user-identified', function(event) {
console.log('Usuário identificado:', event.detail);
});
Documentação completa de eventos →
📖 Referência Completa¶
TypeScript Definitions¶
interface ComplyrAPI {
/**
* Carrega e exibe uma política em um elemento HTML
* @param policyType - Tipo da política ('privacy-policy', 'terms-of-service', etc.)
* @param selector - Seletor CSS do elemento alvo
*/
loadPolicy(policyType: string, selector: string): void;
/**
* Identifica usuário para Advanced Matching
* @param identificationType - Tipo de identificação ('email', 'phone', 'name')
* @param userIdentifier - Valor do identificador (hasheado automaticamente)
*/
identify(identificationType: string, userIdentifier: string): void;
/**
* Revoga consentimento do usuário
* @param reason - Motivo da revogação (opcional)
*/
revokeConsent(reason?: string): void;
/**
* Registra aceitação de política
* @param policyType - Tipo da política
* @param userIdentifier - Email ou identificador do usuário
* @returns Promise<void>
*/
acceptPolicy(policyType: string, userIdentifier: string): Promise<void>;
/**
* Abre modal de preferências de consentimento
*/
openPreferences(): void;
}
declare global {
interface Window {
complyr: ComplyrAPI;
}
}
Documentação do objeto window.complyr →
🎓 Exemplos Práticos¶
Exemplo 1: Identificação Após Login¶
// Em sua função de login
async function handleLogin(email, password) {
try {
// 1. Autenticar usuário
const user = await authService.login(email, password);
// 2. Identificar no Complyr (para Advanced Matching)
if (window.complyr) {
window.complyr.identify('email', user.email);
}
// 3. Redirecionar
window.location.href = '/dashboard';
} catch (error) {
console.error('Login failed:', error);
}
}
Exemplo 2: Aceitar Termos no Cadastro¶
// Formulário de cadastro
async function handleRegister(formData) {
try {
// 1. Criar conta
const user = await api.register({
name: formData.name,
email: formData.email,
password: formData.password
});
// 2. Registrar aceitação de Termos de Uso
if (formData.acceptedTerms && window.complyr) {
await window.complyr.acceptPolicy('terms-of-service', user.email);
}
// 3. Identificar para rastreamento
if (window.complyr) {
window.complyr.identify('email', user.email);
}
// 4. Sucesso
showSuccess('Conta criada com sucesso!');
} catch (error) {
console.error('Registration failed:', error);
}
}
Exemplo 3: Botão "Excluir Meus Dados"¶
// Página de configurações de privacidade
function handleDeleteAccount() {
if (confirm('Tem certeza que deseja excluir sua conta e dados?')) {
// 1. Revogar consentimento
if (window.complyr) {
window.complyr.revokeConsent('Usuário solicitou exclusão de conta');
}
// 2. Chamar API de exclusão
api.deleteAccount()
.then(() => {
alert('Conta excluída com sucesso.');
window.location.href = '/';
})
.catch(error => {
console.error('Delete failed:', error);
});
}
}
Exemplo 4: Carregar Política em Modal¶
// Abrir modal com Política de Privacidade
function showPrivacyPolicy() {
// 1. Criar modal
const modal = document.createElement('div');
modal.id = 'privacy-modal';
modal.innerHTML = `
<div class="modal-overlay">
<div class="modal-content">
<button class="close-btn" onclick="closePrivacyModal()">×</button>
<div id="policy-content"></div>
</div>
</div>
`;
document.body.appendChild(modal);
// 2. Carregar política via Complyr
if (window.complyr) {
window.complyr.loadPolicy('privacy-policy', '#policy-content');
}
}
function closePrivacyModal() {
document.getElementById('privacy-modal')?.remove();
}
Exemplo 5: React Hook para Identificação¶
// hooks/useComplyrIdentify.ts
import { useEffect } from 'react';
import { useAuth } from '@/contexts/auth-context';
export function useComplyrIdentify() {
const { user } = useAuth();
useEffect(() => {
if (user?.email && window.complyr) {
// Identificar automaticamente quando usuário autenticado
window.complyr.identify('email', user.email);
}
}, [user]);
}
// app/dashboard/layout.tsx
export default function DashboardLayout({ children }) {
useComplyrIdentify(); // Auto-identify usuário logado
return <div>{children}</div>;
}
🔐 Segurança e Privacidade¶
Hashing Automático¶
Todos os dados identificáveis são automaticamente hasheados com SHA-256 antes de enviar ao servidor:
// Você envia:
window.complyr.identify('email', 'usuario@example.com');
// Complyr envia ao servidor:
{
identificationType: 'email',
hashedValue: '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8'
// SHA-256 hash - impossível reverter
}
Benefícios: - ✅ Email original nunca exposto em rede - ✅ Conformidade com LGPD Art. 46 (segurança) - ✅ Impossível decodificar o hash - ✅ Apenas matching é possível (Facebook, Google)
Validação de Consentimento¶
Métodos que requerem consentimento verificam automaticamente:
// Se usuário NÃO aceitou marketing:
window.complyr.identify('email', 'usuario@example.com');
// → Bloqueado silenciosamente, nada enviado
// Se usuário ACEITOU marketing:
window.complyr.identify('email', 'usuario@example.com');
// → Email hasheado e enviado para Advanced Matching
⚙️ Configuração Avançada¶
Aguardar Carregamento da API¶
// Método 1: Polling
function waitForComplyr(callback) {
if (window.complyr) {
callback();
} else {
setTimeout(() => waitForComplyr(callback), 100);
}
}
waitForComplyr(() => {
window.complyr.identify('email', 'usuario@example.com');
});
// Método 2: Promise
function whenComplyrReady() {
return new Promise((resolve) => {
if (window.complyr) {
resolve(window.complyr);
} else {
window.addEventListener('complyr:loaded', () => {
resolve(window.complyr);
}, { once: true });
}
});
}
// Uso
whenComplyrReady().then((complyr) => {
complyr.identify('email', 'usuario@example.com');
});
Debug Mode¶
Ative logs detalhados no console:
// Ativar debug
localStorage.setItem('complyr_debug', 'true');
// Recarregar página
location.reload();
// Verá logs como:
// [Complyr] API loaded
// [Complyr] User identified: email
// [Complyr] Consent status: GRANTED
// [Complyr] Advanced Matching enabled
Para desativar:
📚 Documentação Completa¶
Objeto Principal: - window.complyr - Referência completa do objeto global
Métodos: - loadPolicy() - Carregar e exibir políticas - identify() - Identificação de usuários - revokeConsent() - Revogar consentimento - acceptPolicy() - Aceitar políticas - openPreferences() - Abrir modal de preferências
Recursos: - Eventos - Lista completa de eventos JavaScript - Exemplos - Casos de uso práticos completos
❓ Perguntas Frequentes¶
P: A API funciona em todos os navegadores?¶
R: Sim! Compatível com todos os navegadores modernos (Chrome, Firefox, Safari, Edge) e IE11+.
P: Posso usar a API antes do script carregar?¶
R: Não. Aguarde o evento complyr:loaded ou verifique typeof window.complyr !== 'undefined'.
P: Os métodos são síncronos ou assíncronos?¶
R: - Síncronos: loadPolicy(), identify(), revokeConsent(), openPreferences() - Assíncrono: acceptPolicy() (retorna Promise)
P: Preciso de permissão do usuário para usar identify()?¶
R: Sim. identify() só funciona se usuário aceitou consentimento de Marketing ou Personalização.
P: Como saber se identify() foi executado?¶
R: Escute o evento complyr:user-identified:
window.addEventListener('complyr:user-identified', function(event) {
console.log('Usuário identificado:', event.detail);
});
🔗 Próximos Passos¶
Comece explorando os métodos mais comuns:
- identify() - Identificar usuários após login
- openPreferences() - Adicionar botão de preferências
- Eventos - Reagir a mudanças de consentimento
- Exemplos - Ver implementações completas
📞 Suporte¶
Dúvidas sobre a API JavaScript?
- FAQ Geral - Perguntas frequentes
- Documentação Completa - Índice geral
- Email: contato@complyr.com.br