Appointments Reference Public

Calendar & Appointments

End-user documentation for the ERPat Appointments module (spa / salon / clinic booking).

Guide version: r1 Module version: 1.0.0 Updated: 2026-07-22 Estimated time: 18 min 1 views
Daily Operations

Calendar & Appointments

The core daily workspace for the front desk. See who is booked with which provider at what time, create and edit bookings from the admin side, and move every appointment through its full life-cycle — from a fresh Pending request to a settled Completed visit. This page also covers recording the products you used or sold, rescheduling, cancelling, handling no-shows, and pulling up a customer's history.

Front desk Manager Admin
ℹ️
Where this fits This page is the admin side of Appointments. Bookings your customers make on the public site arrive here too — see the Online Booking Portal. Turning a finished visit into an invoice and a payment lives on the Checkout & Payments page.

The calendar workspace

Open Appointments from the left menu to land on the workspace. It stacks two views of the same bookings on one page: a colour-coded calendar on top and a filterable appointments list below. Most of your day happens here.

The calendar panel

The calendar shows every booking as a coloured block. The colour is the appointment's status, and each block is labelled Customer name — Service.

ControlWhat it does
Prev / Next / TodayMove the calendar back or forward, or jump straight back to today.
Month / Week / DaySwitch the view. Week is the default; Day is best for a busy single day. There is no all-day row, and the grid uses 30-minute time slots.
Click an empty day/timeOpens a new-appointment form pre-filled with the date and time you clicked — the fastest way to start a booking.
Click an existing blockOpens that appointment's read-only detail card with its life-cycle buttons.
????
Tip The calendar and the list stay in sync automatically. When you save a booking or change a status in either one, both refresh — no page reload needed.

The appointments list & status filter

Below the calendar is a table of appointments with these columns: Customer, Service, Provider, Date, Status, and an actions column (the gear/bars icon) for opening, editing, or deleting a row. A refresh button reloads the table.

Above the table are status filter checkboxes. By default the list shows the working set — the appointments you still need to act on — and hides the ones that are already done or gone:

Status filterOn by default?
PendingYes
ConfirmedYes
Checked InYes
In ProgressYes
CompletedNo
CancelledNo
No ShowNo
⚠️
"Where did my appointment go?" The list hides Completed, Cancelled and No Show by default. If a past appointment seems missing, tick those status boxes to bring them back into view.

Today's Appointments widget

You don't always need to open Appointments to see what's on. The main dashboard carries a Today's Appointments panel (with a calendar-check icon) that lists the day's bookings at a glance. Each row shows the start time, customer name, service summary, and a status chip; when the day is empty it simply reads "No appointments today."


Appointment statuses & life-cycle

Everything in Appointments is driven by the status. The status decides the calendar colour, which buttons appear on the appointment card, and what happens behind the scenes (stock, commission and loyalty on completion; entitlement release and waitlist alerts on cancellation). There are seven statuses: five along the normal path plus two off-ramps.

Pending
Awaiting confirm
Confirmed
Email sent
Checked In
Arrived
In Progress
Underway
Completed
Settled

Off-ramps from any active status: Cancelled · No Show

Status legend

The same colours are used everywhere — on the calendar block and on the chip in the list, the card, and Customer History.

