Scheduler — the appointment book
The inside of what a booking page sells from the outside. A Scheduler view lays a table's appointments across the day with a column per staff member, so you can see who is free, drag an appointment to a new time or a different person, book the walk-in standing in front of you, and check people in as they arrive. It works on any table whose date field records a time of day; if the table already has a booking page, the scheduler reads that page's staff, service and client links and arrives configured.
Add one, and what it needs
Add a Scheduler from the + View menu beside the view tabs. It is offered on any table with a Date field that records a time of day — a scheduler places appointments on hours, so a date with no time gives it nothing to place them on.
Most tables are one switch away rather than genuinely unsuitable, because Include time is off by default. Where a table has exactly one date field, the menu offers Scheduler anyway and says what it will change: it turns the time on for that field first, then makes the view. Turning it on never rewrites a stored value — a date with no time keeps reading exactly as it did.
Where a table has several date fields it cannot guess which one starts an appointment, so it sends you to the field list instead of picking one.
It configures itself
A scheduler needs to know more than a calendar does: not just when, but who is delivering the appointment, what it is, and who it is for. It works those out for itself, in this order.
• What you chose. Anything set on the view wins.
• Your booking page. If the table already takes public bookings, that page has answered these exact questions — which link is the staff member, which is the client — so the scheduler inherits them rather than asking twice. Re-point the booking page and the scheduler follows; nothing is copied onto the view to go stale.
• An unambiguous single candidate. One link called Staff, one called Service, one Select called Status: taken. Two that could each be the staff member: neither, because guessing wrong books somebody with a haircut instead of a stylist.
Every role is optional. No status field means no status buttons; no staff link means no per-person columns and the day is shown instead, with a picker to fix it.
Six ways to look at it
Resource is the one most schedulers open on: one day, one column per staff member, room or chair — including people with nothing booked, because an empty column is the one you want to fill. Day is the same day in a single column. Week puts the seven days side by side. Month answers “how busy is this week” rather than “what time”, so it shows counts and the first few bookings; clicking a day opens it. Agenda is the next 30 days as a list, and the one that reads best on a phone.
Stays is for anything booked by the night rather than by the hour — a cottage, a room, a boat, a hire car. It is a chart with a row per unit and a column per day, and each booking is a bar across the days it occupies. A scheduler switches to it by itself when its dates carry no time of day and it knows when each booking ends.
The hour grid always shows a working day even when nothing is booked, and grows to fit anything outside it — an early appointment widens the window rather than being hidden off the top.
Running the day
• Click any empty slot to book it. A dashed outline follows your pointer in 15-minute steps showing what you would be booking; the panel opens with the time and the person already filled in from the column you clicked.
• Drag an appointment to move it. Dropping it in another person's column reassigns it in the same gesture, and it keeps its length rather than collapsing.
• Drag its bottom edge to change how long it runs. This one only appears when the view has an end-date field to write to — a handle that did nothing would be worse than none.
• Click an appointment for who, what, when, and the status buttons. Open record hands off to the usual record drawer for everything else.
Every change is written straight to the record, so automations, webhooks and the audit trail all fire exactly as they would from the grid.
How long is a booking? It is decided once
When you book something, the scheduler asks the service how long it takes and writes that onto the booking. From then on the booking is its own authority.
That is deliberate, and it is the difference between a schedule you can trust and one you cannot. If a 90-minute massage becomes a 120-minute massage next year, every massage you have ever booked would otherwise grow by half an hour — including the ones already delivered, already invoiced, and sitting in last quarter's reports. Instead: bookings made when it was 90 stay 90, and new ones take 120.
It has to be kept somewhere, so the view needs either an end date or a number of minutes on the booking itself. A duration that is looked up through the service does not count — that is the live value this is protecting you from. If there is nowhere to keep it, the scheduler says so above the grid and every booking is drawn the same default length until you pick a field.
Typing a number in the booking panel always wins; leaving it blank is what asks the service.
Moving and cancelling — and who gets told
Drag a booking to move it, drag its bottom edge to change how long it runs, or use Reschedule… in the panel to send it to another day without dragging. Moving keeps the length it was booked with.
Cancel booking sets your status field's own cancelled option — whatever you happen to call it — so the booking stays visible as a cancellation rather than vanishing. If the table has no such option the record goes to Trash, where you can get it back. Nothing here deletes anything permanently.
Both ask whether to tell the customer, and then say who was actually told. A booking taken through your public booking page carries the customer's address, so they get a proper email: the reschedule one shows the old time struck through above the new one, because “was that always when it was?” is the first thing anyone thinks. If they left a phone number, a text names both times too, straight away. A booking somebody typed in by hand often has nobody to write to, and the scheduler says nobody to notify rather than implying an email went out.
Every change also runs your automations, so a rule watching the date field can add an SMS, a webhook or anything else on top.
Repeating bookings, and changing just one
A repeating booking is stored once, as a rule, and drawn for whatever period you are looking at — so “every Tuesday, forever” is literally true and costs nothing to keep. Generated bookings are drawn with a faint hatch because they are not records yet.
Move or cancel one and the scheduler asks how far the change should reach:
• Just this one — the rule skips that date, and the one booking becomes a record of its own you can edit freely. This is how you handle “same as usual, but an hour later this week”.
• This and all later ones — the old rule stops here and a new one starts, so everything before today is left exactly as it was. This is the one you want for “from now on we do Wednesdays”.
• The whole repeat — changes every booking in the series, including ones already past.
You are only asked when it could matter. A one-off booking just moves.
Classes and anything shared
Twenty people at one yoga class is twenty bookings at the same time with the same instructor — which, on an ordinary appointment table, is nineteen double-bookings. It is not, and the scheduler needs to be told.
Give the view a capacity — a number saying how many the session takes — and it switches to counting seats instead. Bookings sharing a slot stop being flagged, and only genuine problems remain: a class with more people in it than it holds, and one instructor booked into two different things at once.
An over-full class is counted once, not once per person — it is one thing to go and solve.
Booked by the night
Cottages, rooms, boats and hire cars are booked in days, not hours. Give the view a start date and an end date that carry no time of day, plus something to draw a row per, and it becomes a Stays chart.
The end date is the day it becomes free again. A cottage booked the 1st to the 8th is available on the 8th, and the next guest's bar starts in that same column — so a changeover morning reads as one booking ending and another beginning, not as a clash. That is what every hotel system means by check-out, and reading it the other way would report most of a busy month as double-booked.
Drag the middle of a bar to move the whole booking keeping its length; drag either end to change just the arrival or just the departure. A genuinely overlapping pair stacks into two rows so neither is hidden, and both are outlined.
The side panel
Needs a decision is the queue worth checking first: appointments with nobody assigned, and two appointments booked on one person at the same time. Both are worked out from the data rather than from a status somebody has to remember to set, so the count is always real. Double-booked appointments are outlined on the grid too.
Below it, one list per role — staff, service, status — each with a live count for the period you are looking at. Click a row to narrow the view to it, or hover and click only to narrow to just that one. These are ordinary filters: they show up as chips on the toolbar, they ride the URL so a filtered scheduler is a link you can send, and an admin can save them onto the view.
The mini month marks days that have something on them. Hide the whole panel with the button at the left of the toolbar; that choice is remembered for you alone.
Colour and time zones
Colour appointments by staff, by service or by status from the toolbar. Colours come from each value's position in its own list, so the same person is the same colour on every screen and every day, and nothing needs configuring.
Times follow the same rules as the calendar. Appointments are shown in the workspace's zone by default, and a quiet line says so if yours differs. Where the date field is marked as converting, the hour gutter carries both clocks and a drag converts back on the way to storage.
Tips
• The scheduler and the public booking page are two ends of one table. If you already have a booking page, its staff, service and client links are inherited — you do not configure anything twice.
• An empty column is not clutter: it is the person who is free. Select options are always drawn, whether or not anything is booked into them.
• Filter the rail down to one person, then switch to Week, to see their whole week.
• Press ? for the shortcuts. Left and right step the period, T jumps to today, R / D / W / M / A switch view, and N books something now.
• Leave Minutes blank when booking and the scheduler asks the service how long it takes — then keeps that answer, even if the service changes later.
• For rooms or cottages, the end date is the day it comes free again, not the last night. That is what lets back-to-back bookings sit side by side.
Good to know
• If the mode tabs show no Resource, nothing on the table says who is delivering each appointment. The note above the grid offers a picker for it.
• Appointments all stacked at midnight means the date values carry no time of day, even though the field allows one. Check what is actually stored.
• Only the most recently updated records are read for a period, so a very large table can leave older appointments off. The page says so when it happens rather than showing a quietly partial day.
• A filter through a linked table, or on a computed field, cannot run on a scanning view like this one. The toolbar says how many were left out and links to the grid, which can run them.
• If every booking is drawn the same length, the view has nowhere to record how long they run. A duration looked up through the service does not count — it is a live value, and the whole point is to keep a booking's length fixed. The note above the grid offers a field to use.
• If a class reads as a wall of double-bookings, give the view a capacity. Without one the scheduler assumes each booking needs the resource to itself, which is the safer guess but the wrong one for classes.
• "Nobody to notify" means exactly that — the booking has no email attached. It is not a failed send.
Who can do what
• Anyone who can see the table can read the scheduler and filter it.
• Dragging, resizing, reassigning and setting a status each need write access to that particular field — the affordance is simply absent where you do not have it.
• Booking a new appointment needs create access on the table.
• Changing what the view is built on, or its saved mode and colour, is an admin action on a shared view; a personal scheduler is yours to shape.