Em qualquer CRM ativo, eventualmente surgem leads duplicados — a mesma pessoa cadastrada 2 vezes (por importações sucessivas, captura por canais diferentes, erro de digitação). Sem tratamento, isso causa caos: dois vendedores atendendo o mesmo cliente, métricas distorcidas, relatórios duplos.
O Syncro automaticamente detecta prováveis duplicatas e mantém uma fila de revisão onde você decide se realmente são a mesma pessoa e mescla os dois leads em um só, preservando todo o histórico (notas, anexos, conversas, tarefas, vendas).
Pré-requisitos
Permissão de admin ou manager pra mesclar.
Pelo menos 2 leads cadastrados (caso contrário não há o que duplicar).
Como o Syncro detecta duplicatas
A detecção roda em 3 momentos:
1. Em tempo real (ao criar lead)
Toda vez que você cria um lead — pelo painel, importação, formulário, WhatsApp/IG — o Syncro escaneia se há outros leads similares no banco. Se encontra com score ≥ 70:
Aparece aviso na criação: "Possível duplicata encontrada" com lista de leads similares.
Você pode cancelar ou criar mesmo assim (forçando o cadastro).
2. Durante importação CSV
Ao importar arquivo grande, o Syncro identifica duplicatas conforme processa cada linha. Os leads são importados, mas registrados na fila pra revisão posterior. Você termina de importar e depois mescla os pares com calma.
3. Cron diário
Todo dia às 03h30, o cron leads:detect-duplicates varre os leads criados nas últimas 24h e cria registros de possíveis duplicatas na fila. Captura casos que escaparam dos cenários anteriores.
Score de match (0-100)
O Syncro calcula um score de similaridade entre dois leads usando 3 sinais:
Sinal | Peso máximo | Como funciona |
|---|---|---|
Telefone normalizado | 60 pts | Compara só os dígitos (ignora máscara). Match exato = 60. |
50 pts | Case-insensitive, exato. Match = 50. | |
Nome fuzzy | 30 pts |
|
Score total varia de 0 a 100+:
≥ 70: alta probabilidade de duplicata. Vai pra fila com prioridade.
40-69: média. Vai pra fila pra revisão manual.
< 40: baixa. Não entra na fila.
Acessar a fila de duplicatas
Acesse Contatos → Duplicatas no menu lateral (ou via filtro especial).
Você vê o título Revisão de Duplicatas.
Tabs de status:
Pendente — aguardando sua decisão (default)
Ignoradas — você marcou como "não é duplicata"
Mescladas — já foram mescladas (histórico)
Filtros adicionais: Score mínimo (ex: só mostrar score ≥ 80).

