Banimento de instância WhatsApp não é azar — é heurística. O WhatsApp não publica os critérios exatos, mas anos de telemetria de plataformas que rodam milhões de mensagens revelam um padrão claro: o algoritmo procura comportamento que não parece humano, e quando encontra, primeiro restringe (warning silencioso), depois desconecta, depois bloqueia o número de forma definitiva.
A boa notícia: dá pra evitar. Este guia consolida 12 práticas técnicas que reduzem em mais de 90% o risco de banimento — divididas em 4 grupos: conexão, cadência, conteúdo e sinais comportamentais.
Por que o WhatsApp bane (em uma frase)
Porque você está parecendo um robô. O algoritmo combina ~30 sinais — frequência de envio, taxa de resposta, diversidade de contatos, presença online, tempo entre mensagens, padrão de mídia, marcação de leitura, denúncias de destinatários — e cada desvio do "usuário real médio" aumenta seu score de risco. Acima de um threshold, o número é punido.
Grupo 1: Conexão (3 práticas)
1. Warmup obrigatório de 7 a 14 dias para número novo
Número recém-criado disparando 500 mensagens no primeiro dia é receita garantida de ban. Faça warmup gradual:
- Dias 1–3: ≤ 20 mensagens/dia, principalmente respostas a contatos que mandam primeiro.
- Dias 4–7: ≤ 50 mensagens/dia, mistura de inbound e outbound.
- Dias 8–14: ≤ 200 mensagens/dia, ainda com diversidade de contatos.
- Após 14 dias: número "maduro", aceita 500–2000/dia se mantiver os outros sinais saudáveis.
2. Multidevice estável: nunca pareie e despareie no mesmo dia
O WhatsApp registra cada par/despar de dispositivo. Se você scaneia QR, fica conectado por 10 minutos, descone, scaneia de novo 5x no dia, o algoritmo interpreta como "tentativa de spam de contas" e marca o número.
Regra prática: parear uma vez e deixar conectado. Se precisar recriar a sessão, espere 24h entre tentativas. A ZAP API mantém a sessão multidevice persistida em disco — você não precisa repare a cada deploy.
3. Conexão estável: sem flapping
Instância que conecta-desconecta a cada 5 minutos é red flag enorme. As causas mais comuns:
- Celular vinculado em modo de economia agressiva (Xiaomi/Huawei matam o app em background).
- NAT/firewall com timeout curto cortando websocket persistente.
- Container reiniciando por OOM kill ou healthcheck mal configurado.
Monitor: na ZAP API, o Session Quality Score mostra contagem de desconexões nas últimas 24h. Mais de 5? Investigue antes que vire ban.
Grupo 2: Cadência (3 práticas)
4. Throttle entre mensagens: 8–25 segundos é seguro
Disparar 100 mensagens em 30 segundos é o sinal mais óbvio de bot. Implemente throttle aleatório:
// Node.js — fila com delay aleatório
async function enviarComThrottle(destinatarios, mensagem) {
for (const phone of destinatarios) {
await zapApi.send({ phone, type: 'text', body: mensagem });
const delay = 8000 + Math.random() * 17000; // 8–25s
await new Promise(r => setTimeout(r, delay));
}
}
Nunca use setInterval(enviar, 1000). O determinismo do intervalo é detectável.
5. Distribuição diária: nunca tudo de manhã
Ser humano não trabalha em rajadas. Distribua o envio ao longo do dia: 30% manhã, 40% tarde, 25% noite, 5% madrugada. Plataformas que disparam todos os 5.000 lembretes às 9h da manhã são as que mais caem.
6. Respeite janelas comerciais
Mensagens marketing depois das 22h e aos domingos têm 4x mais reportes ("Bloquear e denunciar"). E denúncia de destinatário é o sinal mais pesado de todos — 3 denúncias em 24h costumam derrubar a conta.
Grupo 3: Conteúdo (3 práticas)
7. Variabilidade textual: spintax + personalização
Se 1.000 destinatários receberem o texto idêntico "Olá, temos uma promoção imperdível...", o WhatsApp detecta o broadcast facilmente. Use spintax + nome do destinatário:
function gerarMensagem(nome) {
const saudacao = ['Olá', 'Oi', 'E aí'];
const cta = ['confira', 'dá uma olhada', 'aproveita'];
return `${pick(saudacao)} ${nome}! Tem uma novidade aqui na loja, ${pick(cta)}: link.com/promo`;
}
function pick(arr) {
return arr[Math.floor(Math.random() * arr.length)];
}
5–10 variações por mensagem já reduzem dramaticamente o pattern matching.
8. Evite gatilhos de spam: links encurtados, CAIXA ALTA, palavras suspeitas
- Links bit.ly/tinyurl/encurtadores: são marca registrada de spam. Use seu domínio próprio, mesmo que feio (
app.suaempresa.com.br/p/abc). - CAIXA ALTA EXCESSIVA: palavras tipo "URGENTE", "GRÁTIS", "PROMOÇÃO" em maiúsculo aumentam denúncia.
- Palavras de phishing financeiro: "limite liberado", "PIX bloqueado", "imposto", "Receita Federal" — o usuário denuncia rapidíssimo.
9. Mídia em proporção: não envie só texto, não envie só link
Conta humana média manda mistura: ~70% texto, ~15% imagem/áudio, ~10% sticker/emoji, ~5% link. Conta que só dispara texto-com-link cai mais do que conta que mistura.
Grupo 4: Sinais comportamentais (3 práticas)
10. Responda quando o usuário responde
Conta que só envia, nunca responde, é classificada como "broadcast comercial" — categoria de risco alto. Mantenha pelo menos um humano (ou bot inteligente) tratando inbound em ≤ 2 horas no horário comercial. Taxa de resposta acima de 30% reduz drasticamente o risco.
11. Marque mensagens como lidas
Conta que recebe 100 mensagens e não marca nenhuma como lida (sem dois check azuis) parece bot. A ZAP API tem o endpoint POST /v1/messages/:id/read. Marque as inbounds que você já processou.
12. Atualize presença ("digitando" e "online")
Antes de mandar uma resposta longa, sinalize "digitando..." por 2–4 segundos. É mais humano e reduz o score de bot:
// 1. Sinaliza digitando
await zapApi.setPresence({
instanceId, to: phone, presence: 'composing'
});
// 2. Espera tempo proporcional ao tamanho da resposta
const delay = Math.min(4000, mensagem.length * 50);
await new Promise(r => setTimeout(r, delay));
// 3. Envia
await zapApi.send({ phone, type: 'text', body: mensagem });
Como a ZAP API te protege automaticamente
Algumas dessas práticas a plataforma já aplica nos bastidores:
- Throttle automático no outbox: a fila
OutboxJobrespeita um intervalo mínimo configurável (OUTBOX_MIN_DELAY_MS) entre envios da mesma instância. - Circuit breaker per-instance: se a instância recebe 3 erros 4xx consecutivos do gateway, abre o circuito por 30s — evita cascata que dispara ban heurístico.
- Session Quality State Machine: classifica a instância em
healthy,degraded,at_riskecriticalcom base em desconexões, latência, taxa de erro. Emat_risk, a plataforma reduz throughput automaticamente. - Alerta proativo de instância silenciosa: se ficou parada por 24h+, recebe email — geralmente é o sinal antes do shadowban.
O que fazer se já está banido
- Desconecte a instância imediatamente e pare de gerar tráfego — continuar tentando piora.
- Verifique o status real: tente abrir o app no celular. Se aparecer "Este número está temporariamente banido", clique em Solicitar revisão. Em ~80% dos casos de ban temporário (warning), o desbloqueio sai em 24–72h.
- Não troque de provedor de API achando que é o problema. O ban é do número, não do gateway. Trocar não resolve.
- Se for definitivo, use outro chip e refaça warmup do zero — não há atalho.
FAQ
- Quantas mensagens posso enviar por dia sem ser banido?
Depende da maturidade do número, taxa de resposta e diversidade dos destinatários. Após 14 dias de warmup limpo, 1.000–2.000/dia é seguro para a maioria dos casos. Acima disso, divida em múltiplas instâncias. - WhatsApp Business pessoal e WhatsApp via API têm o mesmo risco?
Não — API usa multidevice, que tem heurísticas diferentes. Geralmente API é mais permissivo se as práticas acima forem seguidas. - Posso escalar para 100k mensagens/dia?
Sim, distribuindo entre múltiplas instâncias maduras (ver artigo "Como escalar WhatsApp para 100 mil mensagens/dia"). - Disparo em massa é proibido pelo WhatsApp?
Sem opt-in, sim. Com opt-in (cliente concordou em receber), é tolerado se respeitar cadência humana. - O número de origem importa?
Sim. Chip pré-pago novo, sem histórico, é alvo prioritário do ban. Use chip pós-pago com 30+ dias de uso humano antes de virar API.
Criar conta com Session Quality e proteção anti-ban — trial 7 dias, sem cartão.