Migração 100% grátis + 1 mês grátis com cupom MIGRAR1MES · novos clientes em planos até R$ 200/mês Migrar agora

Webhooks na EvolutionAPI

Como configurar e receber webhooks da EvolutionAPI com retries, idempotência e segurança em produção.

A EvolutionAPI envia eventos via webhook HTTP POST para uma URL que você define. O webhook é a forma como sua automação (n8n, sua própria API, etc) sabe que chegou mensagem.

Eventos disponíveis

EventoQuando dispara
MESSAGES_UPSERTMensagem recebida ou enviada
MESSAGES_UPDATEStatus mudou (entregue, lido)
CONNECTION_UPDATEConectou/desconectou
PRESENCE_UPDATE”Digitando…” / online
QRCODE_UPDATEDNovo QR para parear

Configurar webhook global

Configure no momento de criar a instância:

curl -X POST https://sua-evolution.rollinhost.com.br/instance/create \
  -H "Content-Type: application/json" \
  -H "apikey: SUA_API_KEY" \
  -d '{
    "instanceName": "atendimento",
    "qrcode": true,
    "webhook": {
      "url": "https://seu-n8n.exemplo.com/webhook/whats-in",
      "events": ["MESSAGES_UPSERT", "CONNECTION_UPDATE"],
      "webhook_by_events": false
    }
  }'

Estrutura do payload

{
  "event": "messages.upsert",
  "instance": "atendimento",
  "data": {
    "key": {
      "remoteJid": "5511999999999@s.whatsapp.net",
      "fromMe": false,
      "id": "3EB0..."
    },
    "pushName": "João Silva",
    "message": {
      "conversation": "Oi, gostaria de saber sobre os planos"
    },
    "messageTimestamp": 1735689600
  }
}

Retries e idempotência

Boas práticas:

  1. Sempre retorne 200 rapidamente (< 5s) — processe em fila
  2. Idempotência por data.key.id — webhooks podem chegar duplicados em reconexão
  3. Persistência do raw event antes de processar (em caso de bug, você reprocessa)

Segurança

A EvolutionAPI não assina os webhooks por padrão. Para garantir que a requisição veio dela:

  • Restrinja por IP no firewall (apenas o IP do servidor da Evolution)
  • Use uma URL com path secreto (/webhook/abc123-supersecreto)
  • Validar apikey custom no header (configure no n8n para checar)

Próximos passos

Última atualização: