Appointment Booking Form Template
Replace phone tag with a link — clients pick a service, a date, and a time window, and you confirm the slot on your own rhythm.
Tell us what you need and when suits you. We check the diary and confirm your slot — usually within a few business hours.
Your confirmation — and any change on the day — lands here.
Only used if something about your slot changes at short notice.
If your first choice is taken, we'll offer this one instead of emailing back and forth.
Every appointment that starts life as a phone call costs two people the same five minutes — the caller waiting through hold music, and whoever answers, mid-task, flipping through the diary while the queue builds behind them. This form moves that exchange to a link: the client states the service, the date, the window, and how they want to hear back, and your scheduler answers on their own rhythm with a definite yes. You keep full control of the calendar while the client gets something that feels close to instant.
Why these fields. The service dropdown leads because it determines duration — a first visit and a follow-up rarely occupy the same slot length, and knowing which is which before you open the calendar is the difference between confirming in one reply and negotiating in three. A date plus a time-of-day window beats an exact-minute picker for request-based scheduling: clients rarely care about 2:40 versus 3:00, and windows give your scheduler room to pack the day efficiently instead of honoring arbitrary minute choices. The backup date is the quiet hero — it pre-answers the most common rejection ("that day is full") and converts a second email round-trip into a single confirmation. The confirmation-channel question respects how people actually live: some answer email in minutes, others only ever see texts, and asking removes all guesswork about where your yes should land.
What we left out. A live slot grid that promises times nobody has verified — a form that "books" an unchecked slot manufactures double-bookings and apology calls. Also payment details, insurance numbers, and intake paperwork: all of that belongs after the time is agreed, not gated in front of it.
Who uses this. Clinics and practices where the desk owns the diary, barbers and beauty rooms fitting appointments between walk-ins, repair shops and opticians, and any solo operator whose current booking system is a voicemail box checked at lunch.
Make it yours. Rename the service options to your actual menu, and set the ending's promise to a turnaround you can genuinely keep — "within a few business hours" builds trust only while it stays true. Turn on email notifications so requests interrupt you gently rather than pile up silently, and skim the responses view against your calendar each morning; timestamps settle who asked first whenever two requests want the same slot. If demand outruns supply, a close rule caps how many requests a day accepts, and your closed message can point overflow at next week.
The confirmation is the product. Nobody remembers the form. They remember that they asked at 9:12 and held a definite answer by 9:40. Keep that loop tight and this page will quietly outperform your phone line within a month.
Frequently asked questions
Does this put the appointment straight into my calendar?
No — it collects the request. You check the diary and confirm through the channel the client chose. If you want requests flowing into other tools, a webhook can POST each one the moment it arrives.
What stops two clients requesting the same slot?
Nothing at submission time, by design — your diary stays the source of truth. Timestamps in the responses view show who asked first, and the backup-date answer usually resolves the other request in one reply.
Can I cap how many requests come in per day?
Yes — Settings has close rules: stop accepting after a set number of responses or at a date and time, with a custom closed message pointing people to the next opening.
Nervous clients double-submit. Can I stop that?
Turn on duplicate prevention in Settings — one submission per device or per IP — and the second attempt is stopped politely before it clutters your queue.