FAQ

What is a channel?

Channels are online stores that allow customers to place orders. They are connected to Deliverect and allow for the transmission of orders.

What is the purpose of a channel link ID?

A channel link ID is unique to a channel. When building an integration to send orders to a customer location in Deliverect, we provide you with a test channel in our staging environment. Reference your test channel by that unique ID to form part of the dispatch delivery order endpoint.

How do I retrieve the channel link Id?

We send the channel link ID via the Channel Registration webhook which is called when the channel is registered

The external location ID (locationId) is also provided. This is the unique ID of the customer on your platform.

What is the purpose of a Scope?

A Channel Scope or {{channelName}} is provided for ordering integrations. The scope will be used in the [Create / Cancel Order]() endpoint. The scope will remain valid unless revoked and when provided should be hard coded in an integration.

How do we give Deliverect our webhook URLs?

When a merchant registers your channel on a location, Deliverect calls your Channel Registration webhook with:

  • status: register, active or inactive
  • channelLinkId
  • locationId
  • channelLocationId: your own ID for that store
  • channelLinkName

Store the channelLinkId: it identifies the store in every order you create and in every webhook Deliverect sends you. In your response to the register event, return the URLs you support: statusUpdateURL, menuUpdateURL, snoozeUnsnoozeURL, busyModeURL, updatePrepTimeURL, courierUpdateURL, and so on. Deliverect only sends webhooks to the URLs you return, so any feature without a URL won't work for that store.

How do we verify that a webhook really came from Deliverect?

Every webhook includes an X-Server-Authorization-HMAC-SHA256 header. It is an HMAC-SHA256 signature of the raw request body. Compute the same signature with your secret and reject the request if they don't match.

  • Staging: no secret is issued. Use the channelLinkId from the payload as the secret.
  • Production: Deliverect issues a dedicated secret for your integration when you go live.

This secret only covers your channel webhooks.

We got a 201, but the order never appeared in Deliverect. Why?

Deliverect processes orders asynchronously. A 201 means the request was received, not that the order was created. The most common reason an order then never appears is that its channelOrderId was already used: channelOrderId must be unique and can't be reused within 48 hours after pickup, across all accounts. A repeated ID is treated as a duplicate and dropped silently, because the 201 has already been returned.

Use a globally unique ID for channelOrderId, for example a UUID or your internal order ID.

How do we know the store actually accepted the order?

Deliverect sends order status updates to your statusUpdateURL:

  • 20 Accepted, or any higher operational status such as 50 Preparing, confirms the POS or store has the order.
  • 100 or higher (e.g. 110 Cancelled, 120 Failed) means the order won't be processed. Treat it as not fulfilled and refund the customer if needed.

Some POS systems accept orders manually, so 20 Accepted can take a few minutes.

Should our menu webhook respond synchronously or asynchronously?
  • Synchronous (default): process the menu and respond with HTTP 200 and {"success": true}.
  • Asynchronous: respond 200 straight away, then POST ONLINE or FAILED to the callback URL in the payload. This must happen within 30 minutes of the webhook. Only use async if your integration is set up for it, and make sure your menuUpdateURL is registered.

Merchants expect menu changes to appear straight away. Process removed or changed items quickly, because orders for items that no longer exist will fail at the POS.

Why aren't we receiving snooze or busy mode webhooks?
  • Check two things:
    1. You returned the URLs. snoozeUnsnoozeURL and busyModeURL must be in your registration response (or set on the channel link).
    2. A menu has been published to your channel. Snoozes only go to channels where a menu has been published
  • Snoozes apply to the product across all of the store's menus and channels. To hide an item on your channel only, the merchant has to change that item's availability (change to Disabled) and republish the menu.

Did this page help you?