> ## Documentation Index
> Fetch the complete documentation index at: https://restoo.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Why and how to integrate your Booking Channel with Restoo.

## What is a Booking Channel integration?

A Booking Channel integration connects an external reservation platform (e.g. Google, a booking aggregator, or a custom customer-facing app) to Restoo. The Booking Channel acts on behalf of the end customer: it checks availability, creates bookings, and manages the reservation lifecycle — all via the Restoo API.

The venue manages their schedule and availability in Restoo. Your platform surfaces that availability to customers and handles the booking flow.

## Integration objectives

* **Real-time availability** — Query live availability before presenting options to the customer, so you never offer a slot that is already taken.
* **Booking conditions** — Present any applicable conditions to the customer before confirmation, including duration limits and cancellation policy terms.
* **Booking creation** — Submit reservations directly into Restoo on behalf of the customer, with full customer data.
* **Booking updates** *(when the venue allows it)* — Allow customers to modify an existing reservation.
* **Reconfirmation** *(optional)* — Restoo automatically manages reconfirmation when required by the venue. Your integration can optionally trigger it manually via the API.
* **Lifecycle tracking** *(optional)* — Stay in sync with booking status changes driven by the venue (confirmations, declines, no-shows) via webhooks.
* **Cancellation handling** — Check for cancellation fees and cancel bookings in compliance with the venue's cancellation policy.

## Venue configuration

Not every venue offers everything on that list.
[`Get Tenant Profile`](/restoo-api/tenant/get-tenant-profile) returns what this
one does: `isStandBy` says whether it is taking bookings at all, and `features`
says which operations and which fields are open to you. While a venue is in
stand-by, `features` comes back `null`.

Read the profile when you need it rather than once at start-up. A venue can
change its configuration at any moment, and a stale copy has you offering
something that was just switched off.

## Responsibilities

| Responsibility                                                                                            | Owner                |
| --------------------------------------------------------------------------------------------------------- | -------------------- |
| Availability data, shift configuration, table capacity                                                    | Restoo               |
| Booking confirmation, no-show marking, venue operations                                                   | Restoo (venue staff) |
| Customer notifications (booking confirmations, reminders, updates)                                        | Restoo               |
| Reconfirmation (contacting the customer, updating booking status)                                         | Restoo               |
| Customer acquisition, availability display, booking UI, and presenting booking conditions to the customer | Booking Channel      |
| Cancellation policy checks and booking cancellations                                                      | Booking Channel      |

## Data flow

```mermaid theme={null}
flowchart LR
    C([Customer]) --> BC[Booking Channel]

    BC -->|API calls| R[Restoo]
    R -->|Webhooks| BC
    R -->|Notifications| C

    style BC fill:#4a90d9,stroke:#2c6fad,color:#ffffff
    style R fill:#28a745,stroke:#1e7e34,color:#ffffff
    style C fill:#e9e9e9,stroke:#999999,color:#000000
```

Your platform calls Restoo to read and write booking data. If you subscribe to webhooks, Restoo will notify your platform whenever booking data changes on the venue side.

<Note>
  Restoo always sends booking notifications directly to the customer
  (confirmations, reminders, updates). Your integration should not send its own
  notifications for the same events — doing so will result in the customer
  receiving duplicate messages.
</Note>