Pending PendingBooking exists but is not yet confirmed — typically a fresh online booking. Amber #f0ad4e. The only next action offered is Confirm.
Confirmed ConfirmedBooking confirmed and the customer received a confirmation email. Teal #1d97a6 (brand). Can be Checked In, Completed, No Show, or Cancelled.
Checked In Checked InCustomer has arrived at the front desk. Light blue #5bc0de. Can move to Completed, No Show, or Cancelled.
In Progress In ProgressThe service is underway. Light blue #5bc0de (same as Checked In). Set via the Status dropdown on the edit form — there is no dedicated button. Can move to Completed, No Show, or Cancelled.
Completed CompletedVisit finished. Captures commission, decrements back-bar stock, and awards loyalty points — once. Green #5cb85c. Terminal; no further transition buttons. Hidden by default in the list filter.
Cancelled CancelledBooking cancelled with a reason. Releases package entitlements and notifies matching waitlist entries. Red #d9534f. Terminal; hidden by default.
No Show No ShowCustomer did not attend. Grey #777777. Terminal; excluded from availability and workforce workload; sends no email. Hidden by default.
ℹ️
Terminal means terminal Completed, Cancelled and No Show are end-states — no life-cycle buttons appear on their cards. To make changes after that point you'd edit the appointment (or, for money, use Checkout).

Status transitions (who/when)

Each transition has a button on the detail card, and each button only appears when the appointment is in a status that allows it. All of these require the appointments_update permission (admins bypass permission checks entirely).

ButtonFrom statusMoves toWho / whenSide effects
Confirm Pending Confirmed Front desk, when an online/pending request is accepted. Emails the customer a confirmation.
Check In Confirmed Checked In Front desk, when the customer arrives. None.
(Status dropdown) Confirmed / Checked In In Progress Optional, when the service actually starts. Set on the edit form's Status dropdown — there is no card button. None.
Complete Confirmed / Checked In / In Progress Completed Front desk, when the visit ends. Captures commission, decrements back-bar stock (if applicable), awards loyalty points — each exactly once.
No Show Any active status (not already Cancelled / Completed / No Show) No Show Front desk, after the grace period when the customer doesn't turn up. None; sends no email. Excluded from availability & workload.
Cancel Any active status (not already Cancelled / Completed / No Show) Cancelled Front desk / manager, when the booking is called off. Captures a reason; emails the customer; releases entitlements (unless invoiced); alerts matching waitlist entries.
Why is there no "Start" (In Progress) button on the card?

By design, the card jumps from Confirmed/Checked In straight to Complete. In Progress is optional and set from the Status dropdown on the edit form if you want to track that a service is actively underway.

Can I jump straight to Completed without checking the customer in?

Yes. Complete is offered from Confirmed, Checked In, and In Progress — you don't have to pass through Check In first.

What emails go out, and when?

Confirming emails the customer a confirmation. Saving a brand-new booking as Confirmed also emails the assigned provider (editing an existing one does not re-email the provider). Cancelling emails the customer and notifies matching waitlist entries. No Show sends nothing. Emails only reach the customer if a resolvable email is on the booking.

Does cancelling a completed visit reverse the money and stock?

Cancel is only available before a visit is completed — Completed is terminal. And even in general, loyalty points and already-committed back-bar stock are never clawed back — a completed visit is treated as settled. Cancelling only releases package entitlements, and only if no invoice exists yet.


Booking an appointment (SOP)

You book from the Add / Edit Appointment form (a modal). Every booking needs one primary service (which sets the duration and price), a provider (or "any available provider"), a date, a time chosen from real available slots, and a customer.

The booking form, field by field

