# Appointments

Booking screens are built from elements — services, specialists, time, checkout, my appointments. The scheme blocks do the actual work: book the client, cancel and reschedule an appointment, save a visit rating.

Common to all four blocks:

- The client's choice comes from variables set by the screen elements: `{{ serviceId }}`, `{{ staffId }}`, `{{ slot }}`, `{{ appointmentId }}`. A new block fills them in by itself — change them only if you build your own scenario.
- Each block has two exits: a successful one and a "… failed" one. The block puts the refusal reason into the variable from "Refusal reason into a variable" (`bookingError` by default) — show it on the failure screen.
- A client can cancel, reschedule and rate only their own appointments.

How to build the booking path and which elements exist for it is on the [Booking through a mini app](https://support.watbot.org/booking/mini-app) page.
