Appointments: a booking page that does the scheduling so you don't
Scheduling is the tax every service business pays on having customers. The appointments module is how you stop paying it by hand.
The booking page
Every appointment type you define gets a public booking page — your availability, your rules: duration, buffers between visits, minimum notice, booking windows, daily caps, custom questions you actually want answered before someone shows up. The slot picker shows only real openings, computed from your weekly schedule plus any date overrides, in the visitor's own timezone. When they book, the contact record is created or matched by email, the appointment lands on your calendar, and a reminder gets scheduled. Nobody retyped anything.
Two trust switches live on the event type. Approval mode holds new bookings as "requested" until someone approves them — for the visits you'd rather screen. And single-use links let you hand out a booking URL that works exactly once: for the VIP slot, the make-up session, the interview — the link expires the moment it's used, and a dead link shows an honest expired notice, not an error page that leaks anything.
The calendar
Inside the workspace, the calendar renders month, week and day views, with recurring events expanded honestly — the recurrence rules handle the wall-clock-stable weirdness, and all-day events pin to a calendar day without drifting across timezones. Click an empty slot to create an appointment right there. Filter by host. Everything displays in your timezone of choice, and each appointment carries a private manage link the customer can use to reschedule or cancel without an account.
Reminders that send themselves
Reminders are scheduled per appointment type — 24 hours before, one hour before, your offsets, your choice. The daily sweep sends the due ones through your workspace's own email connection, and the host gets notified when a booking arrives. If an appointment type kicks off one of your flows, the session starts the moment someone books — intake questions, prep checklists, whatever the visit needs to start before it starts.
Sync, both directions
Connect Google Calendar or Microsoft 365 per workspace, or subscribe to an external ICS feed. External events pull in as busy blocks so a personal commitment blocks a work slot; your appointments push out so the rest of your life knows you're working. Sync is incremental, echo-suppressed — an event synced out doesn't come back as a duplicate — and tombstoned, so a deleted external event actually disappears instead of haunting your Thursday.
Your availability can publish outward as well: a tokenized, read-only feed of your appointments exports in the standard ICS format, so anyone you authorize can subscribe from any calendar app they already use. And when a booking lands, the host hears about it through a notification — the visit exists in the system before the customer's confirmation email finishes arriving.
Date overrides handle the exceptions — the closed Friday, the half-day, the special Saturday hours — so the schedule you publish matches the schedule you actually keep.
Related: a booking can kick off a flow the moment it lands, and bookings feed the workforce volume math alongside tickets and calls.
How this compares
Calendly and Acuity built the booking-page category, and they're good at it — paste a link, let people grab slots. What standalone schedulers don't carry is the rest of the appointment's life: what happens after someone books, who the customer is, and what the meeting was for. That data usually stays trapped in the scheduling tool while your CRM and calendar hold fragments.
Here the booking page is the front door to a full appointment record. Public booking with custom questions, an approval mode for requests you want to screen, single-use links for one-off invites, self-serve reschedule links that don't need a login, and reminder emails scheduled by offsets — the scheduler box is ticked. Then the appointment links to the contact, the ticket, the deal; a booking can even kick off a guided flow automatically. Two-way sync with Google and Microsoft calendars runs both directions, so your team's existing calendars stay authoritative. If you run scheduling-heavy work like site visits, pair this with the stock and project sides — the appointment knows what it's for. Booking is the start here, not the product.
Try it
Appointments lives under Appointments in your sidebar. Create one event type, set your real weekly hours, and send yourself the booking link from your phone. Book yourself a slot, watch the reminder schedule itself, and find the appointment already on your Google calendar. That round trip is the whole product.
