Delivery Notifications

Delivery Notifications
Delivery Notifications are only supported via our API and SMPP connections. We don't support delivery notifications via Jabber/XMPP or Slack.
Let me preface this by saying delivery notifications are not always a sure thing. In order for delivery notifications to work every hop along the way, from here to the end number, has to send them. Sometimes they don't. Also, sometimes you won't get a delivery notification for quite a while. It all depends on many variables from here to there. That said, they can be very nice in letting you know how successful your SMS message was. They are also asynchronous. This means that sending the message is a separate process from knowing if the message is delivered or not, which is why this is a separate web call to look for.
Breakdown of the delivery notification process:
  1. 1.
    You give us a message to send to some end number
  2. 2.
    The API call that you made to us to send the SMS message ends, in the response is an ID that we will refer to when we deliver the notification
  3. 3.
    We pass that message along to carriers
  4. 4.
    Carriers may pass to other carriers
  5. 5.
    Message gets delivered to device, or is rejected, fails, etc
  6. 6.
    A notification is passed back down the chain of carriers, one by one, with the status of the message
  7. 7.
    The notification finally makes it back to us
  8. 8.
    We grab your SMS Delivery Notification URL and, finally, pass that notification on to you via HTTP POST using the ID we gave you as a reference point
To receive delivery notifications via HTTP POST, simply set an SMS Delivery Notification URL in your My Accounts page in the user portal. Once set, you will receive notifications for all messages sent.<br>
To receive delivery notifications via SMPP, send a registered_delivery value of 1 in your submit_sm command to send the message.
The POST that you get to your server will look something like:
{
url: 'http://yoursite.com/sms/notifications',
id: '72b83667-a8f1-4c09-861f-e1ee6dd4561b',
send_status: 'delivered',
status: 'DELIVRD',
error: '000'
}
Possible send_status:
* delivered
* carrier-reject
* failed
Possible error code / status:
* 000 or (less likely) 002 / DELIVRD
* 003 / EXPIRED
* 004 / DELETED
* 005 / UNDELIV
* 007 / UNKNOWN
* 008 / REJECTD
Since all DLR information is relayed from upstream providers and differences in carrier specific response types exist in an unregulated industry, error codes will by varied. Instead of using this information, we suggest looking at the status to determine the cause of an error or send_status for high level checking.