Webhooks
Los webhooks te permiten recibir callbacks HTTP en tiempo real cuando ocurren eventos en tus instancias de WhatsApp. En lugar de consultar la API periodicamente, Wappfy envia los eventos a tu servidor a medida que ocurren.Eventos soportados
Wappfy soporta 12 tipos de eventos de webhook:Eventos de mensaje
Eventos de mensaje
| Evento | Descripcion |
|---|---|
message.received | Se recibio un nuevo mensaje entrante. |
message.sent | Un mensaje saliente fue enviado exitosamente. |
message.delivered | Un mensaje enviado fue entregado al dispositivo del destinatario (doble check). |
message.read | Un mensaje enviado fue leido por el destinatario (checks azules). |
message.failed | Un mensaje saliente fallo al enviarse. |
message.reaction | Alguien reacciono a un mensaje con un emoji. |
Eventos de instancia
Eventos de instancia
| Evento | Descripcion |
|---|---|
instance.connected | Una instancia se conecto exitosamente a WhatsApp. |
instance.disconnected | Una instancia perdio su conexion con WhatsApp. |
instance.qr | Un nuevo codigo QR esta disponible para escanear. |
Eventos de grupo y contacto
Eventos de grupo y contacto
| Evento | Descripcion |
|---|---|
group.joined | Un participante se unio a un grupo (incluyendo el bot mismo). |
group.left | Un participante salio de un grupo. |
contact.created | Se guardo o detecto un nuevo contacto. |
Crear un webhook
Registra un endpoint de webhook para comenzar a recibir eventos.Opciones de configuracion
| Campo | Tipo | Predeterminado | Descripcion |
|---|---|---|---|
url | string | obligatorio | La URL HTTPS que recibira las solicitudes POST del webhook. |
events | string[] | obligatorio | Array de tipos de eventos a los que suscribirse. |
instance_id | string | null | Limita el webhook a una instancia especifica. Si es null, recibe eventos de todas las instancias. |
secret | string | null | Secreto utilizado para generar firmas HMAC para verificacion del payload. |
retry_count | number | 3 | Numero de intentos de reintento en caso de fallo de entrega (0-5). |
timeout_ms | number | 10000 | Tiempo de espera de la solicitud en milisegundos (1000-30000). |
El campo
instance_id es opcional. Si se omite, el webhook recibira eventos de todas las instancias de tu cuenta.Listar webhooks
Actualizar un webhook
Actualiza la URL, los eventos o la configuracion de un webhook existente.Eliminar un webhook
Formato del payload de entrega
Cuando ocurre un evento, Wappfy envia una solicitud POST a la URL de tu webhook con la siguiente estructura:Campos del payload
| Campo | Descripcion |
|---|---|
id | ID unico de entrega. Usalo para deduplicacion. |
event | El tipo de evento que disparo esta entrega. |
instance_id | La instancia que genero el evento. |
timestamp | Marca de tiempo ISO 8601 de cuando ocurrio el evento. |
data | Payload especifico del evento. El contenido varia segun el tipo de evento. |
Verificacion de firma HMAC
Si proporcionas unsecret al crear un webhook, cada entrega incluira un header X-Wappfy-Signature con una firma HMAC-SHA256 del cuerpo de la solicitud.
Verifica siempre esta firma para asegurar que la solicitud proviene de Wappfy y no fue alterada.
Ejemplos de verificacion
Comportamiento de reintentos
Si tu servidor no responde con un codigo de estado2xx dentro del timeout_ms configurado, Wappfy reintentara la entrega.
| Intento | Retraso |
|---|---|
| 1er reintento | 10 segundos |
| 2do reintento | 60 segundos |
| 3er reintento | 5 minutos |
| 4to reintento | 30 minutos |
| 5to reintento | 2 horas |
Los reintentos se detienen cuando se recibe una respuesta
2xx o se agota el retry_count. El conteo de reintentos predeterminado es 3.Ver historial de entregas
Consulta el registro de entregas de un webhook para ver los intentos de entrega pasados y sus resultados.Ejemplos de payload por evento
message.received
message.received
message.delivered
message.delivered
message.read
message.read
message.reaction
message.reaction
instance.connected
instance.connected
instance.qr
instance.qr
group.joined
group.joined
Buenas practicas
Responder rapidamente
Devuelve un estado
200 dentro de 5 segundos. Procesa el evento de forma asincrona para evitar tiempos de espera.Deduplicar
Usa el
id de entrega para detectar y omitir entregas duplicadas causadas por reintentos.Verificar firmas
Valida siempre el header
X-Wappfy-Signature si configuraste un secreto.Usar HTTPS
Las URLs de webhook deben usar HTTPS. Los endpoints HTTP seran rechazados.