ZAP-API
PreçosCasos de UsoBlogDocsLogin
Começar grátis
  1. Blog
  2. Disparo de mensagens em massa no WhatsApp: como fazer sem ser banido (2026)
Tutorial

Disparo de mensagens em massa no WhatsApp: como fazer sem ser banido (2026)

Throttling, opt-out automático, personalização por destinatário e controle de volume: as 5 regras para campanhas em massa sem risco de banimento. Código pronto para produção.

06 de junho de 2026·9 min de leitura·Equipe Editorial ZAP API

O disparo de mensagens em massa pelo WhatsApp é uma das ferramentas de marketing mais eficientes disponíveis hoje — com taxas de abertura acima de 90%. Mas feito de forma errada, pode resultar no banimento da sua conta. Neste guia, você aprende a fazer de forma segura e eficaz.

Regras fundamentais antes de começar

Para evitar banimento, siga estas regras sem exceção:

  • Só envie para quem autorizou: opt-in explícito (formulário, compra, cadastro)
  • Personalize cada mensagem: nunca envie texto idêntico para todos
  • Respeite o ritmo: máximo 1 mensagem por segundo (rate limiting)
  • Tenha opt-out claro: "Responda SAIR para não receber mais"
  • Horário comercial: não envie antes das 8h ou após as 21h

O que você vai construir

Um sistema de disparo que:

  1. Lê lista de contatos (JSON ou banco de dados)
  2. Personaliza cada mensagem com nome e outros dados do contato
  3. Envia com throttling controlado (delay entre mensagens)
  4. Registra resultado por contato (sucesso/falha)
  5. Processa opt-out em tempo real

Passo 1: Estrutura dos contatos

// contatos.json — apenas contatos com opt-in confirmado
[
  { "nome": "Maria Silva",  "phone": "5511999998888", "cidade": "Sao Paulo"        },
  { "nome": "Joao Santos",  "phone": "5521888887777", "cidade": "Rio de Janeiro"   },
  { "nome": "Ana Lima",     "phone": "5531777776666", "cidade": "Belo Horizonte"   }
]

Passo 2: Script de disparo com throttling

const axios  = require('axios');
const fs     = require('fs');

const TOKEN    = process.env.ZAP_TOKEN;
const INSTANCE = process.env.ZAP_INSTANCE;

const api = axios.create({
  baseURL: 'https://zap-api.tech/v1',
  headers: { Authorization: 'Bearer ' + TOKEN }
});

// Delay entre mensagens — mínimo 1000ms recomendado
const DELAY_MS = 1500;

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

// Personalizar mensagem por contato (NUNCA envie mensagem idêntica)
function criarMensagem(contato) {
  const primeiroNome = contato.nome.split(' ')[0];
  return (
    'Oi, ' + primeiroNome + '! Temos novidade para ' + contato.cidade + ':

' +
    '50% de desconto em toda a linha premium ate domingo!

' +
    'Acesse: https://sua-loja.com/promo-' + contato.cidade.toLowerCase().replace(' ', '-') + '

' +
    'Para nao receber mais ofertas, responda SAIR.'
  );
}

