identify()¶
Identifica usuários para Advanced Matching no Google Tag Manager e Facebook Pixel, melhorando taxas de conversão e precisão de rastreamento.
📋 Visão Geral¶
O método identify() permite associar dados do usuário (email, telefone, nome) ao sistema de consentimento Complyr. Esses dados são automaticamente hasheados com SHA-256 antes de serem enviados para plataformas de marketing, garantindo conformidade com LGPD.
Características: - ✅ SHA-256 Automático: Dados nunca enviados em texto plano - ✅ Advanced Matching: Aumenta match rate do Facebook Pixel em até 20% - ✅ Enhanced Conversions: Melhora precisão do Google Ads - ✅ Cross-Device Tracking: Rastreia usuário entre dispositivos - ✅ Síncrono: Execução imediata sem Promise - ✅ LGPD Compliant: Requer consentimento de marketing ou personalização
🎯 Casos de Uso¶
Quando Usar¶
- Após Login: Identificar usuário autenticado
- Pós-Cadastro: Associar novo usuário aos eventos de conversão
- Checkout: Melhorar precisão de eventos de compra
- Formulários de Lead: Captura de leads para remarketing
- Newsletter: Identificação via email marketing
- Enhanced Conversions: Google Ads com dados de primeira parte
Quando NÃO Usar¶
- ❌ Antes de obter consentimento (bloqueado automaticamente)
- ❌ Com dados de terceiros (apenas dados coletados pelo seu site)
- ❌ Para armazenamento de dados pessoais (use seu backend)
- ❌ Com identificadores não normalizados (CPF, RG - use email/telefone)
📚 Assinatura do Método¶
TypeScript¶
interface ComplyrAPI {
/**
* Identifica o usuário para Advanced Matching
* @param identificationType - Tipo de identificação ('email', 'phone', 'name')
* @param userIdentifier - Valor do identificador (hasheado automaticamente com SHA-256)
* @throws {Error} Se identificationType for inválido
* @remarks
* - Requer consentimento de marketing ou personalização
* - Email é automaticamente normalizado (lowercase, trim)
* - Telefone deve estar em formato internacional (+5511...)
* - Dados são hasheados com SHA-256 antes de enviar
*/
identify(identificationType: string, userIdentifier: string): void;
}
JavaScript¶
🔧 Parâmetros¶
identificationType (string, obrigatório)¶
Tipo de identificação a ser associada ao usuário.
Valores Aceitos:
| Valor | Descrição | Formato | Match Rate |
|---|---|---|---|
'email' | Email do usuário | user@example.com | ⭐⭐⭐⭐⭐ (Melhor) |
'phone' | Telefone do usuário | +5511987654321 | ⭐⭐⭐⭐ (Ótimo) |
'name' | Nome completo | João Silva | ⭐⭐⭐ (Bom) |
Recomendação: Use múltiplos identificadores para maximizar match rate:
// Melhor: 3 identificadores
window.complyr.identify('email', user.email);
window.complyr.identify('phone', user.phone);
window.complyr.identify('name', user.name);
// Bom: 2 identificadores
window.complyr.identify('email', user.email);
window.complyr.identify('phone', user.phone);
// Mínimo: 1 identificador (email recomendado)
window.complyr.identify('email', user.email);
userIdentifier (string, obrigatório)¶
Valor do identificador a ser associado ao usuário.
Validação Automática:
Email: - Convertido para lowercase automaticamente - Espaços removidos (trim) - Validação de formato básica - Exemplo: USER@EXAMPLE.COM → user@example.com → SHA-256 hash
Phone: - Deve incluir código do país (+55) - Apenas números (sem parênteses, hífens, espaços) - Formato internacional recomendado - Exemplo: +5511987654321
Name: - Nome completo (primeiro + sobrenome) - Espaços extras removidos - Exemplo: João Silva
Hashing SHA-256:
Todos os valores são automaticamente hasheados antes de enviar:
// Você envia:
window.complyr.identify('email', 'usuario@example.com');
// Complyr hasheia e envia:
// SHA-256: '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8'
// Email original NUNCA é transmitido em texto plano
↩️ Valor de Retorno¶
Tipo: void (síncrono)
O método não retorna nenhum valor. A identificação é processada imediatamente e enviada para os sistemas configurados (GTM, Facebook Pixel).
💡 Exemplos de Uso¶
Exemplo 1: Identificação Após Login¶
// Após login bem-sucedido
async function handleLogin(email, password) {
try {
// 1. Autenticar usuário
const user = await api.login(email, password);
// 2. Identificar no Complyr para Advanced Matching
if (window.complyr) {
window.complyr.identify('email', user.email);
// Opcional: adicionar mais identificadores
if (user.phone) {
window.complyr.identify('phone', user.phone);
}
if (user.name) {
window.complyr.identify('name', user.name);
}
}
// 3. Redirecionar para dashboard
window.location.href = '/dashboard';
} catch (error) {
console.error('Login failed:', error);
showError('Credenciais inválidas');
}
}
Exemplo 2: React Hook - Identificação Automática¶
// hooks/useComplyrIdentify.ts
import { useEffect } from 'react';
import { useAuth } from '@/contexts/auth-context';
/**
* Hook que identifica automaticamente o usuário logado no Complyr
*/
export function useComplyrIdentify() {
const { user } = useAuth();
useEffect(() => {
// Só identificar se usuário autenticado
if (!user?.email) {
return;
}
// Aguardar Complyr carregar
const identifyUser = () => {
if (window.complyr && typeof window.complyr.identify === 'function') {
// Email (obrigatório)
window.complyr.identify('email', user.email);
// Telefone (opcional)
if (user.phone) {
window.complyr.identify('phone', user.phone);
}
// Nome (opcional)
if (user.name) {
window.complyr.identify('name', user.name);
}
console.log('✅ Usuário identificado no Complyr:', user.email);
} else {
// Complyr ainda não carregou, tentar novamente
setTimeout(identifyUser, 100);
}
};
identifyUser();
}, [user]);
}
// Uso no componente raiz autenticado
// app/dashboard/layout.tsx
export default function DashboardLayout({ children }) {
useComplyrIdentify(); // Auto-identificar usuário logado
return (
<div className="dashboard-layout">
{children}
</div>
);
}
Exemplo 3: Vue.js Composable¶
// composables/useComplyrIdentify.ts
import { watch } from 'vue';
import { useUserStore } from '@/stores/user';
/**
* Composable para identificar usuário no Complyr
*/
export function useComplyrIdentify() {
const userStore = useUserStore();
// Reagir a mudanças no usuário
watch(
() => userStore.user,
(user) => {
if (!user?.email) {
return;
}
const identifyUser = () => {
if (window.complyr) {
window.complyr.identify('email', user.email);
if (user.phone) {
window.complyr.identify('phone', user.phone);
}
if (user.name) {
window.complyr.identify('name', user.name);
}
} else {
setTimeout(identifyUser, 100);
}
};
identifyUser();
},
{ immediate: true }
);
}
Uso:
<!-- app.vue -->
<script setup lang="ts">
import { useComplyrIdentify } from '@/composables/useComplyrIdentify';
// Identificar automaticamente quando usuário logar
useComplyrIdentify();
</script>
Exemplo 4: Formulário de Cadastro¶
<!-- Formulário de cadastro -->
<form id="register-form">
<input type="email" name="email" placeholder="Email" required>
<input type="tel" name="phone" placeholder="Telefone">
<input type="text" name="name" placeholder="Nome completo" required>
<input type="password" name="password" placeholder="Senha" required>
<label>
<input type="checkbox" name="terms" required>
Aceito os termos de uso
</label>
<button type="submit">Criar conta</button>
</form>
<script>
document.getElementById('register-form').addEventListener('submit', async function(e) {
e.preventDefault();
const formData = new FormData(e.target);
try {
// 1. Criar conta
const user = await api.register({
email: formData.get('email'),
phone: formData.get('phone'),
name: formData.get('name'),
password: formData.get('password')
});
// 2. Identificar no Complyr ANTES de redirecionar
if (window.complyr) {
window.complyr.identify('email', user.email);
if (user.phone) {
window.complyr.identify('phone', user.phone);
}
if (user.name) {
window.complyr.identify('name', user.name);
}
}
// 3. Disparar evento de conversão (tracked automaticamente com dados identificados)
if (window.fbq) {
fbq('track', 'CompleteRegistration');
}
if (window.gtag) {
gtag('event', 'sign_up', {
method: 'Email'
});
}
// 4. Redirecionar
alert('Conta criada com sucesso!');
window.location.href = '/dashboard';
} catch (error) {
console.error('Registration failed:', error);
alert('Erro ao criar conta. Tente novamente.');
}
});
</script>
Exemplo 5: E-commerce - Checkout¶
// Página de checkout
window.addEventListener('complyr:loaded', function() {
// Identificar usuário no checkout (se autenticado)
const userEmail = getCurrentUser()?.email;
if (userEmail && window.complyr) {
window.complyr.identify('email', userEmail);
}
});
// Evento de compra com identificação
function trackPurchase(order) {
// 1. Identificar comprador
if (window.complyr) {
window.complyr.identify('email', order.customer.email);
if (order.customer.phone) {
window.complyr.identify('phone', order.customer.phone);
}
if (order.customer.name) {
window.complyr.identify('name', order.customer.name);
}
}
// 2. Disparar evento de compra (com dados identificados)
if (window.fbq) {
fbq('track', 'Purchase', {
value: order.total,
currency: 'BRL',
content_ids: order.items.map(item => item.id),
content_type: 'product'
});
}
if (window.gtag) {
gtag('event', 'purchase', {
transaction_id: order.id,
value: order.total,
currency: 'BRL',
items: order.items
});
}
}
Exemplo 6: Next.js - Middleware de Identificação¶
// middleware/complyr-identify.ts
import { NextRequest, NextResponse } from 'next/server';
export async function middleware(request: NextRequest) {
const response = NextResponse.next();
// Se usuário autenticado, injetar script de identificação
const user = await getUserFromRequest(request);
if (user?.email) {
// Adicionar script inline para identificar usuário
const script = `
<script>
(function() {
function identifyUser() {
if (window.complyr) {
window.complyr.identify('email', '${user.email}');
${user.phone ? `window.complyr.identify('phone', '${user.phone}');` : ''}
${user.name ? `window.complyr.identify('name', '${user.name}');` : ''}
} else {
setTimeout(identifyUser, 100);
}
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', identifyUser);
} else {
identifyUser();
}
})();
</script>
`;
// Injetar script no HTML
response.headers.set('X-Complyr-Identify', 'true');
}
return response;
}
Exemplo 7: WordPress - Identificação Automática¶
<?php
/**
* Plugin Name: Complyr Auto Identify
* Description: Identifica usuários logados automaticamente no Complyr
*/
// Adicionar script de identificação para usuários logados
function complyr_auto_identify() {
// Apenas para usuários autenticados
if (!is_user_logged_in()) {
return;
}
$current_user = wp_get_current_user();
if (!$current_user->user_email) {
return;
}
?>
<script>
(function() {
function identifyCurrentUser() {
if (window.complyr && typeof window.complyr.identify === 'function') {
// Email
window.complyr.identify('email', '<?php echo esc_js($current_user->user_email); ?>');
// Nome (se disponível)
<?php if ($current_user->display_name): ?>
window.complyr.identify('name', '<?php echo esc_js($current_user->display_name); ?>');
<?php endif; ?>
// Telefone (se disponível via user meta)
<?php
$phone = get_user_meta($current_user->ID, 'phone', true);
if ($phone):
?>
window.complyr.identify('phone', '<?php echo esc_js($phone); ?>');
<?php endif; ?>
console.log('Complyr: Usuário identificado');
} else {
// Aguardar Complyr carregar
setTimeout(identifyCurrentUser, 100);
}
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', identifyCurrentUser);
} else {
identifyCurrentUser();
}
})();
</script>
<?php
}
add_action('wp_footer', 'complyr_auto_identify');
// Identificar após login do WordPress
function complyr_identify_on_login($user_login, $user) {
// Armazenar flag para identificar na próxima página
set_transient('complyr_identify_' . $user->ID, true, 60);
}
add_action('wp_login', 'complyr_identify_on_login', 10, 2);
🔄 Fluxo de Execução¶
sequenceDiagram
participant App as Aplicação
participant Complyr as window.complyr
participant Consent as Consent Check
participant Hash as SHA-256 Hasher
participant GTM as Google Tag Manager
participant FB as Facebook Pixel
App->>Complyr: identify('email', 'user@example.com')
Complyr->>Complyr: Validar parâmetros
alt Parâmetros inválidos
Complyr-->>App: throw Error
end
Complyr->>Consent: Verificar consentimento de marketing/personalização
alt Sem consentimento
Complyr-->>App: Bloqueado silenciosamente (retorna void)
Note over Complyr,App: Não dispara erro, apenas ignora
end
Complyr->>Complyr: Normalizar valor (lowercase, trim)
Complyr->>Hash: Hashear com SHA-256
Hash-->>Complyr: Hash gerado
Complyr->>GTM: Atualizar dataLayer com hash
GTM->>GTM: Enhanced Conversions ativo
Complyr->>FB: Atualizar fbq('init') com hash
FB->>FB: Advanced Matching ativo
Complyr-->>App: void (concluído)
Note over App,FB: Email original NUNCA exposto 🔒 Segurança e Privacidade¶
SHA-256 Hashing Automático¶
O Complyr garante que dados pessoais nunca sejam transmitidos em texto plano:
// Você fornece:
window.complyr.identify('email', 'usuario@example.com');
// Complyr processa:
// 1. Normaliza: 'usuario@example.com' → 'usuario@example.com'
// 2. Hasheia: SHA-256 → '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8'
// 3. Envia: Apenas o hash para GTM e Facebook Pixel
// Email original NÃO é transmitido ou armazenado em cookies
Benefícios: - ✅ LGPD Art. 46: Segurança técnica adequada - ✅ Não Reversível: Impossível decodificar o hash - ✅ Matching Preservado: Plataformas conseguem fazer match do hash - ✅ Zero Exposição: Nenhum dado pessoal em rede ou logs
Validação de Consentimento¶
O método identify() só funciona se o usuário aceitou finalidades de: - Marketing (recomendado), ou - Personalização
// Usuário SEM consentimento de marketing
window.complyr.identify('email', 'user@example.com');
// → Bloqueado silenciosamente (não dispara erro)
// → Dados NÃO são enviados
// Usuário COM consentimento de marketing
window.complyr.identify('email', 'user@example.com');
// → Dados hasheados e enviados para GTM e Facebook Pixel
// → Advanced Matching ativado
Verificar consentimento antes de identificar:
window.addEventListener('complyr:consent-updated', function(event) {
const { purposes } = event.detail;
if (purposes.marketing || purposes.personalization) {
// Usuário aceitou, pode identificar
const user = getCurrentUser();
if (user?.email) {
window.complyr.identify('email', user.email);
}
} else {
console.log('Consentimento negado - identificação bloqueada');
}
});
⚙️ Integração com Plataformas¶
Google Tag Manager (Enhanced Conversions)¶
O Complyr envia hashes para dataLayer automaticamente:
// Você chama:
window.complyr.identify('email', 'user@example.com');
window.complyr.identify('phone', '+5511987654321');
// Complyr atualiza dataLayer:
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'complyr_user_identified',
'user_data': {
'email_hash': '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8',
'phone_hash': '...'
}
});
Configurar Enhanced Conversions no GTM:
- Criar variável de dataLayer:
user_data.email_hash - Adicionar em tag do Google Ads
- Habilitar "Enhanced Conversions" na tag
- Usar variável como "User-Provided Data"
Facebook Pixel (Advanced Matching)¶
O Complyr atualiza fbq('init') com hashes automaticamente:
// Você chama:
window.complyr.identify('email', 'user@example.com');
// Complyr atualiza Facebook Pixel:
fbq('init', 'SEU_PIXEL_ID', {
em: '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8', // email hash
// ph, fn adicionados se identificados
}, {
agent: 'complyr'
});
Aumento de Match Rate:
| Identificadores | Match Rate Aproximado |
|---|---|
| Nenhum | ~40-50% |
| ~65-75% | |
| Email + Telefone | ~75-85% |
| Email + Telefone + Nome | ~85-95% |
⚠️ Tratamento de Erros¶
Erros Comuns¶
1. Tipo de Identificação Inválido¶
// ❌ ERRO
window.complyr.identify('cpf', '12345678900');
// Error: Invalid identification type 'cpf'
// ✅ SOLUÇÃO
// Usar apenas tipos suportados: 'email', 'phone', 'name'
window.complyr.identify('email', 'user@example.com');
2. Valor Vazio¶
// ❌ ERRO
window.complyr.identify('email', '');
// Error: User identifier cannot be empty
// ✅ SOLUÇÃO
const email = user?.email;
if (email) {
window.complyr.identify('email', email);
} else {
console.warn('Email não disponível para identificação');
}
3. Complyr Não Carregado¶
// ❌ ERRO
window.complyr.identify('email', 'user@example.com');
// TypeError: Cannot read property 'identify' of undefined
// ✅ SOLUÇÃO 1: Aguardar evento
window.addEventListener('complyr:loaded', function() {
window.complyr.identify('email', 'user@example.com');
});
// ✅ SOLUÇÃO 2: Verificação defensiva
if (window.complyr && typeof window.complyr.identify === 'function') {
window.complyr.identify('email', 'user@example.com');
} else {
console.warn('Complyr não disponível');
}
4. Formato de Telefone Inválido¶
// ❌ RUIM: Formato brasileiro sem código internacional
window.complyr.identify('phone', '(11) 98765-4321');
// ✅ BOM: Formato internacional
window.complyr.identify('phone', '+5511987654321');
// Função auxiliar para normalizar telefone
function normalizePhone(phone) {
// Remover caracteres não numéricos
const digits = phone.replace(/\D/g, '');
// Adicionar +55 se não tiver código do país
if (digits.length === 11 && !digits.startsWith('55')) {
return `+55${digits}`;
}
return `+${digits}`;
}
// Uso
const phone = normalizePhone(user.phone); // '(11) 98765-4321' → '+5511987654321'
window.complyr.identify('phone', phone);
Try/Catch Recomendado¶
function identifyUserSafely(user) {
try {
if (!window.complyr) {
throw new Error('Complyr não está carregado');
}
if (!user?.email) {
throw new Error('Email do usuário não disponível');
}
// Email (obrigatório)
window.complyr.identify('email', user.email);
// Telefone (opcional)
if (user.phone) {
const normalizedPhone = normalizePhone(user.phone);
window.complyr.identify('phone', normalizedPhone);
}
// Nome (opcional)
if (user.name) {
window.complyr.identify('name', user.name);
}
console.log('✅ Usuário identificado:', user.email);
} catch (error) {
console.error('❌ Erro ao identificar usuário:', error);
// Enviar para sistema de logging
if (window.Sentry) {
Sentry.captureException(error, {
tags: { feature: 'complyr-identify' },
extra: { userEmail: user?.email }
});
}
}
}
📊 Verificação e Debug¶
Console Logging¶
// Ativar logs detalhados
localStorage.setItem('complyr_debug', 'true');
location.reload();
// Verá logs como:
// [Complyr] User identified: email
// [Complyr] Normalized value: user@example.com
// [Complyr] SHA-256 hash: 5e884898...
// [Complyr] Consent check: GRANTED (marketing)
// [Complyr] Sent to GTM dataLayer
// [Complyr] Sent to Facebook Pixel
Facebook Pixel Helper (Chrome Extension)¶
- Instalar Facebook Pixel Helper
- Abrir DevTools → Facebook Pixel Helper
- Identificar usuário no console:
- Verificar em "Advanced Matching":
em: Hash do email (presente ✅)ph: Hash do telefone (se fornecido)fn: Hash do nome (se fornecido)
Google Tag Assistant¶
- Instalar Tag Assistant Legacy
- Iniciar gravação
- Identificar usuário:
- Verificar em dataLayer:
event:complyr_user_identifieduser_data.email_hash: Hash presente ✅
DevTools Console¶
// Verificar se Complyr está disponível
console.log('Complyr:', window.complyr);
// Verificar método identify
console.log('identify disponível:', typeof window.complyr?.identify === 'function');
// Verificar consentimento atual
const consent = JSON.parse(localStorage.getItem('complyr_consent') || '{}');
console.log('Consentimento:', consent);
console.log('Marketing:', consent.purposes?.marketing); // true/false
// Verificar dataLayer GTM
console.log('dataLayer:', window.dataLayer);
// Verificar Facebook Pixel
console.log('fbq:', typeof window.fbq);
✅ Melhores Práticas¶
DOs ✅¶
// ✅ Aguardar Complyr carregar
window.addEventListener('complyr:loaded', function() {
window.complyr.identify('email', user.email);
});
// ✅ Usar múltiplos identificadores
window.complyr.identify('email', user.email);
window.complyr.identify('phone', user.phone);
window.complyr.identify('name', user.name);
// ✅ Normalizar telefone para formato internacional
const phone = user.phone.replace(/\D/g, ''); // Remover não-numéricos
window.complyr.identify('phone', `+55${phone}`);
// ✅ Identificar após eventos importantes
// Login
handleLogin().then(() => {
window.complyr.identify('email', user.email);
});
// Cadastro
handleRegister().then(() => {
window.complyr.identify('email', user.email);
});
// Checkout
beginCheckout().then(() => {
window.complyr.identify('email', order.customerEmail);
});
// ✅ Verificar consentimento antes de identificar
if (hasMarketingConsent()) {
window.complyr.identify('email', user.email);
}
// ✅ Tratar erros graciosamente
try {
window.complyr.identify('email', user.email);
} catch (error) {
console.error('Erro ao identificar:', error);
}
DON'Ts ❌¶
// ❌ NÃO identificar sem aguardar Complyr carregar
window.complyr.identify('email', user.email);
// TypeError: complyr is undefined
// ❌ NÃO usar identificadores não suportados
window.complyr.identify('cpf', '12345678900');
// Error: Invalid identification type
// ❌ NÃO passar valores vazios
window.complyr.identify('email', '');
// Error: Empty identifier
// ❌ NÃO passar telefone em formato brasileiro sem código
window.complyr.identify('phone', '11987654321');
// Ruim: falta +55
// ❌ NÃO identificar antes de obter consentimento
// (bloqueado automaticamente, mas má prática tentar)
window.complyr.identify('email', user.email);
// Se usuário não aceitou marketing: silenciosamente bloqueado
// ❌ NÃO hashear manualmente
const hash = sha256(user.email);
window.complyr.identify('email', hash);
// Complyr hasheia automaticamente!
// ❌ NÃO armazenar dados pessoais em localStorage/cookies
localStorage.setItem('user_email', user.email);
// Violação de LGPD - use apenas identify()
🔗 Recursos Relacionados¶
Métodos da API: - loadPolicy() - Carregar e exibir políticas - acceptPolicy() - Registrar aceitação de política - revokeConsent() - Revogar consentimento - openPreferences() - Abrir modal de preferências
Recursos: - window.complyr - Objeto global da API - Eventos JavaScript - Lista completa de eventos - Exemplos Práticos - Casos de uso completos
Integrações: - Google Tag Manager - Configurar Enhanced Conversions - Facebook Pixel - Advanced Matching - Aumentar match rate
❓ Perguntas Frequentes¶
P: Os dados são enviados em texto plano?¶
R: Não! Todos os dados são automaticamente hasheados com SHA-256 antes de serem enviados. O email original nunca é transmitido pela rede ou armazenado em cookies.
P: Preciso de consentimento para usar identify()?¶
R: Sim! O método só funciona se o usuário aceitou: - Marketing (recomendado), ou - Personalização
Se o usuário não aceitou, identify() é bloqueado silenciosamente.
P: Posso identificar múltiplas vezes?¶
R: Sim! Recomendamos chamar identify() múltiplas vezes com diferentes tipos para maximizar o match rate:
window.complyr.identify('email', user.email);
window.complyr.identify('phone', user.phone);
window.complyr.identify('name', user.name);
P: Como verificar se a identificação funcionou?¶
R: Use ferramentas de debug:
- Facebook Pixel Helper: Verifique "Advanced Matching" com
em,ph,fn - Google Tag Assistant: Veja
user_datano dataLayer - Console Complyr: Ative
localStorage.setItem('complyr_debug', 'true')
P: O que acontece se eu identificar antes de obter consentimento?¶
R: O método é bloqueado silenciosamente. Não dispara erro, mas os dados não são enviados. É melhor identificar APÓS verificar consentimento:
window.addEventListener('complyr:consent-updated', function(event) {
if (event.detail.purposes.marketing) {
window.complyr.identify('email', user.email);
}
});
P: Posso identificar usuários não autenticados?¶
R: Tecnicamente sim, mas não é recomendado. Use identify() apenas para usuários autenticados ou que forneceram dados em formulários (newsletter, checkout).
P: O Facebook Pixel precisa de configuração adicional?¶
R: Não! O Complyr atualiza automaticamente o fbq('init') com os hashes. Certifique-se apenas de: 1. Facebook Pixel instalado via GTM 2. Consentimento de marketing aceito 3. Chamar identify() após login/cadastro
P: Qual formato de telefone usar?¶
R: Formato internacional com código do país:
// ✅ Correto
window.complyr.identify('phone', '+5511987654321');
// ❌ Incorreto
window.complyr.identify('phone', '(11) 98765-4321'); // Falta +55
P: Posso usar CPF ou RG como identificador?¶
R: Não. O método aceita apenas: - 'email' - 'phone' - 'name'
CPF/RG não são suportados por plataformas de Advanced Matching (Facebook, Google).
📞 Suporte¶
Dúvidas sobre identify()?
- FAQ Geral - Perguntas frequentes
- Documentação Completa - Índice geral
- Email: contato@complyr.com.br