Pular para o conteúdo principal
O WhatsApp usa algoritmos para detectar comportamento automatizado. Quando o sistema entende que um número está enviando mensagens de forma não natural, ele pode restringir ou banir o número. As boas práticas abaixo ajudam a manter seu número funcionando por mais tempo. A lógica é simples: quanto mais o seu uso se parecer com o de uma pessoa real, menor o risco de restrição. Se você caiu aqui procurando por que seu WhatsApp Business bloqueou ou como evitar banimento no WhatsApp, comece pelo modelo mental do WhatsApp Web na próxima seção. É o que mais reduz banimento na prática.
Estas recomendações se aplicam principalmente a instâncias não oficiais (QR code). Instâncias WABA (oficiais) seguem as políticas da Meta diretamente e têm risco muito menor de banimento. Ainda assim, boas práticas de conteúdo e opt-in valem para os dois tipos.

Perfil completo

Preencha o perfil do WhatsApp Business com o máximo de informações possíveis:
  • Foto de perfil (logotipo ou foto profissional)
  • Nome comercial
  • Descrição do negócio
  • Endereço
  • Horário de funcionamento
  • E-mail de contato
  • Site
Um perfil completo aumenta a confiança do algoritmo no número. Perfis vazios ou incompletos são um sinal de conta descartável.
Ative o PIN de segurança (verificação em duas etapas) no WhatsApp. Além de proteger contra clonagem, indica para o sistema que é uma conta legítima que se preocupa com segurança.

Pense como o WhatsApp Web: múltiplas conexões por número

A maior parte dos problemas de banimento não vem da API. Vem de tentar fazer um único número se comportar como dezenas de pessoas ao mesmo tempo. Para evitar isso, vale entender como o próprio WhatsApp foi desenhado. O WhatsApp permite vincular até 4 dispositivos a um mesmo número, além do celular principal. É o mecanismo do WhatsApp Web e do WhatsApp Desktop: você abre o mesmo número no notebook do trabalho, no computador de casa e no tablet, e todos conversam pela mesma conta. Isso é uso legítimo e esperado. Cada conexão dessas é uma instância do ponto de vista da rede do WhatsApp. Quando você cria uma instância na Zapster, está ocupando um desses espaços de dispositivo vinculado. O problema aparece quando uma única instância tenta atender muita gente. Para o algoritmo, uma instância respondendo 400 conversas por dia parece uma pessoa sobrecarregada de forma impossível, e isso é um sinal clássico de automação abusiva. Ninguém digita para 400 contatos sozinho num dia sem parar. A boa prática é distribuir. Abra de 2 a 4 instâncias do mesmo número na Zapster e divida as conversas entre elas. Cada instância passa a funcionar como um “agente” virtual:
  • 1 instância atendendo sozinha 400 conversas/dia → parece um robô.
  • 4 instâncias do mesmo número atendendo 100 conversas/dia cada → parece uma equipe de 4 atendentes humanos usando o WhatsApp Web.
O volume total é o mesmo. O que muda é a distribuição: em vez de um humano impossível, o padrão fica parecido com vários humanos plausíveis.
Para automatizar esse balanceamento, está em desenvolvimento o Smart Sending Mode com pool de instâncias, que distribui as conversas entre as instâncias do mesmo número de forma automática. Enquanto ele não chega, você consegue o mesmo efeito criando as instâncias manualmente e roteando no seu código. Veja Instâncias para entender os tipos de conexão.

Peça para ser adicionado nos contatos

Sempre que possível, peça ao destinatário que adicione o número da instância na agenda de contatos do celular. Quando alguém salva seu número, o WhatsApp entende que existe um relacionamento real entre vocês. Isso eleva o “score” do número e reduz a chance de que suas mensagens sejam marcadas como spam. Na prática, você pode incluir uma frase como:
“Para garantir que nossas mensagens cheguem sempre, salve este número nos seus contatos.”