async function dispararCampanha(contatos) {
  const resultados = [];
  const total = contatos.length;

  console.log('Iniciando disparo para ' + total + ' contatos...
');

  for (let i = 0; i < total; i++) {
    const contato = contatos[i];

    try {
      await api.post('/instances/' + INSTANCE + '/send', {
        phone: contato.phone,
        type:  'text',
        body:  criarMensagem(contato)
      });

      resultados.push({ phone: contato.phone, nome: contato.nome, status: 'enviado' });
      console.log('[' + (i + 1) + '/' + total + '] Enviado: ' + contato.nome);

    } catch (err) {
      resultados.push({ phone: contato.phone, nome: contato.nome, status: 'erro', erro: err.message });
      console.error('[' + (i + 1) + '/' + total + '] ERRO ' + contato.nome + ': ' + err.message);
    }

    // Aguardar entre cada mensagem (não remover!)
    if (i < total - 1) await sleep(DELAY_MS);
  }

  return resultados;
}

const contatos = JSON.parse(fs.readFileSync('contatos.json', 'utf8'));

dispararCampanha(contatos).then(resultados => {
  const enviados = resultados.filter(r => r.status === 'enviado').length;
  const erros    = resultados.filter(r => r.status === 'erro').length;

  console.log('
=== RESULTADO ===');
  console.log('Enviados: ' + enviados + ' | Erros: ' + erros);

  fs.writeFileSync('relatorio-campanha.json', JSON.stringify(resultados, null, 2));
  console.log('Relatório salvo em relatorio-campanha.json');
});

Passo 3: Disparo com imagem

async function dispararComImagem(contato) {
  const primeiroNome = contato.nome.split(' ')[0];

  // 1. Enviar imagem com legenda personalizada
  await api.post('/instances/' + INSTANCE + '/send', {
    phone:    contato.phone,
    type:     'image',
    mediaUrl: 'https://sua-loja.com/banner-promo.jpg',
    caption:  'Oi, ' + primeiroNome + '! Sua oferta exclusiva chegou!'
  });

  await sleep(500); // Breve pausa entre imagem e texto

  // 2. Texto com link e opt-out
  await api.post('/instances/' + INSTANCE + '/send', {
    phone: contato.phone,
    type:  'text',
    body:  'Aproveite: https://sua-loja.com/promo

Responda SAIR para cancelar.'
  });
}

Passo 4: Processar opt-out em tempo real

const express = require('express');
const app = express();
app.use(express.json());

// Em produção: salvar opt-outs no banco de dados
const optOuts = new Set();

app.post('/webhook', async (req, res) => {
  res.json({ ok: true });
  const { event, data } = req.body;

  if (event !== 'message.received' || data.fromMe) return;

  // Detectar pedido de opt-out
  const texto = (data.body || '').toUpperCase().trim();
  if (texto === 'SAIR' || texto.includes('PARAR') || texto.includes('CANCELAR')) {
    optOuts.add(data.phone);
    console.log('Opt-out registrado: ' + data.phone);

    await api.post('/instances/' + INSTANCE + '/send', {
      phone: data.phone,
      type:  'text',
      body:  'Pronto! Voce foi removido da lista e nao receberá mais mensagens nossas.'
    });
  }
});

app.listen(3000);

Guia de volume: limites seguros

  • Até 500 mensagens/dia: envio direto com delay de 1,5s entre cada uma
  • 500 a 2.000 mensagens/dia: distribuir ao longo de 8h (~1 mensagem a cada 15s)
  • Acima de 2.000 mensagens/dia: usar múltiplas instâncias (números diferentes)

Dica importante: números mais antigos têm mais reputação no WhatsApp. Evite disparos massivos com números recém-criados — comece com volumes pequenos e aumente gradualmente.

Agendar campanha para horário ideal

const cron = require('node-cron');

// Disparar toda terça-feira às 10h
cron.schedule('0 10 * * 2', async () => {
  const contatos = await buscarContatosDoBanco(); // sua implementação
  await dispararCampanha(contatos);
  console.log('Campanha disparada com sucesso!');
});

Conclusão

Disparos em massa pelo WhatsApp feitos com responsabilidade são uma das estratégias de marketing de maior ROI disponíveis. Com a ZAP API, você tem controle total do processo a partir de R$29/mês por instância* — com trial de 7 dias sem cartão.

Criar instância grátis →

Experimente a ZAP API gratuitamente

7 dias de trial sem precisar de cartão. A partir de R$29/mês*.

Criar instância grátis
EE
Equipe Editorial ZAP APIRevisão técnica

Desenvolvedores e especialistas em integrações WhatsApp. Todo conteúdo passa por revisão técnica para garantir precisão e aplicabilidade.

Ver perfil completoDocumentaçãoTrial grátis

Leia também

Tutorial · 13 de jun. de 2026 · 10 min

Reagir, editar, apagar, fixar e encaminhar mensagens do WhatsApp via API

Vá além do envio: as ações de mensagem da API de WhatsApp com endpoint exato — reação com emoji, edição, apagar para todos, fixar no topo, encaminhar e marcar como lida.

Tutorial · 06 de jun. de 2026 · 10 min

Webhook WhatsApp: receba mensagens em tempo real com Node.js, Python e PHP (2026)

Configure um endpoint que recebe cada mensagem do WhatsApp em tempo real, valida a assinatura HMAC-SHA256 e processa com retry automático. Exemplos completos nas 3 linguagens.

Tutorial · 06 de jun. de 2026 · 12 min

WhatsApp API para Atendimento Automático: guia completo 2026

Respostas fora do horário, triagem de leads por palavra-chave, fluxos condicionais e transferência para humano: como montar atendimento automático no WhatsApp em menos de 30 minutos.

Tutorial · 23 de fev. de 2026 · 7 min

Como enviar mensagem WhatsApp via API em Python

Guia prático para integrar WhatsApp ao seu projeto Python usando requests. Envie texto, imagens e documentos, receba mensagens com Flask e automatize alertas e notificações.

Tópicos:Chatbots com IAE-commerceAPI WhatsApp

Explore também

Casos de usoWhatsApp API por segmentoComparativoZAP API vs alternativasPreçosPlanos e o que está inclusoGlossárioTermos técnicos de WhatsApp API
ZAP-API

API REST para WhatsApp com webhooks assinados, Meta Pixel/CAPI e compliance LGPD. Sem aprovação da Meta.

Status operacional🇧🇷 Feito no Brasil

Produto

  • Preços
  • Casos de uso
  • Comparativo
  • Trial grátis
  • Dashboard

Recursos

  • Documentação
  • Blog
  • Glossário
  • RSS Feed

Empresa

  • Sobre
  • Imprensa
  • Termos de uso
  • Privacidade
  • Criar conta
  • Login

Contato

  • [email protected]
  • [email protected]
  • Resposta em até 24h úteis
© 2026 ZAP-API — Todos os direitos reservados·CNPJ 42.130.949/0001-56·Termos·Privacidade

Desenvolvido por PreviusIA