SUPPORT.TWILIO.COM END OF LIFE NOTICE: This site, support.twilio.com, is scheduled to go End of Life on February 27, 2024. All Twilio Support content has been migrated to help.twilio.com, where you can continue to find helpful Support articles, API docs, and Twilio blog content, and escalate your issues to our Support team. We encourage you to update your bookmarks and begin using the new site today for all your Twilio Support needs.

What are the possible SMS and MMS message statuses, and what do they mean?

Question

What are the possible SMS and MMS message statuses, and what do they mean?

 

Product

Programmable Messaging

 

Answer

Every Twilio SMS or MMS message request has a status value which describes the current state of the message. Here are the possible message statuses, and their meanings.

NOTE: If using Status Callbacks instead of the Console SMS logs or /messages GET/LIST requests, you will see slightly different message progression events. Please see the bottom of this guide for more details

 

Outbound Message Status Progression

When sending outbound messages with the REST API, this is a typical sequence of status values:

accepted (Messaging Services only) Twilio has received your request to create the message from a Messaging Service. Twilio is determining the optimal 'From' number from your service.
scheduled

(Message Scheduling only) Twilio has received your request to schedule a message for a later time/date. The message will remain scheduled until the SendAt time, at which point it will move to the queued status (or failed if there is an issue). For details see the Message Scheduling API docs and the Message Scheduling FAQ.

queued Twilio has received your request to create the message. All new messages sent from a specific Twilio phone number are created with a status of queued.
sending Twilio is in the process of sending the message. This status is usually only present for a very short time, and in most instances will not be visible in the console or logs.
sent Twilio has received a confirmation from our Super Network partner advising they have accepted the message.

 

Finalized Message Delivery Status

After a message has been sent, the following final delivery status options are possible:

sent Twilio has not received updated delivery information for your message. Typically, a sent status will be replaced by a delivered or undelivered status within seconds or minutes. Please note that US/Canada long code MMS often remain in sent status due to a lack of final delivery status updates from carriers. Once a message is older than 72 hours, receiving a further status is unlikely, although we will update the record if we receive one. Your messages will stay in sent status forever if you are sending messages using the deprecated /SMS/Message REST API Resource, which does not support delivery status updates.
delivery_unknown (Displayed in Messaging Insights) This indicates that a message has remained in the sent status for longer than 1 hour without receiving a further status update. This status is only shown in Messaging Insights; SMS records will remain in the sent status in the Message Log or /Messages API.
delivered Twilio has received confirmation of message delivery from the carrier, (and, where available, the destination handset).
undelivered Twilio has received a delivery receipt indicating that the message was not delivered. This can happen for a number of reasons including carrier content filtering, availability of the destination handset, etc.
failed The message could not be sent. This can happen for various reasons including queue overflows, account suspensions and media errors (in the case of MMS).

Notice: Twilio charges for any message delivery attempt, whether it was successful or not. Messages with the statuses sentdelivered, and undelivered, will all be reflected in your project balance.


Messages marked as failed can indicate that the API Request failed or that the provider did not accept the message. There will be an error code associated with the failed message to help you troubleshoot why the message failed. Starting from September 30th, 2024, most messages in failed status will be charged a "Failed message processing fee". See here for more details.


For further assistance, please see our article for Troubleshooting undelivered Twilio SMS messages.

 

Incoming Message Status

received An incoming message has been processed, and Twilio has delivered the message to your Twilio number.

 

WhatsApp and SMS/MMS Callback Events

WhatsApp Callback Events (In Order) SMS/MMS Callback Events (In order)
Failed Failed
Sent Sent
Delivered/Undelivered Delivered/Undelivered
Read  

 

Callback events will return with the above status values in both the SmsStatus and MessageStatus fields. Examples of an SMS and a WhatsApp callback payload can be found below:

Note: The ErrorCode field will only appear in callback events for failed or undelivered messages (such as ErrorCode=63016 ). Please ensure you are checking for this field, but not requiring it, in your callback handling.

SMS - RAW Callback Payload

ErrorCode=21408&SmsSid=SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&SmsStatus=failed&MessageStatus=failed&To=%2B1##########&MessageSid=SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&AccountSid=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&From=%2B1##########&ApiVersion=2010-04-01

SMS - Formatted Payload

"ErrorCode": "21408"
"SmsSid": "SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
"SmsStatus": "failed"
"MessageStatus": "failed"
"To": "+1##########"
"MessageSid": "SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
"AccountSid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
"From": "+1##########"
"ApiVersion": "2010-04-01"

WhatsApp - RAW Callback Payload

SmsSid=SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&SmsStatus=sent&MessageStatus=sent&ChannelToAddress=%2B1######XXXX&To=whatsapp%3A%2B1##########&ChannelPrefix=whatsapp&MessageSid=SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&AccountSid=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&StructuredMessage=true&From=whatsapp%3A%2B1##########&ApiVersion=2010-04-01&ChannelInstallSid=XEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

WhatsApp - Formatted Payload

"SmsSid": "SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
"SmsStatus": "sent"
"MessageStatus": "sent"
"ChannelToAddress": "+1######XXXX"
"To": "whatsapp:+1##########"
"ChannelPrefix": "whatsapp"
"MessageSid": "SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
"AccountSid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
"StructuredMessage": "true"
"From": "whatsapp:+1##########"
"ApiVersion": "2010-04-01"
"ChannelInstallSid": "XEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

 

Additional Information

Track Message Statuses

If you want to track the status of your outbound messages, you can use the StatusCallback parameter to get notifications back to your application when Twilio received a delivery status update. For more information, please see our article Tracking the Delivery Status of an Outbound Message.

Have more questions? Submit a request
Powered by Zendesk