Generic Webhook
Last Updated 4/6/2023
Overview
We have many custom syncs to handle the integration with various point of sales systems. This specification details our Generic Webhook which can be made available for Third Party integrations who have the ability to send order details via a webhook.
Approach
Yellow Dog Inventory will provide a webhook URL for Third Parties to send data and configure a secondary application to read and process data captured via the webhook.
Sync Frequency
The Third Party will control the frequency at which sales are provided to Yellow Dog. Our secondary application to process will be scheduled hourly at default with additional configuration options avaialble.
Requirements
POS Partner
In order to use the Generic Webhook the following is preferred (additional options can be discussed):
Data supplied to the webhook must be the full order payload
This approach does not support Yellow Dog having to reach back to another API to get order detail
The webhook must send the payload in the body of the request
The webhook must use the POST method in the request
The webhook must have an unique ID per customer
This allows for mulit-instance support
The webhook order data must have an unique order id and a date that we can reference to pull unprocessed orders as needed
Yellow Dog
Yellow Dog will provide the following:
Webhook URL
Third Party Secret Key (used for configuring the URL)
Configuration
Our Generic Sales Webhook supports multiple orders sent in a single payload
Data
The following lists required data:
orderKeyTokenPath - path to the unique order it to be used as the OrderKey example: ‘check_id’
orderDateTokenPath - path to the date field to be referenced when pulling orders for processing example: ‘modified_date’
The following lists optional data:
ordersTokenPath - OPTIONAL - use when the order data is presented in array.
orderTokenPath - OPTIONAL - use when the order data is a single JSON Object.
orderLocationTokenPath - OPTIONAL - used to identify revenuecenter/locationid of the order - it not provided a value of 0 will be used
Note: if ordersTokenPath and orderTokenPath are blank we assume the root is in the order data itself.