> ## Documentation Index
> Fetch the complete documentation index at: https://developer.zeckta.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Delivery Statuses

> Understand the lifecycle and delivery states of SMS messages.

Every SMS submitted through Zeckta progresses through a delivery lifecycle.

Statuses can be retrieved using the Message Status API and are reflected in campaign reports, delivery analytics, and webhook notifications.

***

## Message Lifecycle

```text theme={null}
queued
  ↓
processing
  ↓
submitted
  ↓
sent
  ↓
delivered
```

Messages may also transition into terminal states:

```text theme={null}
failed
expired
undeliverable
rejected
```

***

## Status Reference

### Internal Processing

| Status       | Description                                                                  |
| ------------ | ---------------------------------------------------------------------------- |
| `queued`     | Message has been accepted and is waiting to be processed.                    |
| `processing` | Message is currently being prepared for delivery.                            |
| `scheduled`  | Message is scheduled for future delivery and has not yet entered processing. |

***

### Gateway & Carrier Processing

| Status      | Description                                                                 |
| ----------- | --------------------------------------------------------------------------- |
| `submitted` | Message has been accepted by the messaging gateway for delivery.            |
| `buffered`  | Message is temporarily buffered by the carrier or gateway pending delivery. |
| `sent`      | Message has been successfully dispatched toward the destination network.    |

***

### Final States

| Status          | Description                                                             |
| --------------- | ----------------------------------------------------------------------- |
| `delivered`     | Delivery to the recipient handset has been confirmed.                   |
| `failed`        | Delivery failed and will not be retried automatically.                  |
| `expired`       | The carrier validity period expired before delivery could be completed. |
| `undeliverable` | The destination network or handset could not accept the message.        |
| `rejected`      | The message was rejected before delivery processing completed.          |

***

## Terminal States

The following statuses are considered final:

* `delivered`
* `failed`
* `expired`
* `undeliverable`
* `rejected`

Once a message reaches a terminal state, no further delivery updates will be generated.

***

## Checking Message Status

Retrieve the latest status using:

```http theme={null}
GET /v1/messaging/sms/messages/{messageId}
```

Example response:

```json theme={null}
{
  "success": true,
  "data": {
    "messageId": "f35f37e3-7db4-469d-a55e-17c9cbd1f681",
    "status": "delivered"
  }
}
```

***

## Webhook Events

Webhook notifications are emitted when a message reaches significant delivery milestones.

| Event                   | Associated Status |
| ----------------------- | ----------------- |
| `MESSAGE_SUBMITTED`     | `submitted`       |
| `MESSAGE_SENT`          | `sent`            |
| `MESSAGE_DELIVERED`     | `delivered`       |
| `MESSAGE_FAILED`        | `failed`          |
| `MESSAGE_UNDELIVERABLE` | `undeliverable`   |
| `MESSAGE_EXPIRED`       | `expired`         |
| `MESSAGE_REJECTED`      | `rejected`        |

The following statuses do not generate webhook events:

* `queued`
* `processing`
* `scheduled`
* `buffered`

***

<Info>
  Delivery status availability depends on carrier support, destination network capabilities, and regional regulations.
</Info>
