A2P 10DLC Campaign Vetting Delays: Twilio cannot approve 10DLC Campaigns ourselves, and must rely on third parties who control our connections to carriers to sign off. These external processes are creating several week delays for our customers. We continue to escalate these issues and are working to reduce delays wherever possible. Further details will be shared in the Campaign Vetting Changes article as they become available.

What are the Possible SMS and MMS Message Statuses, and What do They Mean?

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). Twilio does not charge you for failed messages.

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 usually indicate that the provider did not accept the message at all, and are therefore not charged.
For more 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.

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.

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=30010&SmsSid=SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&SmsStatus=failed&MessageStatus=failed&To=%2B1##########&MessageSid=SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&AccountSid=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&From=%2B1##########&ApiVersion=2010-04-01

SMS - Formatted Payload

"ErrorCode": "30010"
"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"
Have more questions? Submit a request
Powered by Zendesk