Webhooks de saída:
sua operação, no seu sistema
Cada mensagem e cada contato da sua operação de WhatsApp entregue no seu backend em tempo real — assinado com HMAC-SHA256, com retry automático, circuit breaker e log de entregas com replay. Infraestrutura de gente grande, disponível em todos os planos.
Eventos disponíveis
Você escolhe por webhook quais eventos quer receber. Todo evento chega num envelope { event, data, timestamp }:
message.receivedUm contato mandou mensagem pra sua operaçãoVer payload de exemplo
{
"event": "message.received",
"data": {
"messageId": "…",
"contactId": "…",
"conversationId": "…",
"type": "TEXT",
"content": "Oi, quero saber do pedido",
"timestamp": "2026-07-11T18:30:00.000Z"
},
"timestamp": "2026-07-11T18:30:00.000Z"
}message.sentSua operação enviou uma mensagem (manual, fluxo, transmissão ou recovery)Ver payload de exemplo
{
"event": "message.sent",
"data": {
"messageId": "…",
"conversationId": "…",
"contactId": "…",
"type": "TEXT",
"content": "Seu pedido saiu pra entrega 🚚",
"timestamp": "2026-07-11T18:31:00.000Z"
},
"timestamp": "2026-07-11T18:31:00.000Z"
}contact.createdUm contato novo entrou na baseVer payload de exemplo
{
"event": "contact.created",
"data": {
"contactId": "…",
"phone": "+5511999999999",
"fullName": "Maria Silva",
"email": "maria@email.com",
"timestamp": "2026-07-11T18:32:00.000Z"
},
"timestamp": "2026-07-11T18:32:00.000Z"
}contact.updatedDados de um contato mudaramVer payload de exemplo
{
"event": "contact.updated",
"data": {
"contactId": "…",
"changes": ["fullName", "email"],
"timestamp": "2026-07-11T18:33:00.000Z"
},
"timestamp": "2026-07-11T18:33:00.000Z"
}Verificando a assinatura
Toda entrega leva o header X-Webhook-Signature: o HMAC-SHA256 (hex) do JSON do campo data, assinado com o secret do seu webhook (mostrado uma vez na criação, regenerável no painel). Também vão X-Webhook-Event e X-Autopilot-Attempt (número da tentativa). Exemplo em Node.js:
import { createHmac, timingSafeEqual } from "crypto";
app.post("/webhook/autopilot", (req, res) => {
const received = req.headers["x-webhook-signature"];
// A assinatura é o HMAC-SHA256 (hex) do JSON do campo `data`
const expected = createHmac("sha256", process.env.AUTOPILOT_WEBHOOK_SECRET)
.update(JSON.stringify(req.body.data))
.digest("hex");
const ok =
received?.length === expected.length &&
timingSafeEqual(Buffer.from(received), Buffer.from(expected));
if (!ok) return res.status(401).end();
// req.body.event → qual evento | req.body.data → o payload
res.status(200).end(); // responda 2xx rápido; processe depois
});Disparos de teste levam X-Webhook-Test: true; reenvios manuais levam X-Webhook-Replay: true.
Feito pra falha do MUNDO REAL
Retry inteligente
Até 5 tentativas com backoff exponencial. 4xx não retenta (429 sim) — 5xx e timeout, sempre.
Circuit breaker
10 falhas consecutivas pausam o webhook sozinho — em vez de martelar seu endpoint caído.
Log com replay
Cada entrega registrada (status, duração, resposta). Falhou? Reenvia do painel com um clique.
Modo de teste
Webhook nasce em modo teste: dispare payloads de exemplo e valide a assinatura antes de ativar.
Requisitos: URL HTTPS. Responda 2xx em até alguns segundos — processe pesado de forma assíncrona.
Perguntas frequentes
No painel: Automações → aba Webhooks → Novo webhook. Você informa a URL (HTTPS obrigatório), escolhe os eventos e recebe o secret de assinatura. O webhook nasce em modo de teste — dispare o payload de exemplo, valide sua assinatura e só então ative pra valer.
Precisa de mais que webhooks?
A API REST completa (contatos, mensagens, fluxos) está no roadmap e os primeiros integradores definem as prioridades. Conta seu caso: contato@autopilotbr.com
Webhooks de saída: 5 no Pro, 20 no Scale e sem limite no Enterprise — veja os planos.