FieldRequiredNotes
ServiceYesOnly active services appear. Sets the duration & price and, together with the date, triggers the live slot lookup. Duration has a 5-minute minimum.
ProviderNoLeave blank to let the customer pick any available provider — the chosen slot then decides which provider is assigned. Only active staff appear.
DateYesDate picker; pre-filled when you click a day on the calendar. Changing it reloads the available times.
TimeYesNot free-text. Populated by an availability lookup after Service + Date are set. When no provider was picked, each option also shows the provider name.
ResourceNoAn optional room/chair/equipment to reserve. Defaults to "None"; only active resources appear.
Customer (dropdown)NoLists existing customer accounts as "Name (email)". Selecting one auto-fills the Customer Name field if it was blank.
Customer NameNoDisplay name on the booking (for walk-ins, or to override an account's name). Stored on the appointment either way.
EmailNoThe trigger for auto-creating a new customer: a valid email with no existing match creates an account (name split from Customer Name). An existing email is reused. Required for confirmation/reminder emails to arrive.
PhoneNoStored on the appointment (and on the new account if one is created).
StatusNoDefaults to Confirmed on a new booking. Saving as Confirmed emails the customer.
NotesNoCustomer-facing notes, shown on the detail card.
Internal NotesNoStaff-only notes; never shown to the customer.
ℹ️
The Time field is a lookup, not a text box Times only appear after you pick a Service and a Date. Until then you'll see "Select a service and date"; while loading, a spinner; and if the provider is fully booked or off, "No available times for this date." — pick another provider (or "any") or another date.

SOP · Book a walk-in / phone appointment

Actor: Front desk. Permission: appointments_create.

  1. Open the booking form

    On the calendar, click the desired day/time to pre-fill the date and time, or click Add Appointment (top-right; hidden if you lack create permission).

  2. Pick the Service

    Choose the primary service. This sets the duration and price and, with the date, starts the live slot lookup.

  3. Choose the Provider (or leave it blank)

    Select the staff member who'll perform the service, or leave Provider blank for "any available provider" — handy for phone bookings when the customer doesn't care who.

  4. Confirm the Date, then pick a Time

    Check the date, wait for the Time dropdown to load real available slots, and pick one. If you left Provider blank, each slot also shows which provider it belongs to.

  5. (Optional) Reserve a Resource

    Choose a room/chair/equipment if the service needs one.

  6. Attach the customer

    Pick an existing customer from the dropdown, or type a Name + a valid Email to auto-create an account, or just type Name/Phone for a no-account walk-in.

  7. Set status & notes, then Save

    Leave Status as Confirmed (or set Pending), add customer-facing Notes and staff-only Internal Notes as needed, and click Save. The row and calendar refresh; a confirmation email goes to the customer if saved as Confirmed.

⚠️
Two people, one slot If two staff try to book the same provider at the same time at once, only one wins. The loser sees "That time slot is no longer available. Please choose another." — just reselect a time.
????
Walk-ins with no email have no account A walk-in booked with only a name/phone stays account-less. That means no Customer History button and no confirmation/reminder emails. To give them both, enter a valid email so an account is created.

SOP · Confirm an online booking (arrived as Pending)

Actor: Front desk. Permission: appointments_update.

  1. Find the new booking

    The Pending filter is on by default, so a fresh online booking shows in the list and on the calendar (amber).

  2. Open and Confirm

    Open the card and click Confirm. This emails the customer their confirmation and moves the booking to Confirmed — into your working set.


Managing line items / products used

After (or during) a visit you can record the products you consumed behind the chair or sold to the customer. Open the Items Used modal with the Manage Items button on the appointment card. This is also where the eventual checkout gets its billable retail lines.

The three line types

Service lineThe primary booked treatment (labelled "Service"). Auto-created and rewritten by the booking form; it has no delete icon and can't be removed from the items modal.
Back-bar use (consumption)A product used up during the service (shampoo, dye, foils). Priced 0 to the customer, captured at unit cost, and it decrements inventory on completion. Never appears on the bill. See Back-bar use.
Retail saleA product sold to the customer to take home. Carries a retail price and is billable at checkout. See Retail sale.

The Add Item form

FieldRequiredNotes
TypeYes"Back-bar use" or "Retail sale". Retail shows a Retail price field; consumption shows a Unit cost field.
ProductConditionalThe stock product used/sold. Pick a product or type a Description — at least one is required. Only picking a real stock product can decrement inventory. Empty unless the Warehouse module is on.
DescriptionConditionalFree-text label; required if no product is selected. A typed-description line never touches inventory.
QuantityYesHow many units were used/sold; must be greater than 0.
Unit costNoShown only for Back-bar use. Not billed to the customer.
Retail priceNoShown only for Retail sale. Consumption lines are priced 0.

SOP · Complete an appointment (with items)

Actor: Front desk. Permission: appointments_update.

  1. Check the customer in

    When they arrive, open the card from the calendar or list and click Check In (moves ConfirmedChecked In).

  2. Record products BEFORE completing

    Click Manage Items and add any Back-bar use (consumed) and/or Retail sale lines. Do this before Complete so completion captures stock and the checkout invoice includes everything. Set Quantity > 0 and either pick a Product or type a Description.

  3. Complete the visit

    When the service ends, open the card and click Complete. The status turns green and the visit is settled.

  4. What completion does automatically

    Completion captures per-service commission, decrements back-bar stock (only if Warehouse is on and a default warehouse is set), and awards loyalty points — each exactly once, so a retry can't double-count.

????
If stock didn't decrement If the warehouse was momentarily unavailable, a Commit Items to Stock button appears on a completed card as a safe retry. It shows only when a completed appointment still has uncommitted back-bar consumption and Warehouse is enabled — it's the retry path, not a normal step.
????
When back-bar stock actually moves Inventory only changes when all three are true: the Warehouse module is enabled, a Default Warehouse is set in Settings, and the line references a real stock product. If Warehouse is off, the items modal shows a notice that lines are recorded for reporting but stock is not touched.

Reschedule / cancel / no-show (SOPs)

SOP · Reschedule an appointment

Actor: Front desk / manager. Permission: appointments_update. There is no separate "reschedule" button — you simply edit the booking and re-pick the time.

  1. Open the appointment and Edit

    Open the card and click Edit to reopen the booking in the form, pre-loaded with its current values.

  2. Change the date and/or provider

    Pick a new Date (and a different Provider if needed). Changing the service, provider, or date reloads the slot list and clears your old time selection.

  3. Pick a new available Time

    Choose a fresh slot from the reloaded Time dropdown.

  4. Save

    Click Save. Re-saving re-runs the slot validation and rewrites the service line; the calendar and list refresh. Editing an existing booking does not re-email the provider.

SOP · Cancel with a reason

Actor: Front desk / manager. Permission: appointments_update.

  1. Open the card and click Cancel

    Cancel is available from any active status (not already Cancelled, Completed, or No Show).

  2. Enter a cancellation reason

    A browser prompt appears. Type the reason (or leave it blank). Pressing Esc on the prompt aborts the cancel entirely.

  3. What happens next

    The appointment turns red (Cancelled) and a cancellation email is sent to the customer. Any package sessions the booking used are returned to the customer — unless an invoice was already created. Matching waitlist entries for that service/date/provider are emailed that a spot opened.

ℹ️
Cancel, don't delete Cancelling handles entitlement release and waitlist alerts for you. Deleting an appointment (a manager action, appointments_delete) soft-deletes it and its lines but performs no stock/loyalty/entitlement reversal — so use Cancel when you need those effects handled properly. Loyalty points and already-committed back-bar stock from a prior completion are intentionally never reversed.

SOP · Handle a no-show

Actor: Front desk. Permission: appointments_update.

  1. Wait out the grace period

    Give the customer your usual buffer before recording the no-show.

  2. Open the card and click No Show

    No Show is available from any non-terminal status.

  3. Done

    The chip turns grey (No Show). The visit is excluded from availability and workforce workload. No email is sent.


Customer history

Whenever a booking has a linked customer account, the card carries a Customer History button that opens a CRM snapshot. It's the fastest way to know a customer before you upsell or serve them. (The button is hidden for account-less walk-ins.)

Visits
Count of completed appointments
Total spend
Lifetime value (completed visits only)
Loyalty
Current points balance

The modal also shows:

  • Header — customer name, email, and phone.
  • Active packages — each package name with its expiry date (if the customer has any).
  • Visit history table — Date, Service, Provider, Status (as a coloured status label), and Amount. Only Completed visits count toward the Visits count and Total spend.
  • Reviews — each past review's gold star rating (★ #f0ad4e), service name, and comment.
????
Tip Check Customer History before upselling — you can see spend, loyalty balance, and active packages at a glance, and spot a package the customer could use before you check them out.
ℹ️
Note Customer History only works for real customer accounts. Opening it for a non-customer (staff/admin) id is blocked — staff details are never disclosed here.

The appointment detail card (reference)

Clicking any calendar block or list row opens the read-only detail card. It summarises one appointment and gives you every action in one place.

  • Summary — coloured status chip, customer (name, email, phone), service, provider, date/time with duration in minutes, resource (if set), and Notes / Internal Notes (if set).
  • Items table — item/service name, quantity, and price for each line (when any exist).
  • Life-cycle buttons (shown conditionally by status) — Confirm, Check In, Complete, No Show, Cancel.
  • Commit Items to Stock — only when a completed appointment still has uncommitted back-bar consumption and Warehouse is enabled.
  • Customer History — only if a customer account is attached.
  • Checkout — only with the appointment_checkout permission; opens the Checkout modal.
  • Manage Items — opens the Items Used modal.
  • Edit — opens the edit form (used for rescheduling).

Tips & gotchas

Quick tips

????️
Click the calendar

Click a day/time to open the form pre-filled with that date and time — faster than typing.

????‍????‍????
Blank provider for phone

Leave Provider blank when the customer doesn't care who — each slot shows its provider and picking a time assigns them.

✏️
Override the name safely

Selecting an account auto-fills the name; you can still override the displayed Customer Name without changing the account.

????
Use Internal Notes

Put anything the customer shouldn't see (allergies to double-check, payment reminders) in Internal Notes; Notes are customer-facing.

????
Items before Complete

Record retail and back-bar via Manage Items before clicking Complete so stock and the invoice include everything.

Cancel promptly

A quick cancel emails matching waitlist customers that a spot opened — it helps someone else grab the slot.

Gotchas to watch for

No times appear for my provider

The Time field only lists slots the availability engine returns. "No available times for this date." means the provider is fully booked or off — pick another provider (or "any available provider") or a different date. Remember you must choose a Service and a Date before any times load, and changing service/provider/date reloads the slot list and clears the old selection.

A confirmation email never arrived

The confirmation only sends when the customer has a resolvable email. A booking saved as Confirmed with no email simply won't notify. New customer accounts are created only when a valid email is entered and no account already matches.

Completion side-effects don't fire / seem doubled

Stock decrement, commission, and loyalty fire only when moving to Completed. They're latched to run once — re-completing won't double-apply, and there's no automatic reversal on a later cancellation.

Back-bar stock isn't decrementing

Stock moves only if the Warehouse module is enabled and a Default Warehouse is set in Settings and the line references an actual stock product. A typed-description line never touches inventory. If Warehouse is off, the items modal shows a notice and stock is untouched — use Commit Items to Stock as a retry once it's back.

Cancelling didn't return the package session

Cancelling releases package entitlements only if no invoice exists yet. Once invoiced, the covered line was already excluded from billing, so it isn't reversed.

A short/zero-duration service still books a block

Service duration is forced to a 5-minute minimum. A mis-configured 0 or very short service still books a 5-minute block; a blank/zero duration falls back to 30 minutes when computing slots.

I can't find In Progress on the card

In Progress has no dedicated button — set it via the Status dropdown on the edit form. The card jumps from Confirmed/Checked In straight to Complete.

Delete vs Cancel

Deleting soft-deletes the appointment and its lines but performs no stock/loyalty/entitlement reversal. If you need those effects handled, Cancel instead of Delete.


????
Next steps Ready to take money for a finished visit? Head to Checkout & Payments. Want to see how bookings arrive from customers online? See the Online Booking Portal. Full cross-module procedures live under End-to-End Workflows.
Was this guide helpful?

Report a content problem