Overview
The Kitchenhub API includes webhooks for incoming orders and store notifications. In order for your service to receive webhooks from Kitchenhub, set your webhook URL and rules via webhook API. It is also possible to set up multiple webhooks if you need them.
Type of webhook notifications
The following types of notification are supported: Order, MenuIntegrationStatus, IntegrationAccount, IntegrationAccountOnlineStatus, Delivery, Cook.
If you need to get real-time order notifications and update its status you have to get Order notification.
You can manage what type of orders you want to get and in which statuses by managing the setting of a webhook via webhook API. For example, you can use it, if you need to get orders only in new status and only if they are for delivery, but not for pickup.
You can also get other types of notifications when stores are going offline on the provider side, integration account is deactivated or menu integration status is changed.
Order notification
Event type is Order.
Event status may take one of the following values: OrderCreated, OrderUpdated.
The section Ordercontains the order data.
Example
{
"version":"2.0.0",
"event_data":{
"event_type":"Order",
"status":"OrderUpdated"
},
"order":{
"order":{
"id":6316634709688320,
"external_id":"99fc40a4-fa10-4703-9cfc-230c3aa5b287",
"number":"86f0bbdf",
"daily_number":11,
"type":"delivery",
"status":"cancelled",
"notes":null,
"paid":true,
"asap":true,
"add_disposable_items":false,
"prep_time_minutes":null,
"table_number":null,
"cancelled_by":"not accepted"
},
"provider":{
"id":"doordash_pos",
"name":"doordash_pos",
"merchant_id":"0ba73df4-bd12-421a-8e51-ef64c7350268",
"store_id":null
},
"store":{
"id":"e6f5206e-6939-4b3d-82c4-0e7bde09c4e8",
"name":"Nikki's store",
"partner_store_id":null
},
"customer":{
"name":"Test Customer",
"email":null,
"phone_number":"8552228111",
"phone_code":null
},
"items":[
{
"id":"3082240d-26ff-4462-94d4-bbfccdf42b52",
"partner_id":"3082240d-26ff-4462-94d4-bbfccdf42b52",
"name":"Test Item1",
"quantity":1,
"price":"2.0",
"base_price":"2.0",
"instructions":"Item for TEST",
"is_alcohol":false,
"options":[
{
"id":"c4949f63-a157-4bd0-9f84-f776d9dba390",
"partner_id":"c4949f63-a157-4bd0-9f84-f776d9dba390",
"name":"Test option1",
"quantity":1,
"price":"0.0",
"base_price":"0.0",
"modifier_name":"Test modifier1",
"options":[]
}
]
}
],
"delivery":{
"type":"provider",
"status":null,
"notes":null,
"address":{
"country":null,
"street":null,
"city":null,
"state":null,
"zipcode":null,
"unit_number":null,
"latitude":null,
"longitude":null
},
"full_address":null,
"courier":{
"name":null,
"photo_url":null,
"phone_number":null,
"status":"pending"
},
"service":null,
"cancellation_reason":null
},
"payment":{
"method":"ONLINE"
},
"charges":{
"subtotal":"2.0",
"tax":"0.17",
"tax_payout":"0.17",
"restaurant_tip_amount":"0.0",
"adjustment":null,
"tips":"0.0",
"discount":"0.0",
"total":"2.17",
"delivery_fee":null,
"service_fee":null,
"processing_fee":null,
"commission":null,
"payout":null,
"other_fee":{}
},
"timestamps":{
"placed_at":"2025-04-22T13:12:18.031201Z",
"created_at":"2025-04-22T13:12:18.589083Z",
"pickup_at":"2025-04-22T13:19:53Z",
"accepted_at":null,
"cancelled_at":"2025-04-22T13:18:02.289876Z",
"completed_at":null,
"delivery_at":null,
"scheduled_for":null
},
"location":{
"id":"e2634686-7717-41b7-b545-cb40da3a6c04",
"partner_location_id":null,
"name":"Test Location1",
"street":"100 N Centre Ave",
"city":"Rockville Centre",
"state":"NY",
"zipcode":"11570",
"lat":null,
"lon":null
}
}
}Menu integration status notification
Webhook type is MenuIntegrationStatus.
Event name may have only value MenuIntegrationStatusUpdated
The field menu_integration_status_data.status may take one of the following values: waiting, in_progress, completed, failed.
If the value of menu_integration_status_data.status is failedthen the field failed_reason will contain the reason description.
Example
{
"event_data":{
"webhook_type":"MenuIntegrationStatus",
"event_name":"MenuIntegrationStatusUpdated",
"version":1
},
"restaurant_data":{
"restaurant_id":"2b1561e5-74d8-49b4-9f09-c89f4f3f11f4",
"proxy_restaurant_id":"4beb760c-9bf9-4938-9acf-94f515785397",
"partner_store_id":null
},
"menu_integration_status_data":{
"partner_menu_id":"2b1561e5-74d8-49b4-9f09-c89f4f3f11f4",
"menu_name":"Test Menu",
"provider_id":"foodhub",
"status":"completed",
"failed_reason":null
}
}Integration account notification
Webhook type is IntegrationAccount.
Event name may have only value AccountDeactivated.
Example
{
"event_data":{
"webhook_type":"IntegrationAccount",
"event_name":"AccountDeactivated",
"version":1
},
"restaurant_data":{
"restaurant_id":"74659e82-ae12-4bba-b1e0-cb7124a2d100",
"proxy_restaurant_id":"3f7ac076-089d-4d00-97fa-bb3cd7640200",
"partner_store_id":null
},
"integration_account_data":{
"connection_status_comment":"INVALID_CREDENTIALS",
"provider_id":"doordash",
"provider_store_id":"111",
"connection_status":"disabled",
"account_id":"81673c1dd9e840ed99e82464ce4a00e2",
"dashboard_url":null
}
}Integration account online status notification
Webhook type is IntegrationAccountOnlineStatus.
Event name may have only value AccountOnlineStatusChanged
Example
{
"event_data":{
"webhook_type":"IntegrationAccountOnlineStatus",
"event_name":"AccountOnlineStatusChanged",
"version":1
},
"restaurant_data":{
"restaurant_id":"acdf0ea1-3c42-4dae-aecf-12ad3a7d3000",
"proxy_restaurant_id":"723122c1-1c73-4433-a49e-ab1f452d8000",
"partner_store_id":null
},
"online_status_data":{
"online_status":"offline",
"account_id":"21229afe5048488cb09c105bac269000",
"provider_id":"ubereats",
"offline_reason":"The system paused the provider for 24 hours after 2 orders were expired or cancelled by customer in location Printing service test location.",
"pause_duration_seconds":86400
}
}Delivery notification
Webhook type is Delivery .
Event name may take one of the following values: DeliveryCreated, DeliveryUpdated, QuoteCreated.
Example
{
"event_data":{
"webhook_type":"Delivery",
"event_name":"DeliveryUpdated",
"version":1
},
"restaurant_data":{
"restaurant_id":"ea5f5110-5455-4b35-9000-e12e994ad000",
"proxy_restaurant_id":"05594593-4626-4800-a1cf-3d08d8c93000",
"partner_store_id":"123"
},
"delivery_data":{
"id":123123,
"order_id":"cart-01",
"order_number":null,
"order_external_id":null,
"scheduled_order":false,
"delivery_order_id":"4a20d80e05944a8eaa21fa2558e31000",
"cancellation_reason":"store_closed",
"pickup_info":{
"restaurant_name":"Test Restaurant",
"restaurant_address":"368 E Campbell Ave, Campbell, California 95008",
"pickup_datetime":"2025-11-18T18:26:25.669000+00:00",
"pickup_notes":null,
"store_name":"Test Restaurant",
"store_address":"368 E Campbell Ave, Campbell, California 95008",
"estimated_pickup_at":null
},
"customer_info":{
"first_name":"Joe",
"last_name":"Doe",
"phone_number":"000111000",
"email":null
},
"drop_off_info":{
"drop_off_address":"368E Campbell Ave, Campbell, CA, 95008, USA",
"drop_off_datetime":null,
"drop_off_notes":"Dropoff notes",
"estimated_dropoff_at":null
},
"charges":{
"total":10,
"delivery_fee":6.25,
"delivery_tips":100,
"subtotal":null
},
"status":"cancelled",
"provider_id":null,
"courier_info":{
"id":null,
"name":"",
"phone_number":null,
"phone_code":null,
"photo_url":null,
"vehicle_type":null
},
"delivery_type":"restaurant",
"tracking_url":null,
"created_at":"2025-11-18T18:16:38.907966",
"delivered_at":null,
"canceled_at":"2025-11-18T18:54:30.040889",
"accepted_at":null,
"is_mock_delivery":false,
"items":[
{
"name":"Test item1",
"quantity":1,
"price":"9",
"is_alcohol":false
}
],
"store_id":"ea5f5110-5455-4b35-9000-e12e994ad000",
"virtual_brand_company_id":"Test Company",
"delivery_provider_id":"doordash_drive",
"delivery_at":null
}
}Cook notification
Webhook type is Cook.
Event name may have only value OrderCook.
Example
{
"event_data":{
"webhook_type":"Cook",
"event_name":"OrderCook",
"version":1
},
"restaurant_data":{
"restaurant_id":"adf7a8e2-50d9-4a74-bd81-969e86870000",
"proxy_restaurant_id":"9ab8cc76-367a-429f-9a7e-8504eab95000",
"partner_store_id":null
},
"cook_data":{
"order_id":123123,
"distance":500.0,
"order_number":"333444",
"provider_id":"doordash_pos"
}
}