PindoDocs
Web AppWeb

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"
}
FieldDescription
idPindo message identifier.
textMessage content.
senderSender ID used for the message.
created_atMessage creation datetime.
toPhone 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"
}
FieldDescription
sms_idPindo message identifier.
modified_atEvent timestamp.
retries_countHow many times the message has been retried so far.
statusCurrent 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.