Old Orders
Order Webhooks allow you to subscribe to all available order events past checkout.
Once successfully subscribed and integrated, you'll receive POST requests with an order subscription object as the payload. The event payload represents the current state of the order. No deltas are provided for more straightforward event consumption.
Integration Process
Step 1. Subscribe
- Contact your ReserveBar representative 
- Provide them with your URL/Endpoint for order event subscriptions 
- Requirements: - Must be a secure URL with valid SSL certificate 
- Must accept POST method HTTPS calls 
 
Note: You will be provided with a client secret to use for HMAC signature checks.
Step 2. Test
Use the test API to send a test webhook with mocked information. Required parameters:
- targetUrl: The endpoint where the webhook request will be sent
- secret: Key used to sign the request (signature is sent in the header)
Step 3. Receive the Webhook
Event Topics
Webhook notifications are triggered by the following order events:
- paid: Order has been successfully paid
- scheduled: Paid order is scheduled
- confirmed: Retailer has received and started processing the order
- delivered: Order is successfully delivered
- canceled: Order is canceled
Important Notes
- Webhook requests are sent to the registered API 
- Failed requests will be retried up to three times maximum 
- After three failed attempts, no new attempts will be made 
Response Requirements
- Your endpoint must quickly return a successful status code (2xx) 
- Return the success response before performing any complex logic 
- Example: Return 200 before updating your order management system 
Step 4. Best Practices
Security
- Verify data integrity using the digital signature 
- Each webhook request includes a base64-encoded X-Liquid-Hmac-256 header 
- Header is calculated using: - Your app's client secret 
- The webhook request payload 
 
Handling Missed Events
- While webhooks provide real-time order information, delivery is not guaranteed 
- Failed deliveries will be retried twice (3 total attempts) 
- Recommendations for handling delivery issues: - Use the Orders API as a backup to fetch transactional order information 
- Save order information upon receiving the first event 
- Process complete order data sent with every event (allows recovery from missed events) 
- Liquid Cloud always sends complete order data with every event, allowing you to process events even if previous ones were missed 
 
