Staff, availability and buffers
Weekly hours, days off, buffer times, slot capacity and per-booking timezones, plus how the double-booking guard works.
Staff members
Each person who can be booked is a staff member under Schedopia → Staff. A staff member has the services they offer and their own availability. Customers can choose a specific person or let the form show any available staff for a service.
Weekly hours
Set the days and hours each staff member works. The form only offers start times that fall inside these hours and that leave room for the full duration of the service plus any add-ons.
Days off
Add individual dates or ranges when a staff member is unavailable, such as holidays or training days. No slots are offered on those dates for that person.
Buffer times
A buffer is a gap added after each appointment before the next one can start. Use it for room turnover, cleaning, notes or travel. A 60-minute service with a 15-minute buffer occupies 75 minutes of the calendar even though the customer is told 60.
Capacity
By default a slot takes one customer. Raise a staff member’s capacity when the same person can serve several customers at once, for example a technician who can run two jobs in the same window or an instructor with a small group. The slot stays available until the capacity is reached.
Timezones
Every booking stores its timezone. Customers see and pick times in their own timezone; you see the same booking in your site’s timezone in the admin. Reminders and calendar links use the correct offset for each side.
Note: Version 1.0.1 fixed how the default timezone is applied. If you run an older version, update before relying on this.
The double-booking guard
Availability is calculated from weekly hours, days off, buffers, capacity and existing bookings, then checked again when the customer confirms, inside a database transaction. Two customers who reach the last step at the same moment cannot both take the same slot: one booking is written and the other is told the time is no longer available and asked to pick another.
The same guard covers bookings created from the admin, from the REST API, and from any extension. Every booking flows through one validated path, so an integration cannot create a booking the core would reject.