Callbacks (WebHooks)

Now that we have described the SMS and bulk messaging campaign statuses, we can see how callbacks work. In general, callbacks are notifications that you've asked Routee to send back to you (well, in your web service).

You can check Routee Application Settings to learn how you can set the default Callback URL(s) of your application(s).

There are two type of callbacks:

SMS Callbacks

SMS callbacks are generated when the status of an SMS is changing, to inform you about the progress of your messages. They can be used either when sending one SMS or a bulk messaging campaign. Each part of a multipart SMS will generate a new payload. Your callback service will receive a POST HTTP request with the following request body:

{
   "messageId":"string",
   "smsId":"string",
   "campaignTrackingId":"string",
   "part":"number",
   "parts":"number",
   "label":"string",
   "to":"string",
   "from":"string",
   "country":"string",
   "operator":"string",
   "groups":[
      "string"
   ],
   "campaignName":"string",
   "status":{
      "name":"string",
      "reason":{
         "detailedStatus":"string",
         "description":"string"
      },
      "updatedDate":"string"
   },
   "message":"string",
   "applicationName":"string",
   "latency":"number",
   "price":"number",
   "direction":"string",
   "originatingService":"string"
}
KEYDESCRIPTION
messageIdThe trackingId of the SMS (all the parts of a multipart SMS have the same messageId).
smsIdThe unique id of each SMS part included in a message. If the message is multipart then these values will be different for each part.
campaignTrackingIdThe trackingId of the campaign (if the SMS was sent using the /SMS/campaign resource).
partThe number of the current SMS part.
partsThe total number of SMS parts.
labelA generic label used for tagging the SMS.
toThe recipient of the SMS message (in E.164 format).
fromThe senderId of the SMS message.
countryThe country of the recipient.
operatorThe operator of the recipient.
groupsAll contact groups (tags) that this contact belongs to.
campaignNameThe name of the SMS Campaign (if the SMS was part of a campaign).
statusThe full status object of the SMS message.
status.nameThe status name of the SMS message.
status.updatedDateThe date of the last status change of the SMS.
status.reasonThe reason of the status
status.reason.detailedStatusThe detailed status.
Possible values: Sent, Delivered, Undelivered, Failed, Undelivered on Handset, Unknown Number, Roaming, Call Barred, Unknown Status, Carrier Violation, Expired.
status.reason.descriptionThe description of the detailed status
messageThe message that was sent.
applicationNameThe name of the application that was used to send this message.
latencyThe overall delivery latency of the message.
priceThe cost of the SMS.
directionThe direction of the SMS.
originatingServiceThe service that sent this message.

Bulk Messaging Campaign Callback

When used in a bulk campaign, the callback will be called when the campaign has received a final status (OnCompletion) or every time a total of 10% of the campaign SMSs, changes status (OnChange). Your callback service will receive a POST HTTP request with the following request body:

{
   "trackingId":"string",
   "name":"string",
   "totalRecipients":"number",
   "campaignStatus":"string",
   "messageStatuses":{
      "string":"number"
   },
   "callbackInfo":{
      "url":"string",
      "strategy":"string"
   }
}
KEYDESCRIPTION
trackingIdThe trackingId of the campaign
nameThe name of the SMS campaign
totalRecipientsThe number of recipients that participate in the campaign
campaignStatusThe status of the bulk campaign (see above)
messageStatusesDefines the number of SMS per message status. Either Queued, Sent, Failed, Unsent, Delivered or Undelivered.
callbackInfoDefines the notification callback information for the progress of the bulk send out - campaign
callbackInfo.urlThe URL that Routee will POST to, each time your bulk send out - campaign status changes to one of the following: Scheduled, Queued, Sent, Running, Finished or Failed
callbackInfo.strategyStates when the URL will be called.
Choose one of the two options:
on every status change (OnChange)
or
when a final status arrives (OnCompletion)

Callback strategy

Choose when Routee POSTs to your URL:

StrategyWhen callbacks fire
OnChangeEvery time an individual SMS changes status. For campaigns, also fires on each 10% progress milestone.
OnCompletionOnly when an SMS or campaign reaches a final status.
High volume warningOnChange on large bulk campaigns generates one request per status change per recipient. Prefer OnCompletion unless you need per-message updates.

Callback retry policy

Your endpoint must respond with HTTP 200 OK within 2 seconds. Otherwise Routee closes the connection and retries (up to 12 attempts over 24 hours).

AttemptDelay after previous try
1st30 sec
2nd1 min
3rd2 min
4th5 min
5th10 min
6th15 min
7th30 min
8th1 hour
9th2 hours
10th4 hours
11th8 hours
12th24 hours

Design your handler to be idempotent — the same event may be delivered more than once.

Secure your endpoint — Serve callbacks over HTTPS and include a hard-to-guess secret in the callback URL path or query string. Validate it on every request.