Skip to main content

Understanding Message Delivery Status

Learn what each delivery status means and how to read it consistently across the Intercom Inbox App, the HubSpot extension, Reach (Intercom

Written by Tarek Khalil

The lifecycle of a proactive message

Every proactive message you send — SMS, WhatsApp, or Viber Business Messages (VBM) — goes through the same lifecycle:

  1. You submit the message from the UI or API.

  2. Octopods hands the message to the provider (Twilio, WhatsApp, or Viber).

  3. The provider attempts delivery to the recipient’s device.

  4. The provider reports the outcome back to Octopods.

  5. Octopods updates the status, which you can read anywhere the message is displayed.

Statuses update asynchronously — a message marked SENT a few seconds ago may already be DELIVERED if you refresh.

The six status values

Across every surface — Intercom, HubSpot, Reach (Intercom only), and the API — Octopods uses the same status vocabulary:

Status

What happened

What to do

SENT

Octopods handed the message to the provider, but no delivery confirmation has arrived yet.

Wait. Most messages move to DELIVERED within seconds.

DELIVERED

The provider confirmed delivery to the recipient’s device.

The message landed. No action needed.

READ

The recipient opened the message. WhatsApp only.

The recipient has seen it.

FAILED

The send or delivery failed. A failure reason is available.

Open the message to read the failure reason. See Troubleshooting Failed Proactive Messages.

DELETED

The recipient deleted the message after it was delivered.

Informational only.

UNKNOWN

Status is not yet available from the provider.

Retry the status check after 10–30 seconds.

Typical status transitions

Most messages follow one of these paths:

  • WhatsApp, happy path: SENTDELIVEREDREAD

  • SMS, happy path: SENTDELIVERED

  • VBM, happy path: SENTDELIVERED

  • Any channel, failure: SENTFAILED (or directly FAILED if Octopods could not hand it to the provider)

A status is considered terminal once it reaches DELIVERED, READ, FAILED, or DELETED — it won’t move from there. SENT and UNKNOWN are not terminal; keep polling until one of the terminal states arrives.

Reading status in each surface

The same status values surface differently depending on where you look.

In the Intercom Inbox App. In the Inbox App history view (View sent messages → click a row), the Delivery Status field shows an icon and a short label:

  • SENTSent

  • DELIVEREDDelivered

  • FAILEDDelivery Failed

  • The intermediate Send Attempted label appears when Octopods has accepted the send but the provider has not yet confirmed.

In HubSpot. In the HubSpot contact timeline, each proactive message is an event that shows the current status plus the timestamp of the last update. Delivery tracking is covered in full in Tracking Proactive Message Delivery in HubSpot.

In the Reach extension (Intercom). After a send, Reach shows a live delivery timeline on the confirmation screen — Queued, Sent, Delivered, and (for WhatsApp) Read. In the sent history list, each message card shows a status indicator and label for the current state.

In the API. The API surfaces status in two places:

  • Polling by ID: GET /api/v1/whatsapp/messages/{message_id} or GET /api/v1/sms/messages/{message_id}. See Checking Message Delivery Status.

  • Listing: GET /api/v1/whatsapp/messages returns each message with a message_status.message_status field. See Listing Sent Messages.

Both endpoints return the uppercase status values (SENT, DELIVERED, READ, FAILED, DELETED, UNKNOWN) exactly as described above.

When to trust a status

  • Terminal statuses are reliable. DELIVERED, READ, FAILED, and DELETED will not change.

  • SENT is a progress marker. Octopods has passed the message to the provider but does not yet know the outcome. Most messages leave this state within seconds.

  • UNKNOWN means “ask again later”. The provider hasn’t reported yet. Retry after 10–30 seconds.

Note: A DELIVERED status means the provider confirmed delivery to the device — it does not guarantee the recipient saw the message. For that signal, watch for READ (WhatsApp only).

What’s next

Did this answer your question?