Scheduling & online booking
Customers book themselves. Zero login, zero phone tag, deposits if you want them.
A public booking page a customer can use without an account: pick a service, see live availability, book a slot, get reminders. Behind it: per-person and per-resource availability, buffers, round-robin assignment, deposits, waitlists, and reschedule links that just work.
How it helps you
A fuller calendar with less effort
Share one link; the engine enforces availability, notice windows, and buffers so you never get a 7am surprise.
Fewer no-shows
Automatic confirmations and reminders by SMS/email; optional deposits make bookings real.
Works for rooms and gear too
Resources (rooms, courts, equipment) book exactly like people, with their own hours and rules.
The walkthrough
Define a booking type
Duration, capacity, buffers, deposit, who can be booked — one form in the dashboard.
Share the public link
Or embed it on any page with one iframe snippet — it works on sites you built elsewhere too.
Customer books, zero login
Live slots only; holds prevent double-booking; deposit collected if configured.
Everyone is kept honest
Reminders reduce no-shows; manage/reschedule links let customers self-serve changes; your roster updates live.
What your customers get (no account, ever)
The public booking surface is session-less by design — a customer never signs up to give you money or time.
Live availability, not a form
They see the slots that are genuinely open right now — computed from working hours, date overrides, existing bookings, buffers, notice windows, and per-day caps.
Held while they finish
Picking a slot holds it while they finish — the same courtesy a good box office extends. Two people racing for the last seat get one clean winner and one honest “that just went”, never a double-sold slot.
Deposits that stop no-shows
Optionally require a deposit through YOUR Stripe. The booking is created only after payment confirms; if anything fails, the hold releases and the slot returns to the pool.
Waitlist with a real head start
When a cancellation frees a spot, the next person gets a time-boxed claim link — a genuine first shot, not an auto-booking they never agreed to.
Self-serve changes
Manage, reschedule, and cancel through a secure link in their confirmation. No phone tag, no account, no support ticket.
Embeddable anywhere
Every booking page has a one-line iframe snippet, so a site you built in any other tool can still take real bookings.
Managing a team
Scheduling stops being about one calendar the moment you hire someone. This is built for the whole roster.
Per-person availability
Each team member owns their weekly hours and date overrides — holidays, half days, a one-off morning off — without an admin editing a master grid.
Per-service hours
A booking type can override the default: "consults only on Tuesday and Thursday mornings" applies to that one service without changing anyone’s general availability.
Round-robin and capacity
Assignment policies spread work across whoever is qualified, with per-day maximums so nobody gets buried by a good ad week.
The day roster
A management view of who is booked with whom, all day, with attendance marking — attended or no-show — that feeds follow-up and insight automatically.
Zero-login roster links
Mint a printable roster link a coordinator can post or carry — no account, no dashboard tour, expires on your terms.
Recurring series
Weekly classes and standing appointments generate as a series you preview before publishing, then edit or cancel a single instance without unpicking the rest.
The views your team actually works in
Scheduling software lives or dies on whether the right person can see the right slice of the day.
The day roster
Everyone booked today, who they are with, and what happened — with attendance marked as it goes.
The week
The planning view: where the gaps are, who is overloaded, and what next week already looks like before you promise anything.
My availability
Each team member manages their own hours and time off without an admin in the middle.
Per-service hours
A service can keep its own window — “consults Tuesday and Thursday mornings” — without touching anyone’s general availability.
The public booking page
What your customer sees: live openings only, on your brand, with no account required.
The printable roster link
A zero-login link a coordinator can post on a wall or carry on a phone — expiring on your terms.
Subscribed calendars
The same schedule inside the calendar app your team already lives in, updating itself.
One calendar entry, described precisely
A team calendar fails when everything is the same kind of block. Here every entry carries the distinctions that decide who can see it, who it occupies, and what it becomes.
Open time vs booked time vs busy time
Offered availability, a confirmed booking, and “not available” are three different things — so a busy block never masquerades as an offer.
Exclusive, shared, or informational
Some entries consume the person entirely; some are group sessions others can still join; some are context only. The calendar knows the difference.
Public, link-only, or internal
Publish a booking type to the world, share it privately by link, or keep it staff-only — one setting, no separate calendars.
Curated or generated slots
Offer exactly the times you chose, or let the system generate slots from working hours — whichever fits the service.
Round-robin, priority, or collective assignment
Spread work evenly, respect seniority, or require several people to attend together.
Roster privacy
Show attendee names, show a headcount only, or show nothing — per booking type, because a class and a therapy session are not the same.
Five honest outcomes
Confirmed, cancelled, rescheduled away, attended, or no-show — recorded distinctly, so your reports and your follow-up can tell them apart.
How double-booking is actually prevented
Four independent layers, because "we check for conflicts" is what every system says right before it double-books someone.
The database itself refuses
Overlap is not something we check for and hope — it is something the system cannot record in the first place. No integration, no import, and no rushed admin can create one.
Atomic admission
When two people book the same moment, exactly one wins and the other is told immediately, with alternatives. Simultaneous demand is a solved case, not a support ticket.
Your real calendar blocks it
Connect Google or Microsoft and your existing commitments block bookable time. Busy intervals only — never event titles or details — and if the sync ever fails we keep the last known state rather than risk exposing a slot that is actually taken.
Buffers and notice windows
Travel time between jobs, prep time before a class, and minimum-notice rules are enforced when availability is computed, not apologized for afterward.
Rooms, equipment, and anything else that can only be in one place
A resource books exactly like a person — which means it inherits the entire engine for free.
Resources are first-class
A room, a van, a camera kit, a treatment chair: each gets its own hours, its own rules, and its own bookable identity.
Book the person and the room together
A service can require both, so a consultation cannot be booked into a room that is already occupied.
Venue-grade guarantees
The same guarantee that protects a room protects every other resource, so overbooking is impossible rather than unlikely — the difference that matters at 6pm on a Friday.
Feeding the rest of the business
A booking is not an isolated event — it is the start of a customer record, a payment, and a follow-up.
Subscribe your calendar
Subscribe your bookings into any calendar app you already use. A rescheduled booking moves in place rather than appearing twice — the detail most calendar exports get wrong.
Automatic reminders
Confirmations and reminders send from your own domain and number, logged against the customer record like every other message.
It becomes a customer
Bookers are contacts. Deposits are orders. Attendance is data your reports and your AI coach can both see.
Shipped features behind this
From the same machine-readable catalog we publish at /features.json — what your AI reads to learn the platform.
Schedule — the week on one board
A 7-day week view of field jobs and events — the 'where's my week' screen every field-service owner asks for first. Read view over GET /ops/jobs + GET /events (no new API); week navigation, today highlighted, every card links into its detail surface. Mobile-first: day columns scroll horizontally with snap on phones, full grid from md up.
Member event self-registration
A signed-in member registers themselves for a free, registration-open event from their portal. Idempotent; paid events are directed to checkout (never mints an unpaid order).
Common questions
Can customers book without creating an account?
Yes — booking is zero-login by design. Customers manage their booking through a secure tokened link in their confirmation.
Can I embed booking on an external site?
Yes — every booking page has an embeddable iframe snippet, so a site built in any tool can take real bookings.
See it, then build on it
This whole site runs on the same platform — fork the template, or point a front end you built with Lovable, v0, Bolt, Claude, or Cursor at the backend.