Webhooks
Webhooks notify your server when events happen on your Pindo account, such as a message being sent, delivered, or received. This saves you from polling the API to check for updates.
How they work
You configure a webhook by providing a URL on your server. You can also add custom headers, such as an auth token, that Pindo will include in each request. When an event occurs, Pindo sends a POST request with a JSON body to your URL.
Keep the server behind your webhook URL available. If it's down when an event occurs, that notification is missed.
Configure webhook URLs in the dashboard: the DLR webhook under SMS → Configurations, and the outbound webhook (with headers) on each sender ID.
SenderID webhook
Notifies you when an SMS is sent.
{
"id": "out_sms_01H7DJEJ1YZKTNT8EDXY2C7YG9",
"text": "Hello from Pindo",
"sender": "PindoTest",
"created_at": "2026-06-10T09:04:12",
"to": "+250781234567"
}| Field | Description |
|---|---|
| id | Pindo message identifier. |
| text | Message content. |
| sender | Sender ID used for the message. |
| created_at | Message creation datetime. |
| to | Phone number receiving the message. |
DLR webhook
Notifies you when a message delivery receipt is available.
{
"sms_id": "out_sms_01H7DJEJ1YZKTNT8EDXY2C7YG9",
"modified_at": "2026-06-10T09:04:31",
"retries_count": 0,
"status": "DELIVRD"
}| Field | Description |
|---|---|
| sms_id | Pindo message identifier. |
| modified_at | Event timestamp. |
| retries_count | How many times the message has been retried so far. |
| status | Current delivery receipt. One of ACCEPTED, EXPIRED, DELIVRD, UNDELIV, REJECTED, UNKNOWN. |
See what each status means in the SMS Status Guide.
Inbound webhook
Inbound messages are handled by the conversation engine. Build a flow in the Editor and use its Action → Webhook node to forward replies and captured answers to your own endpoint.