How To Fully Integrate Eat App with your POS system

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,

  1. Automatically opening a POS ticket when a table is marked seated or occupied in Eat App.

  2. Adding a unique reservation ID to the POS ticket, which is returned on closing, to ensure accurate matching.

  3. Automatically updating the POS ticket when guests move tables in Eat App.

  4. 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: 

POS Integration auto-ticket generation flow - Frame 1 (2)

🔧 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.statusopen, 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 event update_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
    1. Array of old table ids as mapped in your POS system
    2. 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