Webhooks
Receba notificações em tempo real sobre eventos na sua aplicação.
Como Funciona
Webhooks enviam requisições HTTP POST para sua URL sempre que um evento acontece. Sua aplicação recebe os dados do evento e pode processá-los automaticamente.
Eventoocorre
POSTenviado para sua URL
200 OKconfirma recebimento
NooviChat Webhooks
Configuração
Registre um webhook via API ou painel de administração. Os endpoints de gerenciamento exigem token de usuário administrador da conta:
bash
curl -X POST \
"https://chat.seudominio.com/api/v1/accounts/{account_id}/webhooks" \
-H "api_access_token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"webhook": {
"url": "https://your-app.com/webhooks/noovichat",
"subscriptions": [
"conversation_created",
"message_created",
"contact_created"
]
}
}'Eventos Disponíveis (32)
| Evento | Descrição |
|---|---|
conversation_status_changed | Status da conversa alterado (aberta, resolvida, pendente) |
conversation_updated | Conversa atualizada |
conversation_created | Nova conversa criada |
contact_created | Novo contato criado |
contact_updated | Dados do contato atualizados |
message_created | Nova mensagem recebida ou enviada |
message_updated | Mensagem atualizada |
webwidget_triggered | Widget de chat acionado no site |
inbox_created | Nova inbox criada |
inbox_updated | Inbox atualizada |
conversation_typing_on | Indicador de digitação iniciado |
conversation_typing_off | Indicador de digitação encerrado |
appointment.created | Novo atendimento agendado |
appointment.updated | Dados do atendimento atualizados |
appointment.confirmed | Atendimento confirmado |
appointment.completed | Atendimento concluído |
appointment.cancelled | Atendimento cancelado |
appointment.no_show | Cliente não compareceu |
appointment.rescheduled | Atendimento reagendado |
reminder.sent | Lembrete enviado |
reminder.failed | Falha no envio do lembrete |
professional.created | Profissional criado |
professional.updated | Profissional atualizado |
service.created | Serviço criado |
service.updated | Serviço atualizado |
follow_up_scheduled | Follow-up agendado |
follow_up_sent | Follow-up enviado |
follow_up_failed | Falha no envio do follow-up |
follow_up_cancelled | Follow-up cancelado |
broadcast_follow_up_sent | Follow-up de disparo enviado |
broadcast_started | Disparo em massa iniciado |
broadcast_completed | Disparo em massa concluído |
Exemplo de Payload
json
{
"event": "message_created",
"id": "1234",
"account": {
"id": 1,
"name": "Minha Empresa"
},
"content": "Ola, preciso de ajuda!",
"conversation": {
"id": 567,
"status": "open"
},
"sender": {
"id": 890,
"name": "Joao Silva",
"type": "contact"
},
"created_at": "2025-01-15T14:30:00.000Z"
}NooviFlow Webhooks
Configuração
bash
curl -X POST \
"https://flow.seudominio.com/api/v1/webhooks" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-app.com/webhooks/nooviflow",
"events": [
"invoice.created",
"invoice.paid",
"transaction.created"
]
}'Eventos Disponíveis
| Evento | Descrição |
|---|---|
transaction.created | Nova transação registrada |
transaction.updated | Status da transação alterado |
invoice.created | Nova fatura emitida |
invoice.paid | Fatura marcada como paga |
invoice.overdue | Fatura vencida |
contract.created | Novo contrato criado |
contract.cancelled | Contrato cancelado |
Recebendo Webhooks
Exemplo de endpoint para receber webhooks:
app.post("/webhooks/noovichat", (req, res) => {
const { event, ...data } = req.body;
switch (event) {
case "message_created":
handleNewMessage(data);
break;
case "conversation_status_changed":
handleStatusChange(data);
break;
default:
console.log("Evento não tratado:", event);
}
// Responda rapidamente com 200
res.status(200).json({ received: true });
});Boas Práticas
- Responda com 200 imediatamente e processe os dados de forma assíncrona
- Implemente idempotência — o mesmo evento pode ser enviado mais de uma vez
- Use HTTPS na URL de webhook para segurança dos dados
- Implemente timeout handling — o timeout padrão de entrega é 5 segundos e pode ser configurado na instalação
- Armazene os eventos recebidos em um log para debugging
- Configure retries para falhas temporárias (o sistema reenvia até 3 vezes)