FlowIQ sends a POST request to your registered webhook URL whenever an event occurs. Each payload includes an event_type field so you can route events accordingly.
Subscribers registered as type all receive every event. Those registered for a specific type (e.g. message_received) only receive that one.
Event Types
message_received
Fired when a user sends you a WhatsApp message.
{
"event_type": "message_received",
"organization_id": "uuid",
"timestamp": "2026-03-07T00:00:00.000Z",
"whatsapp_message_id": "wamid.xxx",
"message_type": "text | image | video | audio | document | location | button | interactive | sticker",
"message": "Hello there",
"media_type": null,
"media_url": null,
"file_name": null,
"whatsapp_id": "1234567890",
"contact_id": "uuid",
"reply_context_id": null,
"location_data": null
}
media_type / media_url / file_name are populated for image, video, audio, and document messages
location_data is { latitude, longitude, name, address } for location messages
reply_context_id is the wamid of the message being replied to
message_sent
Fired when Meta confirms your outbound message was sent (lightweight receipt).
{
"event_type": "message_sent",
"whatsapp_message_id": "wamid.xxx",
"organization_id": "uuid",
"status": "sent",
"timestamp": "2026-03-07T00:00:00.000Z",
"whatsapp_id": "1234567890"
}
sent_message
Also fired on sent — but with the full helpdesk_messages row so you have the message content.
{
"event_type": "sent_message",
"id": "uuid",
"organization_id": "uuid",
"message": "Hi, here is your order update!",
"sender_type": "bot-whatsapp",
"created_at": "2026-03-07T00:00:00.000Z",
"contact_id": "uuid",
"message_status": "sent",
"media_type": null,
"media_url": null,
"media_file_name": null,
"member_id": null,
"whatsapp_message_id": "wamid.xxx",
"reply_context_id": null,
"broadcast_id": null,
"sent_receipt_received": true,
"delivered_receipt_received": false,
"read_receipt_received": false,
"timestamp": "2026-03-07T00:00:00.000Z"
}
message_delivered
{
"event_type": "message_delivered",
"whatsapp_message_id": "wamid.xxx",
"organization_id": "uuid",
"status": "delivered",
"timestamp": "2026-03-07T00:00:00.000Z",
"whatsapp_id": "1234567890"
}
message_read
{
"event_type": "message_read",
"whatsapp_message_id": "wamid.xxx",
"organization_id": "uuid",
"status": "read",
"timestamp": "2026-03-07T00:00:00.000Z",
"whatsapp_id": "1234567890"
}
message_failed
Fired for failed, undelivered, and warning statuses.
{
"event_type": "message_failed",
"whatsapp_message_id": "wamid.xxx",
"organization_id": "uuid",
"status": "failed | undelivered | warning",
"timestamp": "2026-03-07T00:00:00.000Z",
"whatsapp_id": "1234567890"
}