Skip to main content

Estructura de Payloads

Cada evento tiene una estructura de payload específica. Esta página documenta los más importantes.

message.received

El payload de message.received usa una estructura híbrida: el campo message contiene el mensaje exactamente como lo envía Meta, más IDs propios de Whaapy y extras de valor agregado.

Campos Base

Estos campos siempre están presentes:

Campos Extras (Valor Agregado)

Estos campos aparecen según el tipo de mensaje:
¿Por qué estructura híbrida? El campo message usa exactamente el formato de Meta, permitiéndote reutilizar código existente. Los extras de Whaapy (media_url, transcription) te ahorran llamadas adicionales a la API.

Ejemplos por Tipo de Mensaje


Sobre media_url vs message.*.id

message.image.id (Meta)

ID de media de Meta. Requiere llamada adicional a su API para obtener la URL de descarga.

media_url (Whaapy)

URL lista para descargar con token incluido. Sin llamadas adicionales.
Limitaciones:
  • Token válido: 24 horas
  • Expiración de media: WhatsApp elimina media después de 30 días
Para referencia del formato Meta, consulta la documentación oficial.

message.sent

Cuando tu negocio envía un mensaje (manual o por IA).

conversation.created

Cuando se inicia una nueva conversación.

conversation.assigned

Cuando una conversación se asigna a un agente humano.

broadcast.completed

Cuando un envío masivo termina.

message.delivered

Cuando WhatsApp confirma que el mensaje fue entregado al dispositivo del usuario.

message.read

Cuando el usuario abre y lee el mensaje (doble check azul).
El evento message.read solo se recibe si el usuario tiene habilitada la confirmación de lectura en WhatsApp.

message.failed

Cuando un mensaje no se pudo enviar.
Los códigos de error más comunes son 131047 (ventana cerrada), 131051 (número no válido), y 131026 (usuario bloqueó el número).

conversation.unassigned

Cuando una conversación es desasignada de un agente.

conversation.closed

Cuando una conversación es marcada como cerrada.

contact.created

Cuando se crea un nuevo contacto (primera vez que alguien escribe).

contact.updated

Cuando se actualizan los datos de un contacto.

contact.deleted

Cuando se elimina un contacto.
Al eliminar un contacto, también se eliminan todas sus conversaciones y mensajes. Esta acción es irreversible.

broadcast.sent

Cuando un broadcast comienza a enviarse.

broadcast.failed

Cuando un broadcast falla antes de completarse.
Si un broadcast falla parcialmente, los mensajes ya enviados no se revierten. Puedes crear un nuevo broadcast con los contactos pendientes.

Próximos Pasos

Seguridad

Verificar la autenticidad de los webhooks

Gestión

Actualizar, probar y eliminar webhooks