Cada linha da fila
Mostra o par de leads suspeitos lado a lado:
Campo | Lead A | Lead B |
|---|---|---|
Nome | Maria Silva | Maria S. |
Telefone | (11) 99999-1111 | 11 99999-1111 |
Empresa | ACME Industries | ACME |
Criado em | 12/03/2026 | 28/04/2026 |
Etapa | Novo lead | Qualificação |
Score | 95 (alto) |
E os botões de ação:
Visualizar mesclagem — abre preview do que vai acontecer.
Mesclar — executa a mesclagem.
Ignorar — marca como "não é duplicata" (some da fila pendente).
Preview antes de mesclar
Sempre revise antes de mesclar. Clique em Visualizar mesclagem e veja:
Lead primário (vai sobreviver — geralmente o mais antigo ou com mais dados)
Lead secundário (vai ser absorvido)
Campos a serem preenchidos: se o primário tem campos vazios e o secundário tem dados, a info é trazida pro primário.
Tags: união dos dois (todas as tags de ambos viram do primário).
Relações a serem migradas:
Notas: 3
Anexos: 2
Tarefas: 5
Vendas: 1
Conversas: 2
Sequências ativas: 1
💡 Dica: o preview te mostra exatamente o que vai acontecer. Se algo não bate (ex:
valordo primário é R$ 5.000 e do secundário R$ 3.000), você decide qual vai prevalecer antes de confirmar.
Mesclar os leads
No preview, confirme se as escolhas estão corretas.
Clique em Confirmar Mesclagem.
O Syncro executa dentro de uma transação atômica (tudo dá certo ou nada acontece):
Preenche campos vazios do primário com dados do secundário.
Toma o maior valor entre os dois (se ambos têm
value).Une as tags.
Migra 21 tipos de relação pro primário (notas, anexos, tarefas, vendas, conversas, etc).
Marca o secundário com
status='merged',merged_into=primario.id,merged_at=now.Registra evento na timeline do primário.
Aparece o feedback Contatos mesclados com sucesso!.
O secundário some das listagens ativas. Ele continua no banco (status
merged) pra preservar auditoria, mas não aparece em busca/filtro padrão.
O que é migrado na mesclagem (21 relações)
Quando você mescla:
Relação | Comportamento |
|---|---|
Notas | Todas migram pro primário |
Anexos | Todos migram |
Tarefas | Todas migram (mantém status) |
Contatos secundários | Todos migram |
Produtos vinculados | Todos migram |
Eventos/timeline | Todos migram |
Vendas registradas | Todas migram |
Perdas registradas | Todas migram |
Logs de scoring | Todos migram (score recalcula) |
Conversa WhatsApp | Migra (se primário não tinha) |
Conversa Instagram | Migra |
Conversa Site | Migra |
Mensagens agendadas | Migram |
Respostas NPS | Migram |
Lembretes de evento | Migram |
Sugestões IA Analyst | Migram |
Custom field values | Mesclados sem duplicar |
Membros de listas estáticas | Migram (sem duplicar) |
Sequências de nurturing | Se primário ativo, secundário marca como exited |
Tags | Union (todas presentes no primário) |
Registro de duplicatas | Marca status |
Quem é o "primário"?
Por padrão, o primário é escolhido pela ordem de criação — o mais antigo. Mas você pode trocar:
No preview, há opção (em algumas versões) pra inverter quem é primário/secundário.
Senão, contate suporte pra inversão manual em casos específicos.
Ignorar uma duplicata (não é a mesma pessoa)
Se você analisa o par e percebe que não são a mesma pessoa (homônimos, números similares mas pessoas diferentes):
Clique em Ignorar no par.
Confirme.
O par sai da fila pendente e vai pra aba Ignoradas.
O Syncro não vai mais te alertar sobre esse par específico (mesmo se outro evento gerar score alto).
Detecção em tempo real — popup ao criar
Quando você tenta criar lead novo e o sistema detecta duplicata com score alto:
Após preencher os dados e clicar em Salvar, aparece o aviso.
Lista os leads similares com score.
Opções:
Cancelar — não cria, você revisa.
Criar mesmo assim — força a criação (entra na fila pra mesclagem posterior).
Mesclar com lead existente — pula criar novo, atualiza o existente.
Detecção é um classificador, não um perfeito juiz
⚠️ Atenção: a detecção tem falsos positivos e falsos negativos:
Falso positivo: 2 pessoas com nomes similares e telefones próximos (homônimos, irmãos com WhatsApp similar) podem ser sinalizadas. Sempre revise antes de mesclar.
Falso negativo: variações grandes de digitação podem passar despercebidas. Faça revisão manual periódica se sua operação é sensível a duplicatas.
A regra é: automatize a detecção, mas humano confirma a mesclagem.
Limpeza periódica
Recomendamos rodar revisão de duplicatas mensalmente:
Vá em Contatos → Duplicatas.
Filtre por Score ≥ 80 (alta confiança).
Mescle os pares.
Filtre por Score 60-79 e revise um a um.
Ignore os falsos positivos.
Em 1 hora você deixa o banco limpo.
Não posso desfazer mesclagem
⚠️ Importante: mesclagem é irreversível. Não há botão "desfazer". O secundário fica preservado com
status='merged'mas o histórico foi todo migrado pro primário — separar de novo seria reconstruir tudo.
Por isso o preview é fundamental. Sempre confira antes de confirmar.
Casos especiais
Lead com sequência ativa em ambos
Primário continua na sequência.
Secundário marca como
exited.Sem duplicação de envios.
Lead em múltiplas listas
Membership migra. Se primário já está na mesma lista, não duplica (deduplica internamente).
Lead com conversa em múltiplos canais
Conversas são todas migradas pro primário.
O lead fica vinculado a todas (WhatsApp + Instagram + Site).
Excluir lead já mesclado (status merged)
Se você quer apagar definitivamente o lead secundário (que ficou com status merged):
A UI padrão não mostra leads mesclados.
Pra acessar, busque por ID direto via URL
/contatos/{id_secundario}.Ou contate suporte pra exclusão definitiva.
Próximos passos
Pra evitar criar duplicatas no futuro, padronize importações com normalização de telefone/email antes do upload.
Pra integração com sistemas externos (n8n, Zapier), use upsert by phone/email via API.