# 3. Manage appointments

The \*\*Appointments\*\* tab is the heart of the daily routine: it shows the \*\*active store's\*\* agenda and is where you create, move, confirm and cancel bookings.

# Introduction

The **Appointments** tab is the heart of the daily routine: it shows the **active store's** agenda and
is where you create, move, confirm and cancel bookings.

---

# 3.1 The agenda views

Use the toolbar at the top (prev/today/next + date picker + view picker) to switch:

- **Day** — the main working view.
  - For *Per professional / service / space*: a **grid** with one column per professional/service/space
    and the hours running down. Bookings are colored bars (service color).
  - For *Per table*: a **horizontal Gantt**, one row per table, bars positioned in time.
- **Week** — overview of the 7 days; each day shows up to **50 appointments** (with a "+N more" hint
  when there are more). Clicking one opens its Details.
- **Month** — monthly calendar with per-day counts.
- **List** — a chronological list, with **pagination** and the same filters as the other views.

**Sidebar (left):** a mini-calendar to jump dates + **filters** by professional/service/space (click to
hide/show) + a service filter. Filters **persist** across views and sessions.

**On mobile:** a day strip at the top + a **filters** button.

> 📸 **`03-agenda-day.png`** — Day view (per-professional grid), full, with the filter sidebar. (Real captures in `design/screenshots/cal*.png`.)
![Agenda — Day](images/03-agenda-day.png)

> 📸 **`03-agenda-week.png`** — Week view with the filters and the "+N more" on a busy day.
![Agenda — Week](images/03-agenda-week.png)

> 📸 **`03-agenda-gantt.png`** — Day view as a Gantt (Per table), one row per table.
![Agenda — Gantt](images/03-agenda-gantt.png)

---

# 3.2 Create an appointment

1. Click **+ New booking** (or click an empty slot in the agenda — it opens prefilled with the
   date/time/column).
2. **Date and time:** the offered times respect the store hours, the staff schedule (2.8), the minimum
   lead time and conflicts. Unavailable ones appear struck through.
3. **Customer:** name + **phone and/or email** (at least one if you want the customer to get
   notifications). The customer is created/linked automatically on save.
4. **Booking details** (per agenda type):
   - *Per professional:* **service** + **professional**.
   - *Per service:* **service** (professional optional).
   - *Per space / table:* **space/table** + **party size**.
5. **Notes** (optional).
6. Save.

**Multi-service (Per professional):** add several services for the same customer; each can have a
**different professional** (or "no preference"), chained **back-to-back**. It creates one booking per
service, linked as a **group**.

**Recurring:** tick the repeat option (e.g. weekly) and the **end date**. (Multi-service bookings can't
be recurring.)

> 📸 **`03-create-appointment.png`** — Create form: customer, service, professional and the list of available times.
![Create appointment](images/03-create-appointment.png)

> 📸 **`03-multi-service.png`** — Multi-service booking with several services and professionals.
![Multi-service](images/03-multi-service.png)

> ⚠️ If you try to book outside the staff member's hours, or clashing with another booking, the form
> shows the error and **won't save** — fix the time/professional.

---

# 3.3 Appointment details and history

Click an appointment (the agenda bar, or the name in List view) to open **Details** — a read-only
screen with:

- When, service/professional (or table/space + party size), **status**, **price/payment**, the
  customer contact, notes and the **group siblings** (if multi-service).
- **Activity timeline** — created, confirmed, cancelled, reopened, rescheduled, payment received —
  with who did it ("· Customer" or "· Name (Staff)").
- **Notification history** — what was sent, when and on which channel.

From here: **Confirm / Cancel / Reopen**, **Resend confirmation**, or **Edit**.

> 📸 **`03-details.png`** — Details screen with the activity timeline and the notification history.
![Details](images/03-details.png)

---

# 3.4 Statuses and actions

- **Pending** — received, awaiting confirmation (unless the store has auto-confirm).
- **Confirmed** — by you or the customer.
- **Cancelled** — can be **reopened**.
- **Awaiting payment** — when an online payment is pending (chapter 7).

For **group** (multi-service) bookings, when confirming/cancelling you can choose to apply it just to
that one or to the **whole group**.

---

# 3.5 Move, resize and reschedule

- **Drag** a booking on the grid to change the **time**; drag to **another column** to change the
  **professional / service / space**.
- **Resize** from the edge (bottom on the grid, right on the Gantt) to change the **duration**.
- Each change asks for **confirmation** and is validated (hours, conflicts, staff schedule,
  capacity/exclusivity of spaces). If invalid, it's rejected with a message.
- On rescheduling, the customer is **notified** ("Changed") and the reminder is re-armed.

**On mobile:** press and hold ~**0.3 s** on the booking until it "lifts" (vibrates) before
dragging/resizing — so you don't move it by accident while scrolling. A quick tap opens Details.

> 📸 **`03-drag.png`** — A booking being dragged to another column/time, with the confirm modal.
![Drag](images/03-drag.png)

---

# 3.6 Tips & troubleshooting

- **"No times appear":** the day may be closed (hours or special hours), the staff member may not work
  that day, or the minimum lead/daily cap were reached.
- **"This professional can't do this service":** the member's service scope at that store doesn't
  include the service (2.7).
- **Sync to your phone:** export the agenda to your phone calendar (chapter 11).

---
**Next:** [Public booking page](04-public-page.md).