A Step-by-Step guide to Enabling 2-Way Sync Between your POS and Eat App Using Webhooks and POS Open API (v3)
Eat App POS Integration Onboarding Guide
🏆 Goal
Achieve 100% matching of POS tickets to reservations, allowing our mutual customers to track both POS data and reservations seamlessly together.
This includes,
-
Automatically opening a POS ticket when a table is marked seated or occupied in Eat App.
-
Adding a unique reservation ID to the POS ticket, which is returned on closing, to ensure accurate matching.
-
Automatically updating the POS ticket when guests move tables in Eat App.
-
Automatically updating Eat App when table changes happen in the POS system.
Bonus: Receive and tally the bill amount for reservations whenever the guest has pre-paid for their reservation via Eat App
Expected Journey:
.jpg?width=688&height=267&name=POS%20Integration%20auto-ticket%20generation%20flow%20-%20Frame%201%20(2).jpg)
🔧 Integration Steps
To integrate your POS with Eat App, you'll need to use two core APIs:
-
🔁 Reservation Webhook – Receive real-time reservation data from Eat App and process that, to know when a reservation is seated and process it.
→ View Docs -
📤 POS Open API v3 – Webhooks to send order data and updates from your POS to Eat App
→ View Docs
NOTE: Don't forget to change the base url from https://api.eat-sandbox.co/ to https://api.eatapp.co/ once you are ready to move to a real restaurant.
Sandbox login page : https://admin.eat-sandbox.co/
✅ Step 1: Configure Reservation Webhook
For each restaurant:
-
Set up a Webhook URL to receive reservation events.
- Ensure webhook delivery is enabled in the restaurant's Eat App account.
1.1 When the guest is seated, you will receive the webhook with status = "seated"
, along with data.id
which is the unique identifier for the reservation.
Now,
-
Open a table/order in your POS.
-
Store the
data.id
(unique reservation id from Eat app) in your POS metadata:
example :
"metadata": {
"eat_reservation_id": <data.id>
}
✅ Step 2: Send POS Orders to Eat App
Use the POS Open API v3 to create and update orders linked to reservations.
Required fields:
-
table_name
(user-friendly label) -
reservation_id
-
Accurate
start_time
,end_time
-
subtotal
,tax
,discount
,total_spend
-
A unique and consistent
order_id
📘 Refer to: POS Order Fields
✅ Step 3: Keep Orders & Table Status Updated
-
Send order updates as changes occur (e.g. new items, payment info).
-
Include fields like:
-
ticket.status
→open
,closed
,cheque_dropped, voided
-
table.status
→ optional, and if your pos system supports it.
-
-
Always use the same
order_id
to when sending updated orders.
📘 Refer to: Order Updates
✅ Step 4: Handle Table Changes via Webhook
When the guest moves tables, you will receive the same webhook with an array of newly updated tables.
Now,
-
Identify the order with the unique reservation id
- Look for values in the
meta
key with eventupdate_reservation
example:
meta": {
"created_at": 1711523679.830612,
"number": 257878,
"event": "update_reservation",
"changes": {
"status": [
'confirmed', // OLD reservation status
'seated' // NEW reservation status
],
"table_ids": [
[ "10ce8760-75e8-4514-9f6f-508eace277ef"], // Eat app's ids for OLD TABLE(S)
[ "b9317712-574f-4abe-821c-593438ae1fab"] // Eat app's ids for NEW TABLE(S)
],
"service_table_ids": [
["01"], // POS's ids for OLD TABLE(S)
["02"] // POS's ids for NEW TABLE(S)
]
}
},
service_table_ids
carries 2 arrays- Array of old table ids as mapped in your POS system
- Array of new table ids as mapped in your POS system
- Update the table number(s) on the POS record accordingly
📘 Refer to: Reservation Webhook Docs
✅ Step 5: Handle Reservation Changes via Webhook
When a reservation is updated (e.g., table reassignment):
-
Listen for update events via webhook.
-
Compare
ticket_id
from the webhook to your internal state. -
If changed, update the POS order to match the reservation table changes to your equivalent ticket id, or, tickets with the same reservation id.
Use these identifiers:
-
reservation_id
-
pos_service_id
-
pos_service_table_id
-
ticket_id
📘 Refer to: Reservation Updated Event
✅ Integration Checklist
Task | Done |
---|---|
Webhook URL configured | ☐ |
Webhooks enabled on Eat App account | ☐ |
Orders opened in POS on seated event |
☐ |
eat_reservation_id stored in POS order metadata |
☐ |
POS orders sent with correct timestamps & spend | ☐ |
Unique & consistent order.id used for all updates |
☐ |
Order/table status updates from Eat App Reservations handled | ☐ |
Webhook reservation changes handled so that tables are also updated. | ☐ |
🆘 Need Help?
For questions or technical support, contact the Eat App Integrations Team on support@eatapp.co