Scheduling
Calendar & booking
Book, cancel, and double-book appointments deliberately — plus blocking off time.
The Calendar shows every provider's appointments, with controls to book a new one, cancel an existing one, or block off time. It needs at least one facility, one service, and one provider set up first — see Facilities, services & providers.
Day, Few Days, Week, and Month
The view switcher in the toolbar (between the date title and the ⋮ more actions menu) opens a menu of four views. Day shows one day at a time. Few Days shows as many upcoming days as comfortably fit your window — it adjusts automatically as you resize, the same way the iOS Calendar app widens from two days in portrait to more in landscape. Week is always the fixed Sunday-through-Saturday seven days. Month shows a grid for the whole month with each day shaded by how busy it is — click any day to jump straight into its Day view.
Day, Few Days, and Week all render as a real hour-by-hour grid — appointments are positioned by their start time and sized by their duration, rather than listed as text. Two appointments for the same provider that overlap in time (an intentional double-booking override, see below) show side by side instead of stacking. Click any appointment block to see its full details and cancel it.
If any facility has rooms set up and there's more than one provider or room to actually group by, a Group by section appears alongside the status filter (the left rail on desktop, the Filters sheet on a phone) with a Provider / Room toggle. Provider (the default) groups the day's columns by who's seeing each appointment; Room groups the same appointments by which room they're booked into instead — useful for checking room availability at a glance rather than each provider's. It's hidden for single-provider, single-room practices where grouping wouldn't change anything.
Jumping to a date
On a wide enough screen, a mini month calendar sits in the left rail at all times — click any date there to jump straight to it. The toolbar also has its own ‹/› next to the date title for paging one step at a time — a day at a time in Day view, a week at a time in Week view, and so on for each view's own unit.
On a phone
Below roughly tablet width, the Calendar opens straight to Month — that grid is the entry point on a phone, the same role the mini calendar plays on desktop. Tap a day to drill into its Day view; a small calendar icon appears next to ‹/› in the toolbar while you're drilled in — tap it to collapse back out to Month, the same shape as iOS Calendar's own view switching.
The left rail itself doesn't fit next to the grid at that width, so its contents — the mini calendar and every filter below — move behind a Filters button in a bottom bar (alongside a Today shortcut), opening as a sheet from the bottom of the screen instead of sitting always-visible.
Filtering by status, facility, or provider
On desktop, the left rail below the mini calendar has color-coded filters, similar to how Google or Apple Calendar show/hide individual calendars (on a phone, the same filters live in the Filters sheet described above). Status is always there — pick All statuses, Scheduled, Cancelled, or Expired holds (Scheduled is the default) — this is about the booking itself, so an expired hold shows as a hatched (diagonally striped) block rather than a color, keeping it visually distinct from the charting colors below. If you have more than one facility or more than one provider, a checklist for each appears below it. Every box starts checked (no filter — everything shows); uncheck one to hide it. Facility/provider filtering is multi-select, not a single choice, so you can view any combination — e.g. two providers at once — not just one at a time.
A separate Charting filter sits right below Status, laid out the same way — this tracks whether a session's note has been started at all, not the booking itself, so it's a genuinely different question from the filter above it. Choose All charting, Not started, In progress, or Complete to narrow the grid to just those appointments — handy for spotting any appointment that still needs a session note written up. The same accent/warning/muted colors show up on every appointment block and on the dashboard's Today's schedule card, so a block's color always means the same thing wherever you see it.
Booking an appointment
Pick a facility, service, provider, room (if the service needs one), and a time, then choose an existing patient or enter a guest name for someone without a record yet. The room and provider slot are protected at the database level — two appointments can never land on the same physical room, and a provider can't be double-booked by accident.
On Day, Few Days, or Week, you can also click and drag on any open space in the grid to seed the booking form with that day, time, and column already filled in — drag longer to default the service picker to whichever service's duration is the closest match. This is a desktop-mouse shortcut; on a phone, use + New appointment instead.
Sharing the booking link
The ⋮ more actions menu in the toolbar has a Copy booking link option that copies your public booking link — the same link that also lives on Settings → Scheduling, surfaced here too since it's something you'll share day-to-day, not something you'll go digging for in settings.
Online bookings
Appointments booked through your public booking link always show an Online booking badge, whether or not the visitor's name matches someone already in your records — the public flow never searches your patient list. This is different from a guest you enter yourself on the Calendar (labeled plainly “(guest)”), which means you've deliberately chosen not to create a record for that person.
Every unresolved online booking also shows up in a New online bookings queue at the top of the Calendar — match it to an existing patient, create a new one, or explicitly Leave as guest. If the visitor's email matches a patient already on file, that match is suggested automatically with a one-click link.
When a booking conflicts
If the time you're booking would double-book the provider, you'll see a warning listing what's already on their calendar instead of a booking. This is deliberate — the system stops accidental double-bookings, not a considered decision by someone with full context. Add an optional reason and choose Book anyway to proceed; the resulting appointment carries a persistent “Overlap override” marker so anyone looking at that provider's day later understands why it looks double-booked.
Note
Taking time off
Use Take time off to block a provider's calendar — this day only, a date range (vacation), or a recurring weekday until a chosen end date (e.g. every Tuesday through the end of the year). If the block would conflict with appointments that are already booked, you'll see them listed before anything is blocked, so you can reschedule or cancel them first rather than have them silently orphaned.
Rescheduling an appointment
Click the appointment's block to open its detail popover, then choose Reschedule. A dialog opens pre-filled with the appointment's current facility, provider, room, date, and time — change what you need and confirm. This moves the existing appointment in place rather than cancelling and rebooking it, so anything already linked to it (like a started session) stays linked. If the new time conflicts with the provider's calendar, you'll see the same warn-then-confirm flow as booking.
Cancelling an appointment
Click the appointment's block to open its detail popover, then choose Cancel. Cancelling doesn't delete the record — it just frees the slot.
Cancelling or rescheduling on short notice
If the appointment starts inside the org's cancellation-notice window (24 hours by default), cancelling or rescheduling shows an extra warning — “Cancel with no advance notice?” or the same message in the reschedule dialog — before it goes through. Confirming it anyway is always allowed; the warning exists to catch a late change before it happens, not to block it. Appointments changed this way carry a Late notice badge in the detail popover afterward.