Order webhook urls can be configured in our portal under the Business > Webhooks > Order section.
Webhooks are triggered whenever Order Status changes.
Property | Type | Provided | Description |
---|---|---|---|
orderId | string | true | Order Id created in our system. |
storeExternalId | string | true | Unique Id of the pickup location generated in your system and configured in our system. |
orderExternalId | string | true | Unique Id of the order generated in your system and configured in our system. Can be configured to be non-unique. |
groupId | string | false | Group ID allows you to group a number of orders together. It further helps in providing a combined post-purchase experience for these orders. |
tips | decimal | true | Tip amount for driver in major units as decimals. E.g; 9.00 .In case of US Dollars above value will be 9.00 cents or $9.00 |
orderValue | decimal | true | The value of the order in major units as decimals. E.g; 101.00 .In case of US Dollars above value will be 101.00 cents or $101.00 |
pickupTime | Time Window | true | Time Window in which the package will be ready to be picked up. null defaults to ASAP. |
dropoffTime | Time Window | true | Time Window in which the package must be delivered by.null defaults to ASAP. |
deliveryContact | Contact | true | Customer contact details. |
deliveryAddress | Address | true | Delivery address details. |
packages | Package | true | Package details. |
isSpirit | bool | true | Checks whether order contains Spirit as true or false . |
isBeerOrWine | bool | true | Checks whether order contains Beer or Wine as true or false . |
isTobacco | bool | true | Checks whether order contains Tobacco as true or false . |
isFragile | bool | true | Checks whether order items is Fragile or not as true or false . |
isRx | bool | true | Checks whether order items is Rx or not as true or false . |
hasRefrigeratedItems | bool | true | Checks whether order items are Refrigerated or not as true or false . |
hasPerishableItems | bool | true | Checks whether order items are Perishable or not as true or false . |
notifications * | Notification | true | Recipients for order status update notifications. |
estimatedPickupTime | integer | true | Provider Estimated Pickup Start Time. Unix time in milliseconds e.g., 1500616800000 . |
estimatedPickupTimeEnds | integer | true | Provider Estimated Pickup End Time. Unix time in milliseconds e.g., 1500616800000 . |
estimatedDeliveryTime | integer | true | Provider Estimate Delivery Start Time. Unix time in milliseconds e.g., 1500616800000 . |
estimatedDeliveryTimeEnds | integer | true | Provider Estimate Delivery End Time. Unix time in milliseconds e.g., 1500616800000 . |
labelLink * | string | true | Label link that contains the label provided by DS or by the provider. |
labels | Array of Label | true | Label details for the order. This attribute should only be used in case where Labels module is not subscribed. Otherwise see labelLink. |
provider | string | true | Providers name. This field will only available after Order Dispatched status. |
amount | integer | true | Estimated amount that the provider will charge. The amount in minor units without decimals. E.g; 1295 .In case of US Dollars above value will be 1295 cents or $12.95 |
currencyCode | string | true | ISO 4217 alphabetical code, e.g. USD . |
brandExternalId | string | true | Unique Id of the brand generated in your system and configured in our system. |
timeZone | string | true | Timezone of the pickup location. |
pickupContact | Contact | true | Contact Details of the pickup location. |
pickupAddress | Address | true | Address of the pickup location. |
pickupTime | Time Window | true | Order pickup time. |
status | string | true | Order Statuses e.g., ORDER_DISPATCH . |
tenantId | string | true | Unique Id to identify each tenant / business. |
deliveryInstructions | string | true | Delivery instructions for drop-off. |
lastUpdatedAt | string | true | updated date and time of order in UTC format. |
createdAt | string | true | Create date and time of order in UTC format. |
signature | Signature | true | Signature requirement for the delivery. |
driver | Driver | true | Courier details associated to the delivery. Available if provided by the Provider, else null .Generally this information is available after Order Assigned status in case of Delivery Orders. In case of Pickup Orders if Customer has delegated pickup to someone else. The same field is repurposed to store the information of that Pickup Person. |
vehicle | Vehicle | true | Vehicle details associated with the delivery. Available if provided by the Provider, else null .In case of Pickup Orders it will contain vehicle information of the Customer. |
attachments | array of File | true | Array of files associated with the delivery. Available if provided by the Provider, else null .This field can contain Proof of Pickup , Proof of Delivery or Signature images. This information will be available at various status of the lifecycle of the order. Eg. Proof of Delivery will always be available with Order Delivered webhook. |
lastLocation | Last Location Details | true | Last geo-coordinates of the delivery. Available if provided by the provider, else null . |
type | string | false | Order type selected/given for the order (delivery /in-store-pickup / /shipping ). |
serviceType | string | true | Providers type chosen for the order. |
serviceId | string | true | Providers Id chosen for the order. |
shipments | array of Shipment | false | In case of shipping order, array of shipment details. |
itemList | array of Item - Order | true | Array of items in the order. Dimension and weight details of the products help in orchestrating the best provider. Details offer improved post-purchase experiences. |
alternateLocation | Alternate Location | false | Alternate location details in case order is to be delivered to alternate location. |
batchId | string | false | Unique id generated by DS system for the batch. |
batchSequence | integer | false | Condition number in batch rule which this order satisfied. |
hostedTrackingUrl * | string | false | If you are using the hosted tracking feature then this key will contain the link for hosted tracking url for the specific order. |
customerWebflowUrl * | string | false | If you are using the pickup webflow feature this key will contain the link for the specific order. |
trackingUrl | string | true | Order tracking URL given by provider. If you have enabled the Live Tracking Page ( Paid Feature ) that will be sent instead of provider's tracking Url. |
isSelfHealed | boolean | false | If the already dispatched order is processed again due to an exception. It's notified using this flag. |
feedback | Object | false | Feedback shared by the Customer for the respective order. Feedback can be added using our Post Purchase modules like Live Tracking , Hosted Tracking or Pickup Webflow. |
providerBatch | Provider Batch | false | Providers optimising deliveries based on routes may batch orders together. This object will contain the IDs to help identify the orders that were batched by the Provider. |
webhookType | string | true | Type of the webhook update. It can be one of the followingstatus : To inform about the status change,information : Intermediary updates for unnormalized lifecycle of the provider ,location : Location updates from the provider. |
subStatus | string | false | Sub-statuses give information about sub-flows which might happen for certain statuses. E.g. In case of ORDER_UNDELIVERABLE, you might receive RETURN_STARTED, RETURN_AT_LOCATION or RETURN_COMPLETED which signifies the Return to Store sub-flow that happens when Order reaches to Undeliverable status. |
eventReason | Event Reason | false | Event Reason provided by the provider |
exceptionDetails | Exception Details | false | Exception details for the Retries of an order configured in Exception Management. |
returnStoreId | string | true | Unique Id of the pickup location generated in your system and configured in our system. |
undeliverableOrderReturnLocation | Undeliverable Order Return Location | true | Return Location for Undeliverable Orders, so that driver can take the package at this Location, if the Order was Undeliverable. |
deliveryDistance | decimal | true | Distance in a straight line from Pickup Location to Delivery Address (miles). |
drivingDistance | decimal | false | Estimated driving distance from Pickup Location to Delivery Address (miles). This information becomes available after the Place Order response is sent. |
Keys marked with * are subscription-based.
{
"event": "event.courier_update",
"note": "Processed by Delivery Solutions",
"status": "ORDER_UNDELIVERABLE",
"receivedAt": "June 23rd 2022, 11:41:16 pm",
"trackingNumber": "del_fGVo7rZjTfiTYWluoLXcpA",
"provider": "Point Pickup",
"orderId": "62b53cfbc85b10d7ffe3882f",
"orderExternalId": "24June0001",
"groupId": "100405",
"tenantId": "trackers_business",
"statusUser": "Delivery Solutions",
"orderAttributes": {},
"storeExternalId": "Postmates_Store",
"attachments": [],
"driver": {
"name": "Elena N. driver",
"phone": "+17204667578",
"photo": "",
"driverExternalId": "",
"driverId": "",
"orgUnit": ""
},
"vehicle": {
"type": "car/taxi",
"color": "",
"number": "",
"vehicleExternalId": "",
"vehicleId": ""
},
"lastLocation": {
"updatedAt": "2022-06-24T04:41:09.330Z",
"longitude": -118.44801605583696,
"latitude": 34.21976775539418
},
"amount": 600,
"trackingUrl": "https://s.dl-s.co/hcl3p6RRzW4",
"providerTrackingUrl": "https://www.ubereats.com/orders/7c6568ee-b663-4df8-9361-696ea0b5dca4",
"customerWebflowUrl": "",
"estimatedPickupTime": 1656045035000,
"estimatedPickupTimeByZone": "June 23rd 2022, 11:44 pm CDT",
"estimatedDeliveryTime": 1656059435000,
"estimatedDeliveryTimeByZone": "June 23rd 2022, 11:52 pm CDT",
"pickupInstructions": "store pickupInstructions",
"deliveryInstructions": null,
"deliveryContact": {
"name": "Mei Wan",
"phone": "+1 201-555-1023",
"customerId": "",
"email": "",
"notifySms": true,
"notifyEmail": true
},
"deliveryAddress": {
"street": "8849 North Sam Houston Parkway West",
"street2": "",
"apartmentNumber": "",
"city": "Houston",
"state": "TX",
"zipcode": "77064",
"country": "US",
"latitude": 29.9259823,
"longitude": -95.5523879
},
"pickUpAddress": {
"street": "8849 North Sam Houston Parkway West",
"street2": "",
"secondary": "",
"city": "Houston",
"zipcode": "77064",
"country": "US",
"state": "TX",
"latitude": 29.9259823,
"longitude": -95.5523879
},
"hostedTrackingUrl": "https://s.dl-s.co/yMM_ftdtEsF",
"errors": [],
"estimatedPickupTimeStarts": null,
"estimatedPickupTimeEnds": 1656045999000,
"estimatedDeliveryTimeStarts": null,
"estimatedDeliveryTimeEnds": 1656048222000,
"labelLink": "https://sandbox.api.deliverysolutions.co/api/v2/label?orderId=62b53cfbc85b10d7ffe3882f&token=NjJiNTNjZmJjODViMTBkN2ZmZTM4ODJm",
"timeZone": "America/Chicago",
"receivedAtEpoch": 1656045676018,
"currency": "cents",
"currencyCode": "USD",
"alternateLocation": null,
"type": "delivery",
"serviceType": "Delivery",
"isTipsPosted": false,
"tips": null,
"fee": null,
"proposedProviders": [],
"feedback": null,
"clonedFrom": "62b4adcdc85b10d7ffdd82be",
"serviceId": "delivery",
"pickupTime": {
"startsAt": 1656044855530
},
"dropoffTime": {
"endsAt": 1656044915530
},
"isSelfHealed": false,
"providerBatch": {
"batchId": "62b46cfbc12b18e7bae1986f"
},
"subStatus": "RETURN_AT_LOCATION",
"eventReason": {
"code": "DRIVER_REFUSED",
"title": "Driver refused to pickup the order",
"note": "CD-011 - Driver: Refused Order",
"status": "ORDER_UNDELIVERABLE",
"subStatus": "RETURN_AT_LOCATION",
"updatedAtEpoch": 1666817167059
},
"exceptionDetails": {
"lastTriggered": "preDispatch",
"preDispatch": {
"exceptionType": "phone-number-failure"
}
},
"undeliverableOrderReturnLocation": {
"address": {
"street": "502 Park Avenue",
"street2": "",
"secondary": "",
"city": "New York",
"zipcode": "10022",
"country": "US",
"state": "NY",
"latitude": 40.76321409999999,
"longitude": -73.9698963
},
"contact": {
"name": "John Smith",
"phone": "+1 201-555-0123"
},
"name": "WareHouse 301",
"pickupInstructions": "Valid driver’s license or government issued photo ID is required"
},
"returnStoreId": "301",
"deliveryDistance": 2,
"drivingDistance": 3
}