Concept

How the calendar is organised

The views, the time-range toggle, and why drag-and-resize works in some views but not others.

The calendar is the same set of bookings, shown four different ways. Understanding what each view is optimised for — and what you can do in each — makes day-to-day scheduling faster.

Two kinds of view

The four views split into two camps:

  • Grid views (Month, Week, Day) plot bookings on a time axis. They show gaps and overlaps at a glance. Week and Day are fine-grained enough to support drag-and-resize.
  • List views (Agenda) show bookings as a sequence, regardless of duration. Useful when duration isn't the thing you're thinking about.

Month is a grid view but it's too coarse for drag-to-reschedule — a booking at 10:15 and a booking at 10:45 look the same in a month cell.

Why the time-range toggle matters

On the grid views, the y-axis is time. Showing every hour of every day wastes space — most pharmacies close at night — so the default Fit to trading hours & appointments collapses the grid to the hours that actually matter.

Switch to Full day (24h) when you have bookings outside trading hours (early-opens, late-staff, weekends) and don't want them tucked off-grid.

The toggle doesn't affect bookings themselves — it's a display choice.

Why drag only works on Week and Day

Dragging a booking to a new time needs pixel precision. Week and Day grids give ~15-minute resolution. Month shows one cell per day, so dragging into it would be ambiguous — which hour? Agenda doesn't have a time axis at all.

For bookings in Month or Agenda view, use the reschedule sheet from the booking detail — the outcome is the same.

Blocks sit alongside bookings

The calendar shows two kinds of item: bookings (with a customer) and blocks (unavailable time). Blocks aren't customer-facing and don't have status lifecycles — they're either present or deleted.

A booking can't be placed over a block's resources. See Blocking time on the calendar.

Holds briefly appear too

During the public booking flow, the customer-facing site creates a short-lived Held booking that reserves the slot. If they don't confirm, the hold expires and the slot frees up. You'll occasionally see Held on the calendar during busy periods — it's working as intended. See The booking lifecycle for why.