# Booking through a mini app

Clients book on their own through a mini app: they choose a service, a specialist and a time, leave their name and phone — and the appointment appears in the [journal](https://support.watbot.org/booking/journal). The mini app is built in the builder from ready-made booking elements.

How to create a mini app, build screens and publish it is covered in the [Mini apps](https://support.watbot.org/mini-apps) section. This page covers only what relates to booking.

> [!IMPORTANT]
> A booking mini app requires a Pro subscription. The journal, the schedule and manual booking work without it — see the [What is available without Pro](https://support.watbot.org/billing/without-pro) page for details.

## What to prepare in the branch

The client sees only what can actually be booked. Before setting up the app, check that:

- the branch has [services](https://support.watbot.org/booking/catalog) with "Available for booking" turned on;
- the services have specialists selected, and those specialists have "Accepting clients" turned on;
- the specialists have a [schedule](https://support.watbot.org/booking/schedule);
- the [booking rules](https://support.watbot.org/booking/rules) are set up the way you need.

You can check the result with the "Free time" button in the schedule.

## Booking elements

In the screen builder, the elements are in the "Appointments" group.

| Element | What it shows the client |
|---|---|
| "Booking branches" | A list of branches the client chooses theirs from |
| "Booking services" | The branch's services — as a list or as cards, with photo, price and duration |
| "Booking specialists" | The specialists who provide the chosen service, and the "Any specialist" row |
| "Booking time slots" | Free time by day |
| "Booking checkout" | A summary of the appointment, fields for name, phone, email and comment, and the "Book" button |
| "My appointments" | The client's appointments: upcoming ones and, optionally, past and canceled ones |
| "Appointment card" | Details of one appointment with cancel, reschedule, rating and calendar buttons |
| "Visit rating" | Stars from 1 to 5 and a comment field after the visit |

![The "Booking services" element in the mini app builder](https://support.watbot.org/_media/en/06-booking/_images/mini-app-services.webp?v=1791781230)

Actions are performed by scenario blocks from the "Appointments" category:

| Block | What it does |
|---|---|
| "Book an appointment" | Books the client for the chosen service, specialist and time |
| "Cancel appointment" | Cancels the client's appointment if the cancellation deadline has not passed |
| "Reschedule appointment" | Moves the appointment to another free time |
| "Rate the visit" | Saves the client's rating and comment about a past visit |

## How booking is put together

The client's usual path is a chain of screens:

1. **Service.** A screen with the "Booking services" element. The chosen service is saved in a variable.
2. **Specialist.** A screen with the "Booking specialists" element. It shows those who provide the chosen service. The "Any specialist" row gives the appointment to a free specialist who has fewer appointments that day.
3. **Time.** A screen with the "Booking time slots" element. How many days to show is set in the element — but no further than the branch rules allow.
4. **Checkout.** A screen with the "Booking checkout" element. Connect the "Book" button to the "Book an appointment" block.
5. **Result.** From the "Book an appointment" block, connect the success exit to a confirmation screen, and the failure exit to a failure screen with the reason. The block puts the reason into the variable from the "Refusal reason into a variable" setting.

![The booking path on the mini app scheme: service, specialist, time, checkout, the "Book an appointment" block](https://support.watbot.org/_media/en/06-booking/_images/mini-app-scheme.webp?v=1791781230)

The "Book an appointment" block checks the time once more: if it was taken while the client was filling in the form, the appointment is not created.

The elements pass the choice to each other through variables. Suitable variables are already filled in in each element's settings — you only need to change them if you build your own scenario.

In one booking the client chooses one service. Several services per visit are booked by an administrator in the journal.

## Branch for the elements

Each booking element needs to know which branch it works with. There are two ways.

**One branch.** Choose it in the "Branch" field in the settings of the elements and the "Book an appointment" block. To avoid setting the branch in every element, open the "Shop and branch" window in the builder, choose the "Booking branch" and click "Fill in" — it will be set in all screens of the version at once.

![The "Shop and branch" window: choosing the booking branch](https://support.watbot.org/_media/en/06-booking/_images/mini-app-bind.webp?v=1791781230)

**The client chooses the branch.** If there are several branches:

1. Add a screen with the "Booking branches" element at the start of the scenario.
2. In the other booking elements and in the "Book an appointment" block, choose "The client chooses the branch" in the "Branch" field.

Settings of the "Booking branches" element:

- "Branches to show" — empty means all branches of the project;
- "Show branch icon", "Show address", "Show phone".

The list shows only branches that have at least one available service with a specialist who accepts clients.

The "My appointments", "Appointment card" and "Visit rating" elements do not need a branch: without it, they work with the client's appointments in all branches of the project.

## What the client enters when booking

The fields in the "Booking checkout" element are determined by the [branch rules](https://support.watbot.org/booking/rules):

- name — always required;
- phone — required if "Phone is required" is on;
- email — required if "Email is required" is on;
- comment — shown if "Client can leave a comment" is on.

![Booking checkout in the mini app: name, phone, email and comment](https://support.watbot.org/_media/en/06-booking/_images/client-checkout.webp?v=1791781230)

## Appointment confirmation

If "Confirm appointments automatically" is on in the rules, the appointment is confirmed immediately. If it is off, the client sees the "Awaiting confirmation" status, and an administrator confirms the appointment in the journal with the "Confirm" button.

Statuses the client sees in the app: "Awaiting confirmation", "Confirmed", "Completed", "You did not come", "Canceled by you", "Canceled".

![My appointments: statuses of the client’s appointments](https://support.watbot.org/_media/en/06-booking/_images/client-appointments.webp?v=1791781230)

The messages the client receives about the appointment are described on the [Notifications and reviews](https://support.watbot.org/booking/notifications) page.

## Cancellation and rescheduling by the client

In the "Appointment card" element, you can turn on these buttons:

- **"Cancel button"** — before cancelling, the app asks the client again. Connect the button to the "Cancel appointment" block.
- **"Reschedule button"** — connect it to a screen with the "Booking time slots" element that has the "Rescheduling" field filled in, and from there to the "Reschedule appointment" block. The services stay the same when rescheduling.

![Appointment card: the app asks again before cancelling](https://support.watbot.org/_media/en/06-booking/_images/client-cancel.webp?v=1791781230)

The client can cancel or reschedule no later than the deadline from the "Cancellation deadline, hours" rule. After that, they see a message that the deadline has passed, and the branch phone, if it is set.

![Rescheduling: choosing a new time](https://support.watbot.org/_media/en/06-booking/_images/client-reschedule.webp?v=1791781230)

## Add to calendar

The "Appointment card" element has the "“Add to calendar” button" setting. The button is shown for an upcoming appointment: iPhone adds the event from a calendar file, Android opens Google Calendar. An event added from the file has a reminder one hour before the visit.

![Upcoming appointment card with the "Add to calendar" button](https://support.watbot.org/_media/en/06-booking/_images/client-calendar.webp?v=1791781230)

## Visit rating

The client can rate a visit in two ways:

- with a star in the message asking to rate the visit — it comes after the appointment;
- in the app — with the "Rate the visit" button on the appointment card, which leads to a screen with the "Visit rating" element.

A rating from the "Visit rating" element is saved immediately; no separate block is needed for it. The client can change it in the app within a week. Those who gave 4 or 5 will see a link to the branch reviews in the app, if it is set in the notification settings.

![Visit rating: stars and a comment](https://support.watbot.org/_media/en/06-booking/_images/client-review.webp?v=1791781230)

## Open the appointment from a message

Messages about the appointment in the messenger have an "Open appointment" button under them. It opens the mini app the client booked from and passes the appointment to it: the launch parameter in the `startParam` variable starts with `appointment_`, and the appointment itself goes into the `appointmentId` variable.

To take the client straight to the card, put a condition on the `startParam` variable at the start of the scenario and lead from it to a screen with the "Appointment card" element. On a regular launch the `startParam` variable is empty.

![Appointment reminder with the "Open appointment" button](https://support.watbot.org/_media/en/06-booking/_images/client-message.webp?v=1791781230)

## Section for specialists

In the same app you can build screens for specialists: a specialist signs in with a code and sees their appointments and schedule. The elements for this are in the "For specialists" group — they are described on the [Specialist access](https://support.watbot.org/booking/masters) page.

![A specialist’s appointments for the day in the mini app](https://support.watbot.org/_media/en/06-booking/_images/client-master.webp?v=1791781230)

## If something does not work

- **"Booking is not set up: no branch selected."** The element or block has no branch. Choose it in the "Branch" field or through the "Shop and branch" window.
- **"This time is no longer available — choose another one."** The time has been taken, or it no longer fits the branch rules. The client needs to choose another time.
- **"You already have 5 upcoming appointments. Cancel one of them to book again."** One person can have no more than 5 upcoming appointments in all branches of the project.
- **"Too many bookings in a row. Please try again later."** The protection against mass bookings from one address was triggered. It does not get in the way of a regular client.
- **"An appointment can be canceled or moved no later than … h before the visit."** The cancellation deadline from the booking rules has passed. An administrator can cancel the appointment in the journal.
- **The "Booking branches" element does not show a branch.** The branch has no available service with a specialist who accepts clients, or the branch is not checked in the "Branches to show" setting.
- **"Nobody provides this service right now".** The service has no specialists selected, or they have "Accepting clients" turned off.
- **"No free time".** For the reasons, see the [Booking rules and free time](https://support.watbot.org/booking/rules) page.
