Trackly SMS receives delivery status updates from SMS providers via webhooks. This page documents the webhook format for Infobip, our primary provider.
Webhook URL
Configure this URL in your Infobip dashboard to receive delivery reports:
https://app.tracklysms.com/api/webhook-feedbacks/infobip
This webhook is configured automatically when you set up your Infobip integration. You typically don’t need to configure it manually.
Webhook Payload
Infobip sends delivery status updates in the following format:
{
"results": [
{
"messageId": "msg_abc123def456",
"to": "+14155551234",
"status": {
"groupId": 3,
"groupName": "DELIVERED",
"id": 5,
"name": "DELIVERED_TO_HANDSET"
},
"doneAt": "2024-01-15T10:30:00.000+0000"
}
]
}
Status Groups
Infobip uses status groups to categorize delivery outcomes:
| Group ID | Group Name | Description |
|---|
| 1 | PENDING | Message is being processed |
| 2 | UNDELIVERABLE | Message could not be delivered |
| 3 | DELIVERED | Message was delivered successfully |
| 4 | EXPIRED | Message expired before delivery |
| 5 | REJECTED | Message was rejected by carrier |
Common Status Codes
Delivered (Group 3)
| ID | Name | Description |
|---|
| 5 | DELIVERED_TO_HANDSET | Delivered to recipient’s phone |
| 6 | DELIVERED_TO_OPERATOR | Delivered to carrier (no handset confirmation) |
Undeliverable (Group 2)
| ID | Name | Description |
|---|
| 7 | REJECTED_ABSENT_SUBSCRIBER | Recipient not available |
| 9 | REJECTED_SYSTEM_ERROR | System error |
| 14 | REJECTED_OPERATOR | Rejected by carrier |
| 15 | REJECTED_DUPLICATE | Duplicate message |
Rejected (Group 5)
| ID | Name | Description |
|---|
| 51 | REJECTED_SPAM | Message flagged as spam |
| 52 | REJECTED_DESTINATION | Invalid destination |
Receiving Alerts
Instead of polling for status updates, you can receive real-time alerts in Discord:
Alert Types
When delivery failures occur, you can receive alerts via Discord:
| Alert Type | Trigger |
|---|
| Delivery Failure | Message status is UNDELIVERABLE or REJECTED |
| Spam Complaint | Message flagged as spam (status 51) |
| Opt-Out | Recipient replied STOP |
See Discord Alerts for configuration details.
Response
Your webhook endpoint should return a 200 OK response:
If the webhook returns an error status, Infobip may retry the request. Ensure your endpoint is idempotent.