Event Processing Best Practices
- Save initial order information on first event 
- Process complete order data with each event 
- Use Orders API as backup for missed events 
- Verify payload integrity using HMAC signature 
- Return success response before complex processing 
- Implement proper error handling and logging 
- Consider implementing retry logic on your end 
- Monitor webhook performance and failures 
- Maintain proper security protocols 
- Keep endpoint documentation updated 
Order Object Properties
Order:
number
string required Order number
firstName
string required Customer first name
lastName
string required Customer last name
string required Customer email
phone
string Customer phone
birthdate
string Customer birthdate
status
string required Order status. Possible values: placed, paid, scheduled, confirmed, delivered, canceled
gift
boolean required Is order a gift?
createdAt
string required Order creation date
updatedAt
string required Order last update date
amounts
OrderAmounts required Order amounts
shippingAddress
Address required Shipping address
billingAddress
Address required Billing address
deliveryNotes
string Delivery notes
giftDetails
GiftDetails required Gift details present only if order is a gift
marketingOptIn
MarkrtingOptIn required Marketing opt-in info
paymentMethods
PaymentMethod[] required Payment methods used in the order.
shipments
Shipment[] required Shipments within the order
MarketingOptIn:
sms
boolean required Marketing opt-in for sms
boolean required Marketing opt-in for email
OrderAmounts:
tip
number required Tip amount
tax
number required Tax amount
total
number required Order total
serviceFee
number required Service fee
totalDiscounts
number required Total discounts
Address:
address1
string required Address line 1
address2
string Address line 2
city
string required Address city
state
string required Address state
postalCode
string required Address postal code
country
string required Address country
latitude
string Address latitude
GiftDetails:
message
string Gift message
recipient.phone
string Gift recipient phone
recipient.email
string Gift recipient email
recipient.firstName
string Gift recipient first name
recipient.lastName
string Gift recipient last name
PaymentMethod:
type
string required Type of payment method credit_card or gift_card
brand
string Credit card brand. (present if credit_card)
holder
string Credit card holder name. (present if credit_card)
last4
string Credit card last 4 digits. (present if credit_card)
code
string Gift card code (masked). i.e. AZ*8G (present if gift_card)
Shipment:
status
string required Shipment status. paid, scheduled, en_route, delivered, canceled
retailerName
string required Retailer name
customerPlacement
string required standard, back_order or pre_sale
scheduledFor
string Scheduled date for delivery. If the shipment is not scheduled, it's empty.
createdAt
string required Shipment creation date.
updatedAt
string required Shipment last update date.
amounts
ShipmentAmounts required Shipment amounts
deliveryMethod
DeliveryMethod required Delivery method
items
Item[] required Shipment items
ShipmentAmounts:
tax
number required Tax amount
bagFee
number required Bag fee
bottleDeposits
number required Bottle deposits amount
deliveryFee
number required Delivery/Shipping fee
total
number required Total amount
liquidDiscounts
number required Discounts from Liquid
tipShare
number required Order's tip share for this shipment if applicable
subtotal
number required Products subtotal
storeDiscounts
number required Discounts from retailer
DeliveryMethod:
type
string required Delivery method type. on_demand, shipping or pickup
deliveryDetail.deliveryRequestId
string Delivery request id
deliveryDetail.provider
string Delivery provider. i.e. DoorDash, Uber, CartWheel, etc.
pickupDetail.name
string Pickup person's name
pickupDetail.phone
string Pickup person's phone
packages
Package[] Shipped packages. Only present when deliveryMethod type is shipping
Package:
Packages are created only for shipments with shipping delivery method. Packages are created when retailer dispatches a package.
carrier
string Carrier name
trackingUrl
string Tracking URL
trackingNumber
string required Tracking number
status
string Package status.
estimateDeliveryDate
string Estimated delivery date
Items:
id
string required Order Item id
productId
string required Global Identifier for the product
quantity
number required Item quantity
price
number required Item price
amounts.tax
number required Item tax amount
amounts.total
number required Item total amount
amounts.bottleDeposits
number required Item bottle deposits amount
engraving
boolean required Item has engraving?
engravingOptions.line1
string Item engraving message
engravingOptions.line2
string Item engraving message
engravingOptions.line3
string Item engraving message
engravingOptions.line4
string Item engraving message
engravingOptions.image
string Item engraving image URL
variant.name
string required Item variant name
variant.msku
string Item merchant sku
variant.itemSize
string Item variant size
variant.volume
string Item variant volume
engravingLocation
string Product engraving location
Complete Order Schema
{
  "paymentMethods": [
    {
      "type": "string",
      "brand": "string",
      "last4": "string",
      "holder": "string",
      "code": "string"
    }
  ],
  "shipments": [
    {
      "status": "string",
      "retailerName": "string",
      "customerPlacement": "string",
      "scheduledFor": "string",
      "createdAt": "string",
      "updatedAt": "string",
      "amounts": {
        "tax": "number",
        "bagFee": "number",
        "bottleDeposits": "number",
        "deliveryFee": "number",
        "total": "number",
        "liquidDiscounts": "number",
        "tipShare": "number",
        "subtotal": "number",
        "storeDiscounts": "number"
      },
      "deliveryMethod": {
        "type": "string",
        "deliveryDetail": {
          "deliveryRequestId": "string",
          "provider": "string"
        },
        "pickupDetail": {
          "name": "string",
          "phone": "string"
        },
        "packages": [
          {
            "carrier": "string",
            "trackingUrl": "string",
            "trackingNumber": "string",
            "labelUrl": "string",
            "status": "string",
            "estimateDeliveryDate": "string"
          }
        ]
      },
      "items": [
        {
          "id": "string",
          "productId": "string",
          "price": "number",
          "quantity": "number",
          "amounts": {
            "tax": "number",
            "total": "number",
            "bottleDeposits": "number"
          },
          "variant": {
            "name": "string",
            "sku": "string",
            "itemSize": "string",
            "volume": "string"
          },
          "engraving": false,
          "engravingOptions": {
            "line1": "string",
            "line2": "string",
            "line3": "string",
            "line4": "string",
            "image": "string"
          },
          "engravingLocation": "string"
        }
      ]
    }
  ],
  "number": "string",
  "firstName": "string",
  "lastName": "string",
  "email": "string",
  "phone": "string",
  "birthdate": "1980-01-01",
  "status": "string",
  "createdAt": "string",
  "updatedAt": "string",
  "amounts": {
    "tip": "number",
    "tax": "number",
    "total": "number",
    "serviceFee": "number",
    "totalDiscounts": "number"
  },
  "gift": false,
  "shippingAddress": {
    "address1": "string",
    "address2": "string",
    "city": "string",
    "state": "string",
    "postalCode": "string",
    "country": "string",
    "latitude": "number",
    "longitude": "number"
  },
  "billingAddress": {
    "address1": "string",
    "address2": "string",
    "city": "string",
    "state": "string",
    "postalCode": "string",
    "country": "string"
  },
  "marketingOptIn": {
    "sms": false,
    "email": false
  },
  "deliveryNotes": "string",
  "giftDetails": {
    "message": "string",
    "recipient": {
      "phone": "string",
      "email": "string",
      "firstName": "string",
      "lastName": "string"
    }
  }
}Last updated

