- Sending a single SMS
- Creating an SMS campaign
Supported Delivery Statuses
| Status | Description |
|---|---|
SUBMITTED | Message accepted by Zeckta and queued for delivery. |
SENT | Message successfully submitted to the upstream carrier. |
DELIVERED | Message confirmed delivered to the recipient handset. |
FAILED | Delivery attempt failed. |
UNDELIVERABLE | Destination number could not be reached. |
EXPIRED | Message validity period expired before delivery. |
REJECTED | Message was rejected before delivery processing. |
QUEUEDPROCESSINGSCHEDULEDBUFFERED
Event Types
Each callback includes an event type representing the delivery milestone that occurred.| Event Type | Delivery Status |
|---|---|
MESSAGE_SUBMITTED | SUBMITTED |
MESSAGE_SENT | SENT |
MESSAGE_DELIVERED | DELIVERED |
MESSAGE_FAILED | FAILED |
MESSAGE_UNDELIVERABLE | UNDELIVERABLE |
MESSAGE_EXPIRED | EXPIRED |
MESSAGE_REJECTED | REJECTED |
Configuring a Callback URL
Single SMS
SMS Campaign
Example Callback Payload
Payload Fields
Event Metadata
| Field | Description |
|---|---|
eventId | Unique identifier for the callback event. |
eventType | Delivery event being reported. |
timestamp | ISO-8601 timestamp when the event occurred. |
Message Object
| Field | Description |
|---|---|
message.uuid | Unique identifier of the SMS message. |
message.src | Sender ID used for the message. |
message.dest | Recipient phone number. |
message.status | Current delivery status. |
message.segments | Number of SMS segments consumed. |
message.units | Billing units consumed. |
message.attempts | Number of delivery attempts made. |
message.cost | Final message cost, if available. |
Delivery Lifecycles
Successful Delivery
Failed Delivery
Expired Message
Rejected Message
HTTP Requirements
Your callback endpoint should:- Accept HTTP POST requests
- Return a successful
2xxresponse - Be publicly accessible
- Support HTTPS
- Process notifications idempotently
Idempotency
Callback notifications should be treated as idempotent. Although every callback contains a uniqueeventId, your application should safely handle duplicate deliveries without creating duplicate records or triggering duplicate business actions.
A common approach is to store previously processed eventId values and ignore duplicates.
Best Practices
- Validate incoming callback payloads before processing.
- Log callback deliveries for troubleshooting.
- Store delivery events for auditing and analytics.
- Process callbacks asynchronously where possible.
- Return a
2xxresponse immediately after accepting the notification. - Use the Message Status API when historical delivery data is required.
Message Status API
If you need to retrieve the latest delivery information on demand, use the Message Status API.Related Resources
Message Status API
Retrieve the latest delivery status for a message.
Delivery Statuses
Learn about the SMS delivery lifecycle and status definitions.