Cadência entre mensagens

Não envie mensagens em rajada. O WhatsApp detecta envios em massa com facilidade. Recomendações de intervalo:
CenárioIntervalo mínimoIdeal
Envio para lista de contatos30 segundos45 a 60 segundos
Follow-up após interação10 segundos20 a 30 segundos
Respostas automáticas (chatbot)3 a 5 segundos5 a 10 segundos
Quanto maior o intervalo, melhor. Se você precisa enviar para 100 contatos, espere pelo menos 30 segundos entre cada envio. Isso significa que o lote leva cerca de 50 minutos pra finalizar. Parece lento, mas é o que mantém o número vivo.
Enviar mais de 1 mensagem por segundo para destinatários diferentes é um dos comportamentos que mais gera restrição. Evite sempre.

Janela humana: 1 conversa por vez por instância

Repare em como uma pessoa real usa o WhatsApp Web. Ela foca em um contato, troca algumas mensagens, resolve aquele assunto e só então passa para o próximo. Ela não responde 5 conversas em paralelo, palavra por palavra, ao mesmo tempo. Esse foco sequencial é a assinatura de um humano de verdade. A boa prática é reproduzir isso por instância: trate uma conversa por vez, dentro de uma “janela” ativa. Um padrão simples que funciona bem é o debounce por contato: uma janela de cerca de 1 minuto dedicada a um contato antes de seguir para o próximo. Quando outro contato escreve no meio dessa janela, você não atende em paralelo. Responde algo curto como “já te respondo, um instante” e coloca aquele contato na fila. O fluxo, em palavras:
  1. Chega uma mensagem.
  2. Já existe uma janela ativa nessa instância?
    • Sim → enfileira o contato e responde com uma mensagem de espera.
    • Não → abre a janela para esse contato e responde normalmente.
  3. Ao fim da janela (ou quando o assunto se resolve), pega o próximo da fila.
O ponto importante: isso reduz banimento sem reduzir o volume total. Você continua atendendo a mesma quantidade de gente. Só muda a distribuição no tempo, o que evita o padrão de um robô falando com todo mundo ao mesmo tempo.
O Smart Sending Mode (em desenvolvimento) vai cuidar dessa fila e do debounce por contato de forma nativa, junto com o pool de instâncias.

Presença em paralelo é veneno

Antes de enviar uma mensagem, use o endpoint de atualização de presença para simular o comportamento humano:
# Simular "Digitando..." por 5 segundos antes de enviar
curl -X PATCH https://api.zapsterapi.com/v1/wa/instances/SUA_INSTANCIA/presence \
  -H "Authorization: Bearer SEU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "recipient": "5511999999999",
    "status": "typing",
    "duration_strategy": "maximum_duration",
    "max_duration": 5
  }'
O destinatário vai ver “Digitando…” por 5 segundos antes de receber a mensagem. Isso faz o envio parecer mais natural, tanto para quem recebe quanto para o algoritmo. Para áudios, use "status": "recording" para mostrar “Gravando áudio…”. Você também pode usar "duration_strategy": "until_next_message" para manter o status ativo até que a mensagem seja enviada de fato. Isso funciona bem quando o tempo de processamento varia (como em respostas de IA).

Por que paralelizar presença entrega o bot

