Webhooks (Server)
Endpoints públicos para recebimento de eventos em tempo real.
Endpoint principal (WhatsApp Evolution)
| Método | Endpoint |
|---|---|
POST | /webhook/connections |
Payload base:
{
"event": "messages.upsert",
"data": {},
"instance": "uuid-da-instancia"
}
Eventos mais comuns:
connection.updateqrcode.updatedmessages.upsertmessages.updatemessages.deletecall
Outros webhooks suportados
| Provedor | Método | Endpoint |
|---|---|---|
| WuzAPI | POST | /webhook/connections/wuzapi |
| SMS | POST | /webhook/sms |
POST | /webhook/email | |
| Botmaker | POST | /webhook/botmaker |
| Telegram | POST | /webhook/telegram/:botToken |
| Telegram (fallback) | POST | /webhook/telegram |
| LINE | POST | /webhook/line |
| X/Twitter CRC | GET | /webhook/twitter |
| X/Twitter eventos | POST | /webhook/twitter |
POST | /webhook/linkedin | |
| TikTok challenge | GET | /webhook/tiktok |
| TikTok eventos | POST | /webhook/tiktok |
| WeChat challenge | GET | /webhook/wechat |
| WeChat eventos | POST | /webhook/wechat |
| Apple Messages | POST | /webhook/apple-messages |
| Google Business | POST | /webhook/google-business |
| Meta (FB/IG/WABA) verify | GET | /webhook/fb/ |
| Meta (FB/IG/WABA) events | POST | /webhook/fb/ |
| Eduzz verify | GET | /eduzz/webhook/:companyId |
| Eduzz events | POST | /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
| Status | Significado |
|---|---|
200 | Evento recebido (processamento assíncrono) |
400 | Erro ao validar/processar payload |
401 | Webhook não autorizado (quando token é obrigatório) |
Boas práticas de integração
- Faça retry com backoff para falhas temporárias.
- Implemente idempotência por
messageId/eventId. - Armazene payload bruto + headers de assinatura para troubleshooting.
- Não dependa de processamento síncrono da resposta HTTP.