Appointments

The day board, desk booking, status changes, rescheduling, deposits, and service steps.

Reception and managers run the day from /dashboard/platform/appointments. It needs canManageAppointments.

Screens

RouteWhat it does
/dashboard/platform/appointmentsDay board and booking list by stylist
/dashboard/platform/appointments/newBook at the desk
/dashboard/platform/appointments/[id]Status changes, reschedule, service steps, deposit, care notes

Book at the desk

Pick service, stylist, and location

The form lists active services and the stylists who offer them. With more than one active location, choose the location too.

Choose a time

The slot picker calls checkAvailability for the stylist and date. Slots respect weekly hours, breaks, time off, existing bookings, the service buffer, and required resources.

Choose the client

Search existing clients by name, email, or phone, or enter a new client with name, phone, and email.

Book

bookAppointment stores a service snapshot, appointment segments, and a schedule revision. Operators skip the booking policy checkbox that online clients must accept. Add notes (up to 2000 characters) before saving.

Services flagged requiresConsultation or requiresPatchTest cannot be booked online. Desk staff can book them.

Statuses

transitionAppointment moves an appointment between pending, confirmed, in_progress, completed, cancelled, and no_show. Allowed moves from the code:

  • pending to confirmed, cancelled, no_show
  • confirmed to in_progress, cancelled, no_show
  • A no-show is only accepted after the start time has passed.
  • A checked-out appointment cannot be restarted.

Cancelling or marking a no-show records the reason you give. Completion happens through checkout.

Reschedule

On the detail page, pick a new start time and give a reason. The page calls scheduleAppointmentSegments, which re-checks stylist and resource capacity for every segment and writes a new AppointmentScheduleRevision. Old revisions stay.

Service steps

Each appointment has AppointmentSegment rows of type service, processing, finishing, or cleanup. Move a step with transitionAppointmentSegment to planned, started, completed, skipped, or superseded. The detail page shows steps once there is more than one, or once the appointment is in progress.

Deposits

When a service has depositRequired, record the deposit from the detail page. processAppointmentDeposit takes the payment method (cash, credit_card, debit_card, apple_pay, google_pay), a provider code, and an idempotency key. The deposit is credited against the final checkout total.

On this page