Webhooks and endpoints by scenario
Use this page as a quick reference for the default webhooks your application receives and the endpoints it calls in each baseline scenario. It summarizes the flows detailed in the OFO, POS, and 3PL roadmaps so you can confirm coverage before you submit for certification.
Every application also completes the shared readiness baseline, including the Ping (ping.ping) connectivity check. Confirm the final requirements for your product with your Otter representative before you submit.
Online food ordering (OFO)
Your marketplace or ordering channel sends orders into Otter and receives menu and storefront changes.
Webhooks you receive
| Webhook | Purpose |
|---|---|
Menu Publish (menus.menu_publish) | Apply a published menu from Otter. |
Menu upsert hours (menus.upsert_hours) | Apply menu hours changes. |
Update menu entities availabilities (menus.update_menu_entities_availabilities) | Apply item and modifier availability changes. |
Order status update (orders.order_status_update) | React to order status and cancellation changes. |
Get store availability (storefront.get_store_availability) | Report whether the store can accept orders. |
Pause store (storefront.pause_store) | Stop accepting orders for the store. |
Unpause store (storefront.unpause_store) | Resume accepting orders for the store. |
Endpoints you call
| Endpoint | Purpose |
|---|---|
POST /v1/menus/publish | Report the menu publish result. |
POST /v1/menus/hours | Report the menu hours result. |
POST /v1/menus/entity/availability/bulk | Report the availability update result. |
POST /v1/orders | Send a marketplace order into Otter. |
POST /v1/orders/{orderId}/status | Advance or cancel an order. |
POST /v1/storefront/hours | Configure store hours. |
POST /v1/storefront/availability | Change whether the store can accept orders. |
See the OFO roadmap for the full sequence.
Point of sale (POS)
Your POS receives orders from Otter and is the source of truth for menus.
Webhooks you receive
| Webhook | Purpose |
|---|---|
Order creation (orders.new_order) | Ingest a new order once into the POS. |
Order status update (orders.order_status_update) | Apply status transitions to the same POS order. |
Endpoints you call
| Endpoint | Purpose |
|---|---|
POST /v1/menus | Create or update the POS-owned catalog. |
GET /v1/menus/jobs/{jobId} | Poll the menu job until it succeeds or fails. |
Publishing the catalog to targets and suspending entities are covered by the Publish menus to a target and Suspend or unsuspend entities how-tos. See the POS roadmap for the full sequence.
Third-party logistics (3PL)
Your delivery network quotes, accepts, and fulfills delivery jobs.
Webhooks you receive
| Webhook | Purpose |
|---|---|
Request delivery quotes (delivery.request_quote) | Return available delivery options. |
Accept delivery (delivery.accept) | Reserve and allocate the selected service. |
Update delivery request (delivery.update_request) | Apply supported changes to a delivery. |
Cancel delivery (delivery.cancel) | Stop a delivery job when allowed. |
Endpoints you call
| Endpoint | Purpose |
|---|---|
POST /v1/delivery/{deliveryReferenceId}/quotes | Return quote options with stable quote ids. |
POST /v1/delivery/{deliveryReferenceId}/accept | Confirm allocation with committed estimates. |
PUT /v1/delivery/{deliveryReferenceId}/status | Publish live delivery updates. |
POST /v1/delivery/{deliveryReferenceId}/update | Reply to an update request. |
POST /v1/delivery/{deliveryReferenceId}/cancel | Reply to a cancellation. |
POST /v1/delivery/callback/error | Report a failure for a webhook-triggered operation. |
See the 3PL roadmap for the full sequence.