Reporting Webhooks

A service is available to deliver various types of order data typically for reporting purposes

Introduction

Deliverect offer a service to route all incoming order data to a specified endpoint. Although this is typically used to feed into external reporting platforms, this isn't restricted to reporting partners only.

The data is sent in real time in a JSON format and is event based, meaning that delivery can be triggered upon specific order status e.g. delivering all new orders when they reach a status of 'Accepted'

ⓘ Reporting Service Pricing
Please note that this service has an associated cost, before this can be implemented, an agreement to accept the specific charges for receiving order data needs signed.

Order Data Types

TypeDescriptionExample Use Case
New OrderFull order containing all information available at the point of webhook deliveryBy aggregating all order data, it can inform stock management services on items sold
Status UpdateEach order preparation status change can trigger a webhook specifying the order status (see list here)In registering the timestamps of order statuses, this data can be included in BI dashboards or other reporting services to monitor order preparation efficiency
Courier UpdateWhere delivery platforms provide courier statuses or a 3rd party 'Dispatch' service is enabled, the details of the delivery progress will be sent whenever they changeAn integrated POS/KDS can display the progress of order delivery after pickup with various details e.g. pickup time, driver name etc

Order definitions

🛑 Sample Data Please refer to the link on the order model to understand the attributes to expect in the payload (as shown in examples below) please note any legacy parameters that should be ignored
▶ See Order Model

Order Statuses

See the link below for all order statuses, each of which can be applied as a triggered event;

▶ See All Order Statuses

Data Samples

{
    "_created": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
    "_updated": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
    "_id": "63********************a7",
    "account": "65********************e9",
    "channelOrderId": "T5*****17e",,
    "channelOrderDisplayId": "**17E",
    "posId": "",
    "posReceiptId": "",
    "posLocationId": "",
    "location": "65********************a4",
    "channelLink": "65********************e2",
    "status": 2,
    "statusHistory": [
      {
        "timeStamp": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
        "status": 4,
        "response": "",
        "source": 2
      },
      {
        "timeStamp": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
        "status": 1,
        "response": "",
        "source": 5
      },
      {
        "timeStamp": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
        "status": 2,
        "response": "",
        "source": 1
      }
    ],
    "packaging": {
      "includeCutlery": false
    },
    "by": "",
    "orderType": 2,
    "channel": 7,
    "pos": 10000,
    "rating": [],
    "pickupTime": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
    "deliveryTime": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
    "deliveryIsAsap": true,
    "courier": {
      "deliveryBy": ""
    },
    "courierUpdateHistory": [
      {
        "status": 81,
        "received": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
        "courier": {},
        "arrivalTime": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
        "deliveryTime": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
        "source": 5
      }
    ],
    "customer": {
      "name": "",
      "phoneNumber": "",
      "phoneAccessCode": "",
      "email": ""
    },
    "deliveryAddress": {
      "street": "1 Greenwich Street, New York, NY 10013, US",
      "postalCode": "10013",
      "area": "Manhattan",
      "city": "New York",
      "country": "US",
      "source": "1 Greenwich Street, New York, NY 10013, US, 10013, Manhattan, New York, US",
      "extraAddressInfo": "Front door has bell"
    },
    "orderIsAlreadyPaid": true,
    "taxes": [],
    "payment": {
      "amount": 11580,
      "type": 3,
      "due": 0,
      "rebate": 0
    },
    "note": "",
      "items": [
      {
        "_id": "65********************2c",
        "plu": "658",
        "name": "7UP",
        "sortOrder": 0,
        "price": 300,
        "quantity": 2,
        "productType": 1,
        "remark": "",
        "categoryInfo": {},
        "subItems": [],
        "packaging": {
          "count": 1,
          "reusable": false,
          "packedItems": 0
        },
        "productTags": [],
        "discountReferenceId": 1,
        "discountReferenceIds": [
          1
        ]
      },
      {
        "_id": "65********************2d",
        "plu": "492",
        "name": "Burger + Drink",
        "sortOrder": 0,
        "price": 1290,
        "quantity": 1,
        "productType": 1,
        "remark": "",
        "categoryInfo": {},
        "subItems": [
          {
            "_id": "64********************1h",
            "plu": "742",
            "name": "Big Burger",
            "sortOrder": 0,
            "price": 0,
            "quantity": 1,
            "productType": 1,
            "categoryInfo": {},
            "subItems": [],
            "packaging": {
              "count": 1,
              "reusable": false,
              "packedItems": 0
            },
            "productTags": []
          },
          {
            "_id": "69********************6g",
            "plu": "656",
            "name": "Cola",
            "sortOrder": 0,
            "price": 0,
            "quantity": 1,
            "productType": 1,
            "categoryInfo": {},
            "subItems": [],
            "packaging": {
              "count": 1,
              "reusable": false,
              "packedItems": 0
            },
            "productTags": []
          }
        ],
        "packaging": {
          "count": 1,
          "reusable": false,
          "packedItems": 0
        },
        "productTags": []
      }
    ],
    "decimalDigits": 2,
    "numberOfCustomers": 0,
    "channelOrderRawId": "65********************27",
    "channelOrderHistoryRawIds": [
      "64********************37",
      "63********************27"
    ],
    "serviceCharge": 0,
    "deliveryCost": 0,
    "bagFee": 0,
    "tip": 0,
    "driverTip": 0,
    "discountTotal": -936,
    "discounts": [
      {
        "type": "item_bogof",
        "provider": "restaurant",
        "name": "BOGO",
        "channelDiscountCode": "",
        "referenceId": 1,
        "value": 300,
        "amount": 300,
        "amountRestaurant": 300,
        "amountChannel": 0
      },
      {
        "type": "order_percent_off",
        "provider": "restaurant",
        "name": "PERCENTOFF",
        "channelDiscountCode": "",
        "referenceId": 2,
        "value": 4000,
        "amount": 636,
        "amountRestaurant": 636,
        "amountChannel": 0
      }
    ],
    "capacityUsages": [],
    "resolvedBy": "",
    "brandId": "65********************e8",
    "timezone": "Europe/Madrid",
    "date": 20****7
  }
}
{
    "orderId": "62********************e4",
    "status": 20,
    "timeStamp": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
    "reason": "",
    "channelOrderId": "T5*****17e",
    "location": "61********************r2",
    "isIgnoredPOSStatus": false
}
{
    "received": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
    "orderId": "62********************e4", 
    "pickupTime": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
    "courier": {
        "firstName": "",
        "lastName": "",
        "phoneNumber": "",
        "deliveryBy": "Uber Eats",
        "status": 83
    },
    "updatedOrigin": 2,
    "rawDriverUpdate": "{}",
    "location": "61********************r2"
}
{
    "received": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
    "orderId": "62********************e4",
    "pickupTime": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
    "courier": {
        "firstName": "",
        "lastName": "",
        "phoneNumber": "",
        "status": 83
    },
    "updatedOrigin": 6,
    "rawDriverUpdate": "{}",
    "deliveryTime": "YYYY-MM-DDTHH:mm:ss.SSSSSSZ",
    "location": "65********************a4",
    "deliverySystem": 10,
    "deliveryJobId": "62********************e4"
}


Setting up the webhooks

Once an agreement is signed, you can provide a webhook URL to our API support team along with the details of the intended order data and accounts where these should be installed (contact via [email protected])