Webhooks (Server)

Endpoints públicos para recebimento de eventos em tempo real.

Endpoint principal (WhatsApp Evolution)

MétodoEndpoint
POST/webhook/connections

Payload base:

{
  "event": "messages.upsert",
  "data": {},
  "instance": "uuid-da-instancia"
}

Eventos mais comuns:

  • connection.update
  • qrcode.updated
  • messages.upsert
  • messages.update
  • messages.delete
  • call

Outros webhooks suportados

ProvedorMétodoEndpoint
WuzAPIPOST/webhook/connections/wuzapi
SMSPOST/webhook/sms
EmailPOST/webhook/email
BotmakerPOST/webhook/botmaker
TelegramPOST/webhook/telegram/:botToken
Telegram (fallback)POST/webhook/telegram
LINEPOST/webhook/line
X/Twitter CRCGET/webhook/twitter
X/Twitter eventosPOST/webhook/twitter
LinkedInPOST/webhook/linkedin
TikTok challengeGET/webhook/tiktok
TikTok eventosPOST/webhook/tiktok
WeChat challengeGET/webhook/wechat
WeChat eventosPOST/webhook/wechat
Apple MessagesPOST/webhook/apple-messages
Google BusinessPOST/webhook/google-business
Meta (FB/IG/WABA) verifyGET/webhook/fb/
Meta (FB/IG/WABA) eventsPOST/webhook/fb/
Eduzz verifyGET/eduzz/webhook/:companyId
Eduzz eventsPOST/eduzz/webhook/:companyId

Nota sobre coleção Postman (WABA)

Na coleção [SENDEASY] WABA Integration API.postman_collection.json, os exemplos de webhook usam:

/webhooks/meta

No backend atual, o endpoint público equivalente está montado como:

/webhook/fb/

Se o seu ambiente usar um gateway/rewrite, confirme qual caminho foi publicado externamente.

Reenvio para webhook do projeto

No fluxo Evolution, quando a instância é reconhecida, a Sendeasy pode reenviar evento para o webhook do projeto:

{
  "event": "messages.upsert",
  "channel": "whatsapp",
  "data": {},
  "channelId": "uuid-do-canal"
}

Códigos HTTP

StatusSignificado
200Evento recebido (processamento assíncrono)
400Erro ao validar/processar payload
401Webhook não autorizado (quando token é obrigatório)

Boas práticas de integração

  1. Faça retry com backoff para falhas temporárias.
  2. Implemente idempotência por messageId/eventId.
  3. Armazene payload bruto + headers de assinatura para troubleshooting.
  4. Não dependa de processamento síncrono da resposta HTTP.

Essa informação foi útil?