Staff Availability
Each person's own working week — the second half of what decides which slots a customer is offered, alongside the location's opening hours. Absence lives next door, under Time Off.
Staff availability is one person's working week. It sits alongside opening hours: the location says when the doors are open, this says who is actually there.
Absence — a holiday, a course, an afternoon out — is Time Off, a screen of its own. This one describes the week somebody keeps; that one describes when they are not there, and is subtracted from it.
If Staff Availability refuses to open, that is a permission, not a mistake you made. The page needs
view_any_staff_hours(andcreate_staff_hoursto add a row). The Front Desk role holds both; Admin holds everything. If your role has neither, ask an administrator to add them under Users & Access → Roles, or ask somebody who has them to set the hours for you.
Only people marked as taking appointments appear here. A colleague is offered as an assignable practitioner — on this screen, on the booking form and on an appointment type's roster — only when Takes appointments is switched on for them under Users & Access → Users. It used to be everybody with a login, and a receptionist in user testing found herself in a list of physiotherapists with one of that day's appointments already against her name. Existing practitioners were switched on automatically; a colleague added from now on starts off the list.
Somebody with no rules here cannot be booked at any time. Everybody who takes appointments needs a working week set, or the types they are assigned to offer no slots at all. This used to work the other way round — no rules meant "whenever the location is open" — which quietly undid the feature: bookings were being handed to people with no hours while the appointment page reported the employee free.
Nobody had to do anything on the day that changed. Everybody already assigned to an appointment type was given the working week their location keeps, so availability carried on exactly as it was, with the rows now visible and editable on this screen. The exception is a location with no opening hours at all: it could not be booked before either, so nothing was invented for it.
Where to look when a type offers nothing #
The Bookable column on Appointment Types is the fastest answer. It distinguishes the two ways a type can offer no times:
- No — no staff assigned. Nobody can take it. Add staff to the type.
- No — nobody has working hours. Staff are assigned, but not one of them has a working week set here. Add their hours below.
The appointment type's own page says the same thing under Staff who can take this, and an appointment assigned to somebody with no hours says so under Scheduling clash rather than claiming the employee is free.
The regular week #
Open Appointments → Staff Availability → Add availability, pick the person, pick a Day of Week, and set the Start time and End time. One row per working day: somebody who works Tuesdays and Thursdays has two rows and is offered on no other day.
- Both times are required on a working row. A row that is not marked Never
works this day has to say when the person starts and when they finish — a rule
with no times decides nothing. Type them however you write times —
9:00 AM,9am,9, or09:00all mean nine o'clock, and5:00 PM,5pmand17:00all mean five. Anything that cannot be read as a time is refused on the page, next to the box, rather than saved as a blank. - Personal hours narrow the branch's, they never extend them. A person marked available 08:00–20:00 at a site that closes at 17:00 is still finished at five.
- The whole appointment has to fit inside the shift. A technician who finishes at 17:00 is not offered a two-hour job at 16:00, whatever time the branch shuts. Any buffers on the appointment type count towards that too.
A spell of different hours #
Leave Day of Week blank and set a First date and Last date to change somebody's hours for a run of dates — a fortnight on a late shift, a short Friday every week of a course. Dated rows beat the weekly pattern for the dates they cover, so you do not have to edit the week itself.
Set both dates to the same day for a one-off.
This is not where holidays go. Time off has its own screen — see Time Off — because a dated row here replaces the week rather than narrowing it, so the only absence it could express was a whole day. Recording "off Friday afternoon" through it meant working out the hours you were still keeping and typing those instead, which is the wrong way round and is exactly what a novice in user testing could not do. The switch on this screen, Never works this day, is for a weekday somebody is never in — Wednesdays, say — and it refuses a date range for that reason.
Time off recorded the old way was moved to the new screen automatically. Nothing about anybody's availability changed.
Where the hours are enforced #
Everywhere a booking is written, not just on the public page. Recorded time off is taken out of these hours before any of them are asked, so every one of them refuses a booking during it too.
- The public booking calendar never offers a time nobody is working.
- The staff booking form narrows its Time list to the assigned employee, and refuses a typed-in time they are not working — naming the hours they do keep that day. Book anyway releases it when you mean it.
- The appointment's own page and the dashboard mark a booking that falls outside the assigned employee's hours as a clash.
- The customer portal and the emailed manage-booking link will not move an appointment onto a time its assigned employee is not working.
- The API and the AI connector reject one with a
422unless the request saysignore_scheduling_warnings.
What it does not do #
This is availability for booking, not a timesheet or a leave-approval system — there is nothing to approve and nothing is counted against an allowance. It exists to stop customers being offered times nobody can keep.