Webhooks
Webhooks push real-time events to your server as they happen — a customer
replies, a message is delivered or read, someone taps a button, or a
conversation is assigned. They cover both WhatsApp and RCS; every event
carries a channel field so a single endpoint can serve both.
Configuring your webhook
Go to Settings → Developer → Configure Webhook, enter your HTTPS URL, and tick the events you want. You only receive events you have subscribed to.
Request format
Every event is delivered as an HTTP POST with this envelope:
{
"event": "incoming_message",
"timestamp": "2026-05-18T10:00:00Z",
"data": { }
}| Header | Value |
|---|---|
Content-Type | application/json |
X-Webhook-Event | the event name |
X-Webhook-Source | splashifypro |
Respond with any 2xx status within 10 seconds. Non-2xx responses and
timeouts are logged on our side; the event is not retried.
The channel field is "whatsapp" or "rcs". For RCS, status events also
include rcs_message_id (the provider id) alongside message_id (your
Splashify Pro id) — the RCS send APIs return both, so you can correlate on
either.
incoming_message
A customer sent a message to your business.
{
"event": "incoming_message",
"timestamp": "2026-05-18T10:00:00Z",
"data": {
"message_id": "wamid.HBgM...",
"from": "919876543210",
"conversation_id": "ee64970d-0539-4eb0-859d-2147859a604d",
"type": "text",
"text": "Hi, is my order shipped?",
"channel": "whatsapp",
"timestamp": "2026-05-18T10:00:00Z",
"contacts": [
{ "profile": { "name": "Aditya" }, "wa_id": "919876543210" }
]
}
}RCS variant — note channel and the message_id is your Splashify Pro id:
{
"event": "incoming_message",
"timestamp": "2026-05-18T10:00:00Z",
"data": {
"message_id": "794943b0-520f-11f1-910c-8e532107a70b",
"from": "919876543210",
"conversation_id": "ee64970d-0539-4eb0-859d-2147859a604d",
"type": "image",
"text": "photo.jpg",
"media_url": "https://.../photo.jpg",
"channel": "rcs",
"timestamp": "2026-05-18T10:00:00Z"
}
}| Field | Notes |
|---|---|
type | text, image, video, audio, document, location, … |
text | Body text, or the file name for media |
media_url | Present for media messages |
contacts | WhatsApp profile block — omitted for RCS |
message_sent · message_delivered · message_read · message_failed
Delivery lifecycle of a message you sent.
{
"event": "message_delivered",
"timestamp": "2026-05-18T10:00:05Z",
"data": {
"message_id": "d58aeff7-a81c-47a7-9b67-f381e13f6c4e",
"to": "919876543210",
"status": "delivered",
"channel": "whatsapp"
}
}RCS variant — includes rcs_message_id:
{
"event": "message_read",
"timestamp": "2026-05-18T10:01:00Z",
"data": {
"message_id": "d58aeff7-a81c-47a7-9b67-f381e13f6c4e",
"rcs_message_id": "a1b2c3d4-...",
"to": "919876543210",
"status": "read",
"channel": "rcs"
}
}message_failed additionally carries an error_message:
{
"event": "message_failed",
"timestamp": "2026-05-18T10:00:05Z",
"data": {
"message_id": "d58aeff7-...",
"to": "919876543210",
"status": "failed",
"channel": "rcs",
"error_message": "Handset does not support RCS"
}
}button_clicked
A customer tapped a template/interactive button (WhatsApp) or a suggestion
(RCS). Fired alongside incoming_message.
{
"event": "button_clicked",
"timestamp": "2026-05-18T10:00:00Z",
"data": {
"message_id": "wamid.HBgM...",
"conversation_id": "ee64970d-0539-4eb0-859d-2147859a604d",
"from": "919876543210",
"button_id": "confirm_order",
"button_text": "Confirm Order",
"channel": "whatsapp",
"timestamp": "2026-05-18T10:00:00Z"
}
}| Field | Notes |
|---|---|
button_id | The button’s reply id / payload (WhatsApp) or suggestion postback (RCS) |
button_text | The visible button label |
team_member_assigned
A conversation was assigned to a team member — including when a chatbot hands the conversation over to a human agent.
{
"event": "team_member_assigned",
"timestamp": "2026-05-18T10:02:00Z",
"data": {
"conversation_id": "ee64970d-0539-4eb0-859d-2147859a604d",
"contact": "919876543210",
"assigned_to": "0b8074fd-510d-11f1-8b74-aa43648fa5e4",
"assigned_name": "Jane Doe"
}
}Event reference
| Event | Fires when |
|---|---|
incoming_message | A customer sends a message (WhatsApp or RCS) |
message_sent | The provider confirms the message was sent |
message_delivered | The provider confirms delivery |
message_read | The recipient reads the message |
message_failed | The message fails to deliver |
button_clicked | A customer taps a button / RCS suggestion |
team_member_assigned | A conversation is assigned to a team member (incl. bot→human handover) |