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:
🔧 Integration Steps
To integrate your POS with Eat App, you'll need to use two core APIs:
-
🔁 Reservation Webhook – Receives real-time reservation data from Eat App
→ View Docs -
📤 POS Open API v3 – Sends order data and updates from your POS to Eat App
→ View Docs
✅ 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.
Here is a sample payload that we can send on your webhook url:
{
restID: 'xxxxxxx', // location id from POS
reference_id: 'xxxx-xxxx-xxxx-xxxx-xxxx', // unique reservation id from Eat app
name: 'Guest name',
phone: 'Guest phone',
no_person: 2, // cover count or pax
table_no: '1', // POS table number as mapped in Eat App
reservation_date: '2025-06-10 06:20:05
status: 'seated'
}
If you want modifications in the payload, you can reach out to us
When you receive a reservation with status = "seated"
:
-
Open a table/order in your POS.
-
Store the
reference_id
in your POS metadata:"metadata": {
"eat_reservation_id": <reference_id>
}
📘 Refer to: Reservation Webhook Docs
✅ 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 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