Webhooks
Webhooks permitem que você receba callbacks HTTP em tempo real quando eventos ocorrem nas suas instâncias WhatsApp. Em vez de fazer polling na API, a Wappfy envia os eventos para o seu servidor conforme eles acontecem.Eventos Suportados
A Wappfy suporta 12 tipos de eventos de webhook:Eventos de Mensagem
Eventos de Mensagem
| Evento | Descrição |
|---|---|
message.received | Uma nova mensagem de entrada foi recebida. |
message.sent | Uma mensagem de saída foi enviada com sucesso. |
message.delivered | Uma mensagem enviada foi entregue no dispositivo do destinatário (duplo check). |
message.read | Uma mensagem enviada foi lida pelo destinatário (checks azuis). |
message.failed | Uma mensagem de saída falhou no envio. |
message.reaction | Alguém reagiu a uma mensagem com um emoji. |
Eventos de Instância
Eventos de Instância
| Evento | Descrição |
|---|---|
instance.connected | Uma instância se conectou ao WhatsApp com sucesso. |
instance.disconnected | Uma instância perdeu a conexão com o WhatsApp. |
instance.qr | Um novo QR code está disponível para escaneamento. |
Eventos de Grupo e Contato
Eventos de Grupo e Contato
| Evento | Descrição |
|---|---|
group.joined | Um participante entrou em um grupo (incluindo o próprio bot). |
group.left | Um participante saiu de um grupo. |
contact.created | Um novo contato foi salvo ou detectado. |
Criar um Webhook
Registre um endpoint de webhook para começar a receber eventos.Opções de Configuração
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
url | string | obrigatório | A URL HTTPS que receberá as requisições POST do webhook. |
events | string[] | obrigatório | Array de tipos de evento para assinar. |
instance_id | string | null | Limite o webhook a uma instância específica. Se nulo, recebe eventos de todas as instâncias. |
secret | string | null | Segredo usado para gerar assinaturas HMAC para verificação do payload. |
retry_count | number | 3 | Número de tentativas de reenvio em caso de falha (0-5). |
timeout_ms | number | 10000 | Timeout da requisição em milissegundos (1000-30000). |
O campo
instance_id é opcional. Se omitido, o webhook receberá eventos de todas as instâncias da sua conta.Listar Webhooks
Atualizar um Webhook
Atualize a URL, eventos ou configuração de um webhook existente.Excluir um Webhook
Formato do Payload de Entrega
Quando um evento ocorre, a Wappfy envia uma requisição POST para a URL do seu webhook com a seguinte estrutura:Campos do Payload
| Campo | Descrição |
|---|---|
id | ID único de entrega. Use para deduplicação. |
event | O tipo de evento que disparou esta entrega. |
instance_id | A instância que gerou o evento. |
timestamp | Timestamp ISO 8601 de quando o evento ocorreu. |
data | Payload específico do evento. O conteúdo varia por tipo de evento. |
Verificação de Assinatura HMAC
Se você fornecer umsecret ao criar um webhook, cada entrega incluirá um header X-Wappfy-Signature contendo uma assinatura HMAC-SHA256 do corpo da requisição.
Sempre verifique esta assinatura para garantir que a requisição veio da Wappfy e não foi adulterada.
Exemplos de Verificação
Comportamento de Retentativas
Se o seu servidor não responder com um código de status2xx dentro do timeout_ms configurado, a Wappfy tentará reenviar a entrega.
| Tentativa | Atraso |
|---|---|
| 1a retentativa | 10 segundos |
| 2a retentativa | 60 segundos |
| 3a retentativa | 5 minutos |
| 4a retentativa | 30 minutos |
| 5a retentativa | 2 horas |
As retentativas param quando uma resposta
2xx é recebida ou o retry_count é esgotado. O número padrão de retentativas é 3.Visualizando o Histórico de Entregas
Consulte o log de entregas de um webhook para ver tentativas passadas e seus resultados.Exemplos de Payload por Evento
message.received
message.received
message.delivered
message.delivered
message.read
message.read
message.reaction
message.reaction
message.failed
message.failed
message.sent
message.sent
instance.connected
instance.connected
instance.disconnected
instance.disconnected
instance.qr
instance.qr
group.joined
group.joined
group.left
group.left
contact.created
contact.created
Boas Práticas
Responda rapidamente
Retorne um status
200 em até 5 segundos. Processe o evento de forma assíncrona para evitar timeouts.Deduplique
Use o
id da entrega para detectar e ignorar entregas duplicadas causadas por retentativas.Verifique assinaturas
Sempre valide o header
X-Wappfy-Signature se você configurou um segredo.Use HTTPS
URLs de webhook devem usar HTTPS. Endpoints HTTP serão rejeitados.