Em campanhas de disparo em massa, enviar mesma mensagem pra todo mundo é receita pra ser banido. Por isso o Syncro exige no mínimo 3 variações distintas — cada lead recebe uma das variações, distribuídas de forma equilibrada.
Esse artigo explica como funciona a distribuição, validação de similaridade e os recursos de personalização (variáveis dinâmicas, formatação WhatsApp).
Quantas variações criar
- Mínimo: 3 (regra anti-banimento, não negociável).
- Recomendado: 3-5 (suficiente pra reduzir pattern detection sem complicar manutenção).
- Máximo prático: 10 (acima disso fica difícil manter coerência).
💡 Dica: 3 variações cobrem 99% dos casos. Não exagere.
Como cada lead recebe uma variação
Algoritmo determinístico
O Syncro escolhe variação por lead.id MOD count(variations):
- Lead ID 100, 3 variações → 100 % 3 = 1 → recebe Variação 1 (índice 0=primeira).
- Lead ID 101 → 101 % 3 = 2 → Variação 2.
- Lead ID 102 → 102 % 3 = 0 → Variação 0 (primeira).
💡 Dica: distribuição é equilibrada — com 3 variações, ~33% recebe cada. Com 5, ~20%.
Por que determinístico (não aleatório)?
Se uma campanha falha no meio e você re-enfileirar:
- Determinístico: mesmo lead recebe mesma variação (consistência).
- Aleatório: lead poderia receber variação diferente (inconsistente).
Aleatoriedade boa fica no jitter de tempo (intervalos), não na escolha de variação.
Validação de similaridade
Por que importa
Variações muito parecidas ainda viram pattern detectável pela Meta. Sistema rejeita se duas variações têm ≥90% de similaridade.
Como o Syncro mede
Algoritmo de Levenshtein normalizada:
- Normaliza cada variação:
- Lowercase.
- Remove pontuação (
., ! ?;:). - Colapsa espaços múltiplos.
- Trunca em 255 chars (limite PHP
levenshtein). - Calcula distância de edição entre cada par.
- Normaliza distância:
similarity = 1.0 - (distance / max(len_a, len_b)). - Se ≥0.9 entre qualquer par → rejeita.
Exemplos
❌ Rejeitado (>90% similar)
1. Olá! Tudo bem? Promo X.
2. Olá! Tudo bem. Promo X.
Diferença: 1 caractere (? vs .). Similaridade: ~99%.
❌ Rejeitado
1. Oi {{first_name}}! Promoção do dia.
2. Olá {{first_name}}! Promoção do dia.
Diferença: "Oi" vs "Olá". Similaridade: ~95%.
✅ Aceito
1. Oi {{first_name}}! Tudo bem? Aqui é da [Empresa] com novidade...
2. Boa tarde {{first_name}}, espero que esteja bem. Da [Empresa] aqui — temos uma oferta...
Estrutura completamente diferente. Similaridade: ~30%.
Variáveis dinâmicas (placeholders)
Você pode personalizar a mensagem com dados do lead:
| Variável | Substituída por |
|---|---|
{{name}} |
Nome completo (ex: João Silva) |
{{first_name}} |
Primeiro nome (ex: João) |
{{company}} |
Empresa (ex: ACME Industries) |
{{email}} |
|
{{phone}} |
Telefone formatado |
Exemplo
Template:
Oi {{first_name}}! Aqui é da [Sua Empresa]. Vi que você é da {{company}} — tem interesse em conversar sobre nossa solução?
Para lead João Silva da ACME:
Oi João! Aqui é da [Sua Empresa]. Vi que você é da ACME — tem interesse em conversar sobre nossa solução?
Cuidados com variáveis vazias
Se o lead não tem o campo preenchido (ex: company=null), o placeholder vira string vazia. Pra evitar mensagens estranhas tipo "Vi que você é da — tem interesse?", considere:
- Filtrar lista antes de criar campanha — só leads com campos preenchidos.
- Sistema colapsa double-space automaticamente, então fica "Vi que você é da — tem" (sem espaço duplo, mas ainda estranho).
💡 Dica: pra leads sem nome cadastrado, use uma variação sem
{{first_name}}como fallback. Algoritmo de distribuição cuida pra que apenas leads com nomes vão pras outras.
Formatação WhatsApp
Cada variação aceita formatação nativa do WhatsApp:
| Sintaxe | Resultado |
|---|---|
*texto* |
negrito |
_texto_ |
itálico |
~texto~ |
|
`texto` |
monoespaçado |
Exemplo:
*Promoção exclusiva!* 🎉
Olá {{first_name}}, queremos te oferecer:
- _Desconto de 30%_ na renovação
- ~Sem~ prazo de fidelidade
- `Cupom: VOLTA30`
Resposta até hoje!
A barra de ferramentas no editor tem botões de atalho pra cada formatação.
Pré-render no momento da criação
Quando você cria a campanha, sistema pré-renderiza a mensagem pra cada lead:
- Identifica qual variação cada lead recebe (algoritmo determinístico).
- Substitui placeholders com dados do lead.
- Salva resultado em
MassCampaignRecipient.rendered_body.
Por que pré-render
- Idempotência: se job re-roda, usa mesma mensagem (sem variação por dados que mudaram).
- Performance: na hora de enviar, não precisa processar template (já está pronto).
- Auditoria: você consegue ver exatamente que mensagem cada lead recebeu.
Preview iPhone clay
No wizard, painel lateral mostra preview ao vivo estilo WhatsApp:
- Topbar com nome do lead exemplo + status.
- Bolha verde com mensagem renderizada.
- Formatação aplicada visualmente (negrito vira negrito real, etc).
- Tabs entre variações — clica em "Variação 1", "Variação 2", etc pra alternar.
💡 Dica: revise cada variação no preview. Veja como realmente vai aparecer pro cliente final.
Imagem + variações
Se você escolhe tipo=imagem+legenda:
- Imagem é a mesma pra todas as variações (não há variação de imagem hoje).
- Legendas (= variações de texto) variam.
Exemplo:
- Imagem: foto do produto.
- 3 legendas diferentes embaixo.
💡 Dica: se você quer imagens diferentes, crie campanhas separadas com listas filtradas (ex: campanha A com lista "interesse-produto-X", campanha B com "interesse-produto-Y").
Boas práticas pra variações
1. Estrutura realmente diferente
Não troque só palavras. Reescreva com:
- Saudação diferente (Oi / Olá / Boa tarde).
- Estrutura diferente (saudação primeiro vs pergunta primeiro).
- CTA diferente ("quer saber mais?" vs "posso te explicar?").
- Tom diferente (formal vs casual).
2. Mantém mesmo objetivo
Variações são maneiras diferentes de dizer a mesma coisa, não mensagens diferentes. Todas devem:
- Apresentar mesma oferta.
- Levar pro mesmo CTA.
- Ter mesma duração aproximada.
3. Use variáveis com moderação
Cada {{first_name}} quebra um pouco o pattern, mas se você usa as mesmas variáveis em todas as 3, ainda é detectável. Misture:
- Variação 1: usa
{{first_name}}+{{company}}. - Variação 2: usa só
{{first_name}}. - Variação 3: começa direto sem variável (genérico).
4. Teste com lead real primeiro
Antes de disparar pra 1.000 leads:
- Crie campanha pra você mesmo (ou colega). Pode até criar lista com só 1-2 contatos seus.
- Verifique mensagens chegando.
- Ajuste se algo está estranho.
- Depois crie campanha real.
5. Atualize ao longo do tempo
Reuse de mesmas variações em múltiplas campanhas com mesmo número aumenta detecção. Renove a cada disparo significativo.
Erros comuns
"Adicione pelo menos 3 variações"
Você só tem 1 ou 2. Adicione mais clicando em Adicionar variação.
"Variação 1 e Variação 2 são muito parecidas"
Reescreva uma delas com estrutura completamente diferente. Não basta trocar pontuação.
"Lead recebeu variação errada"
Algoritmo é determinístico — lead.id % count(variations). Se você adicionar/remover variação depois de criada a campanha, recipients podem não bater. Não edite variações de campanha já em execução.
Limites técnicos
- Máximo de chars por variação: ~4096 (limite WhatsApp).
- Máximo de variações: sem limite formal, mas 10+ vira difícil de manter.
- Variáveis suportadas: hoje 5 fixas (name, first_name, company, email, phone). Custom fields não disponíveis ainda (em roadmap).
Próximos passos
- Pra entender presets de ritmo, veja Presets Conservador/Balanceado/Agressivo.
- Pra acompanhar disparo, veja Acompanhar tempo real.