Advanced Matching¶
Melhore a precisão do rastreamento do Facebook Pixel identificando usuários autenticados de forma segura e conforme com a LGPD usando a API Complyr.
📖 O que é Advanced Matching?¶
Advanced Matching é um recurso do Facebook Pixel que permite enviar dados identificáveis do usuário (email, telefone, nome) de forma hasheada (SHA-256) para melhorar:
- 🎯 Precisão de atribuição: Rastreamento cross-device (mobile, desktop, tablet)
- 📊 Match Rate: Taxa de correspondência entre eventos e usuários do Facebook
- 🔄 Conversões Offline: Ligar conversões online com dados CRM
- 📈 Audiências Personalizadas: Criar audiences baseadas em dados de clientes
Benefícios: - Aumenta match rate de ~40% para ~70%+ - Melhora relatórios de ROAS - Habilita Enhanced Conversions - Permite Customer Match
🔒 Privacidade e Segurança¶
Hashing SHA-256¶
Todos os dados identificáveis são automaticamente hasheados pelo Complyr antes de enviar ao Facebook:
// O QUE VOCÊ ENVIA
window.complyr.identify('email', 'usuario@example.com');
// O QUE O FACEBOOK RECEBE
{
em: '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8'
// Hash SHA-256 de 'usuario@example.com'
}
Impossível reverter: - ❌ Facebook não vê email original - ❌ Ninguém consegue "decodificar" o hash - ✅ Apenas correspondência (match) é possível
🚀 Usando Advanced Matching¶
1. Após Login do Usuário¶
A forma mais comum é identificar o usuário logo após o login:
// Em sua página de login bem-sucedido
document.addEventListener('DOMContentLoaded', function() {
// Usuário fez login
const userEmail = getUserEmail(); // Função que retorna email do usuário logado
// Identificar no Complyr
window.complyr.identify('email', userEmail);
});
Exemplo real (Next.js):
// hooks/useComplyrIdentify.ts
import { useEffect } from 'react';
import { useUser } from '@/contexts/user-context';
export function useComplyrIdentify() {
const { user } = useUser();
useEffect(() => {
if (user?.email && window.complyr) {
window.complyr.identify('email', user.email);
}
}, [user]);
}
// app/dashboard/layout.tsx
export default function DashboardLayout({ children }) {
useComplyrIdentify(); // Identifica automaticamente após login
return <div>{children}</div>;
}
2. Na Página de Cadastro¶
Identifique imediatamente após cadastro completo:
// Formulário de cadastro
async function handleRegister(email, password) {
// 1. Criar conta
await api.register({ email, password });
// 2. Identificar no Complyr
window.complyr.identify('email', email);
// 3. Disparar evento de conversão
fbq('track', 'CompleteRegistration', {
value: 50.00, // Valor estimado de um novo usuário
currency: 'BRL'
});
}
3. Em Aplicações SPA (Single Page App)¶
Identifique uma vez após login e mantenha identificação em todas as páginas:
// auth-service.js
class AuthService {
async login(email, password) {
const user = await api.login({ email, password });
// Salvar usuário
this.currentUser = user;
// Identificar no Complyr
if (window.complyr) {
window.complyr.identify('email', user.email);
}
return user;
}
async logout() {
// Limpar identificação (opcional)
this.currentUser = null;
// Revogar consentimento se usuário solicitou
if (userRequestedDataDeletion) {
window.complyr.revokeConsent('User requested logout and data deletion');
}
}
}
📊 Dados Suportados¶
O Complyr suporta os seguintes tipos de identificação para Advanced Matching:
Email (Recomendado)¶
Requisitos: - Formato válido de email - Será normalizado (lowercase, trim) - Hasheado com SHA-256
Telefone¶
Requisitos: - Formato internacional (+55 para Brasil) - Apenas números (sem espaços, parênteses, traços) - Exemplo: +5511987654321
Nome Completo¶
Requisitos: - Nome completo (primeiro + sobrenome) - Será normalizado (lowercase, trim)
Múltiplos Dados (Melhor Match Rate)¶
Envie múltiplos identificadores para maior precisão:
// Forma 1: Múltiplas chamadas
window.complyr.identify('email', 'usuario@example.com');
window.complyr.identify('phone', '+5511987654321');
window.complyr.identify('name', 'João da Silva');
// Forma 2: Objeto (futuro)
window.complyr.identifyMultiple({
email: 'usuario@example.com',
phone: '+5511987654321',
name: 'João da Silva'
});
Match Rate esperado: - Apenas email: ~60-70% - Email + telefone: ~75-85% - Email + telefone + nome: ~85-95%
🔄 Fluxo Completo¶
sequenceDiagram
participant U as Usuário
participant W as Website
participant C as Complyr
participant P as Facebook Pixel
participant F as Facebook
U->>W: Faz login
W->>W: Valida credenciais
W->>C: complyr.identify('email', email)
C->>C: Hasheia email (SHA-256)
C->>P: Atualiza Advanced Matching
P->>F: Envia hash para Facebook
F->>F: Faz match com usuário FB
Note over F: Match rate +30%
U->>W: Navega (próximas páginas)
W->>P: fbq('track', 'ViewContent')
P->>F: Envia evento + hash
F->>F: Associa ao usuário correto
Note over F: Cross-device tracking 🧪 Testando Advanced Matching¶
1. Verificar Identificação¶
No console do navegador:
// Após chamar window.complyr.identify()
// Verifique se função existe
typeof window.complyr.identify // → "function"
// Verifique se eventos subsequentes incluem dados hasheados
// (visível no Facebook Pixel Helper)
2. Facebook Pixel Helper¶
- Instale Facebook Pixel Helper
- Faça login no site
- Chame
window.complyr.identify() - Dispare um evento (ex:
fbq('track', 'PageView')) - Pixel Helper mostra "Advanced Matching" ✅
Exemplo de output:
3. Events Manager - Data Quality¶
- Acesse Facebook Events Manager
- Selecione seu Pixel
- Vá em "Qualidade de Dados" (Data Quality)
- Verifique "Match Quality Score"
Scores: - < 3.0: Ruim (sem Advanced Matching) - 3.0 - 5.0: Médio - 5.0 - 7.0: Bom - > 7.0: Excelente ✅
Meta: Score > 6.0
Com Advanced Matching via Complyr, você deve atingir score entre 6.0 e 8.0.
⚙️ Configuração Avançada¶
Identificação Condicional¶
Identifique apenas se usuário aceitou consentimento:
async function identifyUser(email) {
// Verificar se consentimento de marketing foi concedido
const consent = JSON.parse(localStorage.getItem('complyr_consent'));
if (consent && consent.purposes.marketing === true) {
window.complyr.identify('email', email);
} else {
console.log('Advanced Matching bloqueado - sem consentimento de marketing');
}
}
Automático
O Complyr já faz essa verificação internamente, mas você pode adicionar camada extra se desejar.
Normalização de Dados¶
Sempre normalize dados antes de enviar:
function normalizeEmail(email) {
return email.toLowerCase().trim();
}
function normalizePhone(phone) {
// Remove tudo exceto dígitos e +
return phone.replace(/[^\d+]/g, '');
}
// Uso
const email = normalizeEmail(userInput.email);
const phone = normalizePhone(userInput.phone);
window.complyr.identify('email', email);
window.complyr.identify('phone', phone);
🎯 Casos de Uso¶
E-commerce: Rastreamento Completo¶
// 1. Usuário visita produto (anônimo)
fbq('track', 'ViewContent', {
content_ids: ['produto-123'],
value: 99.90,
currency: 'BRL'
});
// Match rate: ~40%
// 2. Usuário faz login
window.complyr.identify('email', 'usuario@example.com');
// 3. Adiciona ao carrinho (identificado)
fbq('track', 'AddToCart', {
content_ids: ['produto-123'],
value: 99.90,
currency: 'BRL'
});
// Match rate: ~70%+
// 4. Finaliza compra (cross-device)
// Usuário pode concluir em outro dispositivo
fbq('track', 'Purchase', {
content_ids: ['produto-123'],
value: 99.90,
currency: 'BRL'
});
// Facebook consegue atribuir corretamente
SaaS: Funil de Conversão¶
// 1. Página de preços (anônimo)
fbq('track', 'ViewContent', {
content_name: 'Pricing Page'
});
// 2. Cadastro + identificação
async function handleSignup(email, password) {
await api.signup({ email, password });
// Identificar imediatamente
window.complyr.identify('email', email);
// Evento de conversão
fbq('track', 'CompleteRegistration', {
value: 50.00,
currency: 'BRL'
});
}
// 3. Trial (identificado)
fbq('trackCustom', 'StartTrial', {
plan: 'professional'
});
// 4. Upgrade (atribuição precisa)
fbq('track', 'Subscribe', {
value: 199.90,
currency: 'BRL'
});
// Facebook sabe toda a jornada do usuário
🔒 Conformidade LGPD¶
Consentimento Obrigatório¶
Advanced Matching requer consentimento de marketing:
// Complyr verifica automaticamente
window.complyr.identify('email', 'usuario@example.com');
// Se usuário NÃO aceitou marketing:
// → Email NÃO é hasheado
// → NÃO é enviado ao Facebook
// → Advanced Matching bloqueado
// Se usuário ACEITOU marketing:
// → Email hasheado com SHA-256
// → Enviado ao Facebook
// → Advanced Matching ativo
Direito de Exclusão¶
Se usuário revogar consentimento:
window.complyr.revokeConsent('User requested data deletion');
// Resultado:
// 1. Identificação removida
// 2. Advanced Matching desativado
// 3. Eventos futuros sem identificação
// 4. Facebook não recebe mais dados hasheados
Base Legal (LGPD)¶
- ✅ Art. 7º, I: Consentimento explícito para compartilhamento
- ✅ Art. 9º: Dados hasheados (pseudonimização)
- ✅ Art. 18, VI: Direito de exclusão (revokeConsent)
- ✅ Art. 46: Histórico de identificações no backend
📊 Comparação: Com vs Sem Advanced Matching¶
| Métrica | Sem Advanced Matching | Com Advanced Matching | Melhoria |
|---|---|---|---|
| Match Rate | ~35-45% | ~65-75% | +30-40% |
| ROAS Accuracy | Baixa | Alta | +40-60% |
| Cross-Device | Não | Sim | N/A |
| Audiências Precisas | Não | Sim | N/A |
| Customer Match | Não | Sim | N/A |
| Enhanced Conversions | Não | Sim | N/A |
❓ Perguntas Frequentes¶
Preciso implementar manualmente no código do Pixel?¶
Não. O Complyr gerencia tudo automaticamente. Basta chamar:
O email do usuário fica exposto?¶
Não. O email é hasheado com SHA-256 antes de enviar. O Facebook recebe apenas o hash, que não pode ser revertido.
Funciona sem consentimento?¶
Não. Advanced Matching respeita consentimento de marketing. Se negado, nenhum dado é enviado.
Posso identificar usuários em navegação anônima?¶
Tecnicamente sim, mas não recomendamos. Se o usuário está em modo anônimo, provavelmente não deseja ser rastreado. Respeite a privacidade.
🔗 Próximos Passos¶
- Eventos Customizados - Use eventos com identificação
- Solução de Problemas - Match rate baixo?
- Gerenciamento de Consentimento - Como funciona o bloqueio
- Configuração - Revise o setup inicial
📞 Suporte¶
Dúvidas sobre Advanced Matching?
- FAQ - Perguntas frequentes
- Documentação Facebook - Docs oficiais
- Email: contato@complyr.com.br