Aqui está o erro que mais derruba número: disparar presence: typing (ou recording) para dois destinatários ao mesmo tempo na mesma instância. Pense no que isso representa: uma única pessoa “Digitando…” para o João e para a Maria no mesmo segundo. Nenhum humano digita para duas pessoas simultaneamente. É um sinal de robô que não tem como disfarçar. A solução é serializar a presença por instância: processar a fila um por vez, com a sua presença, e só disparar o próximo quando o anterior terminar. Anti-padrão (presença em paralelo, todos ao mesmo tempo):
// ❌ NÃO faça isso: dispara "Digitando..." para todos de uma vez
await Promise.all(
  contacts.map(async (contact) => {
    await setPresence(contact.phone, 'typing'); // todos "digitando" juntos
    await sendMessage(contact.phone, contact.text);
  }),
);
Correto (uma conversa por vez, presença serializada):
// ✅ Serializa: só começa a "digitar" para o próximo quando o atual termina
async function setPresence(phone, status) {
  await fetch(`https://api.zapsterapi.com/v1/wa/instances/SUA_INSTANCIA/presence`, {
    method: 'PATCH',
    headers: {
      Authorization: 'Bearer SEU_TOKEN',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      recipient: phone,
      status,
      // mantém "Digitando..." até a mensagem sair de fato
      duration_strategy: 'until_next_message',
    }),
  });
}

for (const contact of contacts) {
  await setPresence(contact.phone, 'typing');
  await sendMessage(contact.phone, contact.text);
  await new Promise((r) => setTimeout(r, 45000)); // intervalo entre conversas
}
O duration_strategy: 'until_next_message' é um aliado aqui: ele segura o “Digitando…” pelo tempo que o seu processamento levar e o encerra no envio, sem você ter que cronometrar nada. Combinado com a serialização, a presença fica naturalmente alinhada com uma conversa de cada vez.

Use o dispositivo original regularmente

A Meta desconecta dispositivos vinculados que ficam inativos por mais de 14 dias. Isso significa que se ninguém abrir o aplicativo do WhatsApp no celular original durante 14 dias, a conexão da instância pode cair. Recomendação: pelo menos uma vez por semana, abra o WhatsApp no celular onde o número está registrado. Não precisa fazer nada complexo:
  • Abrir o app
  • Navegar pelas conversas
  • Enviar uma mensagem para alguém (pode ser para você mesmo em outro número)
  • Verificar se tem atualizações pendentes do app
Esse uso periódico mantém o vínculo ativo e evita desconexões inesperadas.

Personalize as mensagens

Mensagens idênticas enviadas para muitas pessoas são um dos sinais mais fortes de automação. O WhatsApp compara o conteúdo das mensagens enviadas por um número e detecta padrões repetitivos. Ruim:
Olá! Temos uma promoção especial para você. Acesse nosso site.
(mesma mensagem para 200 pessoas) Bom:
Olá João! Vi que você se interessou pelo plano Pro na semana passada.
Ainda está avaliando? Posso te ajudar com alguma dúvida.
(mensagem personalizada com nome e contexto) Na API da Zapster, você monta a mensagem dinamicamente no seu código antes de enviar. Cada request ao POST /v1/wa/messages pode ter um texto diferente:
const contacts = [
  { phone: '5511999999999', name: 'João', interest: 'plano Pro' },
  { phone: '5511888888888', name: 'Maria', interest: 'integração N8n' },
];

for (const contact of contacts) {
  await fetch('https://api.zapsterapi.com/v1/wa/messages', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer SEU_TOKEN',
      'X-Instance-ID': 'SUA_INSTANCIA',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      recipient: contact.phone,
      text: `Olá ${contact.name}! Vi que você se interessou por ${contact.interest}. Posso te ajudar?`,
    }),
  });

  // Esperar entre envios
  await new Promise(r => setTimeout(r, 45000)); // 45 segundos
}

Opt-in e opt-out

Envie mensagens apenas para quem deu consentimento. Pessoas que não esperam receber suas mensagens vão denunciar como spam, e isso derruba o score do número rapidamente. Opt-in: Tenha alguma forma de consentimento antes de enviar. Pode ser um formulário no site, uma confirmação por e-mail, ou uma interação prévia no próprio WhatsApp. Opt-out: Sempre dê a opção de parar de receber mensagens. Inclua algo como:
“Se não quiser mais receber nossas mensagens, responda SAIR.”
E respeite quando alguém pedir para sair. Continuar enviando para quem pediu para parar é o caminho mais rápido para restrição.

