Skip to main content

Online Order Readiness Webhooks

Introduction

Use webhooks to receive readiness updates without polling.

To receive events, subscribe to:

  • resource: order_api
  • name: ONLINE_ORDER_READINESS

Setup

Create or update a webhook

Use Create a Webhook or Update Webhook:

PUT /o/wh/1/webhook
{
"endpointId": "my-oo-readiness-endpoint",
"url": "https://partner.example.com/webhooks/lightspeed",
"withBasicAuth": false,
"subscribeTo": [
{
"resource": "order_api",
"name": "ONLINE_ORDER_READINESS"
}
]
}

Associate business locations

Use Add a Business Location to a Webhook:

PUT /o/wh/1/webhook/{endpointId}/business-locations/{businessLocationId}

Readiness notifications are sent only for associated locations.

Delivery Behavior

  • A notification is sent when readiness state changes.
  • A notification is sent when one of the readiness inputs changes, even if status remains NOT_READY.
  • No notification is sent when the newly computed state is identical to the previous state.

Sample Payloads

READY

{
"businessLocationId": 247158188015618,
"lastUpdatedAt": "2026-03-03T10:00:00Z",
"status": "READY",
"type": "ORDER_API",
"onlineOrderingApiConfiguration": {
"enabled": true,
"orderProfileId": 789,
"staffId": 101
},
"posStatus": {
"salesPeriod": "OPENED",
"acceptingOnlineOrders": true,
"availableDevices": true
}
}

NOT_READY

{
"businessLocationId": 247158188015618,
"lastUpdatedAt": "2026-03-03T10:02:00Z",
"status": "NOT_READY",
"type": "ORDER_API",
"onlineOrderingApiConfiguration": {
"enabled": false,
"orderProfileId": null,
"staffId": null
},
"posStatus": {
"salesPeriod": "CLOSED",
"acceptingOnlineOrders": false,
"availableDevices": false
}
}

Troubleshooting

No notifications received

Check the following:

  • The webhook includes ONLINE_ORDER_READINESS on order_api in subscribeTo.
  • The business location is associated with the webhook endpoint.
  • Your endpoint is reachable and returns 2xx responses.
  • The location state actually changed.

Status is unexpectedly NOT_READY

Inspect:

  • onlineOrderingApiConfiguration.enabled
  • posStatus.salesPeriod
  • posStatus.acceptingOnlineOrders
  • posStatus.availableDevices

Best Practices

  • Treat webhooks as event signals and use the API for current-state reconciliation.
  • Process webhook deliveries idempotently.
  • Acknowledge webhook requests quickly and process asynchronously.