Home / Help Center / pos-app-saloon-spa / saloon / Appointments
📅 saloon

Appointments

Appointments is the day-to-day booking board for your salon or spa — book a customer against a service and (optionally) a specific staff member, track the visit through a Booked → Confirmed → In Progress → Done status flow, and hand it off to billing once the service is complete.

📍 Menu path: Saloon & Spa → Appointments
👤 Who uses it: All roles with the Billing feature enabled

Overview

Every appointment has a required Customer Name, Service and Date/Time; Staff/Stylist, Duration, Amount and Notes are optional. Duration and Amount auto-fill from the selected service but can be overridden per booking.

If you pick a Staff/Stylist from the dropdown (populated from your Staff list), the server checks for a double-booking — an overlapping time slot for that same staff member — and rejects the booking with a clear conflict message naming the existing appointment. If no staff list exists yet, you can instead free-type a Stylist name, which skips conflict checking entirely.

Appointments move through five statuses: BOOKED → CONFIRMED → IN_PROGRESS → DONE, plus CANCELLED. The list shows a "→ Next Status" button for the next stage; once DONE, an appointment with no linked sale yet shows a green "Checkout →" button instead.

The date filter defaults to today; use the status pills (All/Booked/Confirmed/In Progress/Done/Cancelled) to narrow the list further. Clicking any appointment opens a detail panel on the right with full details, that customer's visit history (their other past appointments), a WhatsApp confirmation button and Delete.

"Tomorrow's Reminders" is a toggle panel that loads every non-cancelled appointment booked for tomorrow and gives you a one-tap WhatsApp reminder message per customer.

Before You Start

Step-by-Step Guide

1 Book a new appointment

  1. Open Saloon & Spa → Appointments and click "+ New".
  2. Enter Customer Name (required) and, ideally, Customer Phone — a phone number is what enables the WhatsApp confirmation/reminder buttons later.
  3. Select a Service — this auto-fills Duration and Amount from that service's configured values (both remain editable).
  4. Pick a Stylist/Staff from the dropdown (checks for conflicts) or, if your Staff list is empty, type a stylist name directly (no conflict check).
  5. Adjust Date, Time, Duration, Amount and Notes as needed, then click "Book Appointment".
  6. If the customer has a phone number, a WhatsApp confirmation message opens automatically in a new tab after a successful booking.

2 Handle a double-booking conflict

  1. If the chosen staff member already has an overlapping appointment at that date/time, saving fails with an error naming the conflicting customer and time.
  2. Either pick a different time/staff member, or — if you are intentionally double-booking (e.g. two chairs, same stylist covering both) — there is no override toggle in this UI; you must choose a different staff member or time slot.

3 Move an appointment through its status stages

  1. Click the "→ Confirmed" / "→ In Progress" / "→ Done" button on an appointment row to advance it one stage at a time.
  2. Only appointments not already at DONE or CANCELLED show a next-stage button.

4 Check out a completed appointment

  1. Once an appointment reaches DONE and has not yet been billed, a green "Checkout →" button appears.
  2. Click it — this hands the appointment off to the Sales/Billing screen with the service pre-added as a line item (and the customer pre-selected if the appointment had a linked customer) and navigates you there to complete payment.
  3. Completing that sale automatically marks the appointment DONE (if not already) and links its Sale ID back to the appointment — the row then shows a "Billed" badge instead of the Checkout button.
💡 The checkout hand-off uses browser sessionStorage as a one-time relay to the billing screen — it is consumed and cleared the moment the billing screen loads, so it only works for the very next navigation to Sales.

5 Send WhatsApp reminders for tomorrow

  1. Click "Tomorrow's Reminders" to expand the panel — it lists every non-cancelled appointment already booked for tomorrow.
  2. Click WhatsApp next to any entry to open a pre-filled reminder message in WhatsApp Web/App for that customer's phone number.

6 Review a customer's visit history

  1. Click any appointment to open its detail panel; if the appointment is linked to a customer record, a "Visit History" section lists that customer's other past appointments (up to 8), each with date, service and notes.

7 Filter and delete

  1. Use the date picker to jump to any day's appointments, and the status pills to narrow further.
  2. Open an appointment's detail panel and click Delete to permanently remove it after a confirmation — there is no undo.

Every Field & Button, Explained

Field / ButtonWhat it does
Customer Name / PhoneRequired name; phone is optional but enables WhatsApp confirmation and next-day reminders.
ServiceRequired. Picking a service from the dropdown auto-fills Duration and Amount from that service's current settings — both remain editable per booking.
Stylist / StaffA dropdown of your Staff list (enables server-side conflict checking) if any staff exist, otherwise a free-text Stylist field (no conflict checking).
Date / TimeRequired. Time uses 24-hour HH:MM.
Duration (min) / AmountPre-filled from the selected service but freely editable for this specific booking.
NotesFree-text note attached to the appointment.
StatusBOOKED → CONFIRMED → IN_PROGRESS → DONE, or CANCELLED. The row's next-stage button always advances exactly one step.
Billed badgeShown once the appointment has a linked Sale ID (set automatically when checkout completes the sale).
Tomorrow's Reminders panelLists tomorrow's non-cancelled appointments with a one-tap WhatsApp reminder button per customer.

Tips & Best Practices

Troubleshooting & FAQ

I got an error saying a staff member already has an appointment at that time.
This is the built-in conflict check for staff-linked bookings — pick a different time or staff member. It only fires when a Staff/Stylist is selected from the dropdown (a real staffUserId); free-typed stylist names are not checked.
The Checkout button never showed up for a completed appointment.
Checkout only appears once status is exactly DONE and the appointment has no Sale ID yet. If you jumped straight from Booked/Confirmed to billing without advancing to Done, do that first — or if it already shows "Billed", it was already checked out.
I clicked Checkout but the billing screen opened empty / without the appointment.
The checkout hand-off is a one-time browser sessionStorage relay consumed on the very next Sales screen load. If you navigated away or reloaded before Sales picked it up, the hand-off is lost — go back to Appointments and click Checkout again.
WhatsApp did not open when I clicked the reminder/confirmation button.
This opens wa.me in a new browser tab using the customer's phone number with only non-digit characters stripped — check that the number was entered correctly and that pop-ups are not blocked for this site.
I deleted an appointment by mistake.
Deletion is immediate and permanent after the confirmation prompt — there is no undo.