Higienização de contatos

Antes de enviar para uma lista, verifique se os números são válidos: Enviar para números inválidos ou inativos gera falhas silenciosas que o WhatsApp contabiliza negativamente.

Horários de envio

Enviar mensagens de madrugada ou em horários estranhos gera mais denúncias. Prefira horários comerciais:
HorárioRecomendação
8h às 12hBom
12h às 14hAceitável (horário de almoço, taxa de leitura menor)
14h às 18hBom
18h às 20hAceitável
20h às 8hEvitar
Finais de semanaEvitar para mensagens comerciais
Com o recurso de mensagens agendadas, você pode preparar o envio fora do horário e deixar a Zapster disparar no momento certo.

O que fazer se receber restrição

Se o número for restrito temporariamente:
  1. Pare imediatamente de enviar mensagens automatizadas
  2. Espere o período de restrição passar (geralmente 24 a 48 horas)
  3. Volte devagar com volume reduzido e intervalos maiores
  4. Revise suas práticas antes de retomar o volume anterior
Se o número for banido permanentemente:
  1. O número não pode ser recuperado na maioria dos casos
  2. Considere migrar para uma instância WABA (oficial) que não tem esse risco
  3. Se precisar de um novo número não oficial, comece com volume baixo e siga todas as práticas acima desde o início

Auto-auditoria do workflow (regra 80/20)

Antes de concluir que “a API está banindo meu número”, audite o seu próprio fluxo. Na prática, a causa quase sempre está no desenho do workflow, não na ferramenta. Vale aplicar a regra 80/20 aqui: 80% do trabalho é planejamento e análise do fluxo, 20% é a execução do código. Quem inverte essa proporção (joga código em produção e só depois investiga) costuma queimar números no processo. Passe o seu fluxo por estas perguntas:
  • Quantas instâncias eu mantenho por número? Estou usando o modelo do WhatsApp Web (até 4 dispositivos) ou sobrecarregando uma só?
  • Meu agente/bot responde várias conversas em paralelo? Ou trata uma de cada vez?
  • Tenho controle de concorrência (fila, lock, debounce por contato)? Ou tudo dispara ao mesmo tempo?
  • Onde eu envio presence: typing? Está serializado por instância ou paralelo?
  • Qual o intervalo médio entre envios para o mesmo contato?
  • Meu volume diário bate com “X atendentes humanos trabalhando das 9h às 18h”? Ou só faz sentido se fosse um robô?
Esse tipo de auditoria é uma ótima tarefa para delegar a um LLM (Claude, ChatGPT). Descreva o seu workflow atual (quantas instâncias, como o bot enfileira, onde dispara presença) e peça para o modelo apontar onde o padrão se afasta de um humano usando o WhatsApp Web.
Vale o posicionamento honesto: você é dono do desenho do seu sistema. A Zapster entrega as ferramentas (instâncias, presença, agendamento, fila), não a estratégia de como você as combina. Um workflow bem desenhado mantém o número saudável com as mesmas ferramentas que um workflow mal desenhado usa para queimá-lo.

Checklist rápido

Use esta lista antes de iniciar um envio em volume:
  • O perfil do WhatsApp está completo (foto, descrição, endereço)?
  • Os destinatários deram consentimento para receber mensagens?
  • As mensagens estão personalizadas com nome ou contexto?
  • O intervalo entre envios é de pelo menos 30 segundos?
  • Estou usando o endpoint de presença (“Digitando…”)?
  • Tenho múltiplas instâncias por número para distribuir as conversas?
  • A presença (“Digitando…”) está serializada (uma por vez), nunca em paralelo?
  • Tenho debounce por contato (uma janela por vez, sem atender tudo simultaneamente)?
  • Os números da lista são válidos e ativos?
  • O horário de envio é dentro do horário comercial?
  • Tem opção de opt-out na mensagem?
  • Usei o app do WhatsApp no celular original esta semana?

Referências