WordPress booking

WordPress booking system development without the double bookings

Appointments, classes, rentals and consultations booked and paid on your own site. We set up the plugin, sync staff calendars and write the rules a settings page cannot express.

  • Tested across time zones
  • Direct access to your developers
  • Milestones agreed in the quote
What we cover
  • Availability engine
  • Staff and resources
  • Payments and deposits
  • Reminders and notifications
  • Calendar sync
  • Online meetings
Get a free quote Reply within one business day. NDA on request.
The problem

Booking problems we are called about

Taking a booking looks like a form with a date picker. Underneath it is a ledger of time: who is free, for how long, in which room, in whose time zone, and whether the slot a customer is looking at was taken by someone else four seconds ago. Get that ledger wrong and you find out in the worst way, with two clients in the waiting room for the same chair.

We build booking systems on WordPress for clinics, salons, consultants, tutors, studios, tour operators and equipment hire. Sometimes that means configuring Amelia or Bookly well. Sometimes it means WooCommerce Bookings with custom availability logic, or a scheduling plugin written for you. If you are still weighing WordPress against a hosted scheduler or a custom application, our booking and scheduling systems page compares the routes.

  • Two people, one slot

    Two customers pick the same time within seconds, or a staff member adds a personal event that the site learns about too late. Both bookings are confirmed and someone has to make an awkward phone call.

  • Times that shift by an hour

    A client abroad books 3 pm and turns up at the wrong time, or every appointment moves when the clocks change. Somewhere a time was saved without its zone.

  • No-shows and unpaid slots

    Customers reserve prime times and never arrive. Without a deposit, a cancellation window and reminders that really send, the calendar looks full and the till does not.

  • Rules the plugin cannot express

    A treatment needs one therapist and one room, a class needs a minimum of four, a van needs an hour of cleaning after each hire. The settings page has no box for any of it.

What we do

What a dependable booking setup includes

We pick the plugin that already matches most of your rules, configure it carefully, then add code only for the parts that are specific to how you work.

Availability engine

Working hours, breaks, holidays, buffers, lead times and capacity per service, with free slots calculated from staff, rooms and equipment together.

Staff and resources

Each employee with their own schedule, services, prices and login, plus shared resources such as rooms or vehicles that limit what can be booked at once.

Payments and deposits

Full payment, deposit or pay on arrival through Stripe, PayPal or WooCommerce checkout, with cancellation windows, refunds and no-show fees following your written policy.

Reminders and notifications

Email, SMS and WhatsApp messages for confirmation, reminder, reschedule and follow-up, sent from a real server cron so they go out on time.

Calendar sync

Two-way sync with Google Calendar and Outlook, so private events block slots and new bookings appear on the phone, with alerts when a connection expires.

Online meetings

A Zoom or Google Meet link created for each virtual appointment, added to emails and calendar invites, and updated or cancelled when the booking changes.

Typical projects

Booking systems we build

01

A clinic or salon with several practitioners

Services with different durations per staff member, room allocation, intake forms, deposits for long treatments and a front-desk view of the whole day.

02

Consultations and coaching across time zones

Slots shown in the visitor's local time, a video link per session, packages of sessions paid up front and rescheduling within limits you set.

03

Classes, workshops and events

Group capacity, waiting lists, recurring sessions, per-seat pricing and attendee lists for the instructor, with tickets or passes sold through WooCommerce.

04

Rentals and tours

Day or hour-based hire with stock counts, turnaround time between bookings, seasonal pricing, add-ons such as insurance or guides, and security deposits taken at checkout.

In depth

The decisions behind a booking system

Which plugin for which kind of booking

Amelia and Bookly are appointment systems: services, employees, a step-by-step booking form and their own admin calendar. Amelia ships more in one package, including events and packages of appointments. Bookly keeps a small core and adds capabilities through separate add-ons, so you install what you use and maintain more moving parts. WooCommerce Bookings works differently. A booking is a product with availability rules, person counts and resources, sold through the normal checkout, which makes it the natural choice for rentals, tours and anything that shares a cart with other products. Simply Schedule Appointments is the quickest to set up and suits one-to-one meetings in the style of a hosted scheduling link.

Time zones and daylight saving

We store every appointment as an exact moment in UTC and convert at the edges. The choice that matters is whose clock a service follows. An in-person haircut belongs to the salon's time zone whatever the customer's phone says. A video consultation should be shown in the customer's zone and the consultant's zone at once. Recurring bookings keep their rule in local wall-clock time, so a weekly 9 am stays at 9 am after the clocks change. We test with dates either side of a daylight saving switch, because that is where the one-hour bugs live.

How double bookings really happen

There are three causes. The first is a race: two checkouts read the same free slot before either writes. The fix is to check availability again inside the same database transaction that creates the booking, or to hold the slot for a few minutes once it enters the cart. The second is caching, where a page cache serves yesterday's availability, so slot requests must bypass it. The third is calendar sync. A private event in Google Calendar or Outlook only blocks a slot once the site knows about it, and a staff member's expired sign-in can stop sync without any visible error. We add a check on each connection and warn an admin when one goes quiet.

Reminders depend on cron

WordPress runs scheduled tasks when someone visits the site. On a quiet site a reminder due a day ahead can go out hours late. We replace that with a server cron, queue messages so one failed SMS does not block the rest, and log what was sent to whom. It is unglamorous work, and it separates reminders customers rely on from reminders they ignore.

Where custom code begins

Typical triggers: a booking that needs two resources at once, pricing that depends on duration and season together, approval steps, staff commission reports, or bookings created by another system. We build these as a companion plugin on the booking plugin's hooks and, where it has one, its API. When scheduling is the core of the business and the rules keep growing, a Laravel application with WordPress as the marketing site is often the calmer long-term choice. For bookings that feed a customer database, see WordPress CRM integration.

Process

How we get to the first live booking

  1. 1

    Write the booking rules

    Services, durations, staff, rooms, buffers, prices and policies go into one document, including the odd cases your front desk handles from memory.

  2. 2

    Match a plugin to the rules

    We test the shortlist against your hardest rule, not your easiest, and recommend the plugin that needs the least custom code.

  3. 3

    Configure and connect

    Booking forms, payments, notifications, calendar sync and meeting links are set up on staging with real staff accounts and test cards.

  4. 4

    Try to break it

    We book the same slot from two browsers, change time zones, cross a daylight saving date, cancel late and disconnect a calendar to see what happens.

  5. 5

    Go live with existing bookings

    Appointments already in the diary are imported, staff get a short walkthrough and we watch the first week of bookings, reminders and sync closely.

Deliverables

Handed over at launch

  • Booking rules documented in plain language
  • Slots that respect staff, rooms and buffers together
  • Payments, deposits and refunds matching your policy
  • Calendar sync with alerts when a connection drops
  • A staff guide for the daily calendar and exceptions
FAQ

Booking system questions clients raise

Amelia, Bookly or WooCommerce Bookings: which fits us?
Amelia or Bookly for appointments with named staff, such as clinics, salons and consultants. WooCommerce Bookings for rentals, tours, rooms and anything sold alongside other products. Simply Schedule Appointments when you want simple one-to-one scheduling with little setup. We confirm the choice by testing your hardest booking rule on each candidate.
Can bookings sync with our staff's Google and Outlook calendars?
Yes, in both directions. New bookings are written to each staff member's calendar, and their private events block those times on the site. Each person connects their own account once. We add monitoring because a revoked or expired connection is a common hidden cause of double bookings.
How do you handle customers in different time zones?
The booking form detects the visitor's time zone and shows slots in their local time, with the option to change it. Confirmations and reminders state the time and zone explicitly, and calendar invites carry the exact moment. For in-person services we can lock everything to the venue's time zone instead.
Can we take a deposit and charge the rest later?
Yes. You can take a fixed or percentage deposit at booking and collect the balance online before the appointment or in person. Cancellation windows, refund rules and no-show charges are configured to follow your policy, and the terms are shown at checkout so customers see them before paying.
We have bookings in another tool. Can they be moved?
Usually, yes. We export future appointments, customers and staff schedules from the old system, map services and durations, and import them on staging first. Past history can come across as records too. Customers keep their appointment times, and updated confirmation emails are sent only if you want them.
What makes a booking project larger or smaller?
The number of services and staff matters less than the number of special rules. Shared resources, variable pricing, several locations, group bookings and connections to other systems each add work. A single-location appointment setup on an existing site is a short job. The free quote breaks the scope into milestones.
Start a project

Describe your hardest booking rule

Tell us what you book, who delivers it and where today's system lets you down. We reply within one business day with a recommended setup and a free quote.

  • Free consultation and quote
  • NDA on request
  • You own the source code
  • Reply within one business day
Add budget and timeline optional, helps us quote faster

This form is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.