How to accept bookings on a WordPress site
WordPress does not include a complete booking system with availability rules, conflict prevention, payments and reminders. A form is enough for low-volume, manually confirmed requests; for live time slots or paid appointments, use a booking plugin or a booking-ready theme.
- 01Choose your booking model
- 02Use a form for manual requests
- 03Add a booking system
- 04Set availability and booking rules
- 05Configure confirmations and payments
- 06Test the complete booking journey
- 07Take the fast theme route
What you need
- A WordPress site with administrator access
- Your services, prices, durations and opening hours
- A business email address for booking notifications
- A payment account if customers will pay online
Choose your booking model
Decide whether customers are requesting an appointment or confirming an available slot. Also decide whether you need one-to-one appointments, group events with limited capacity, deposits, full payment, staff calendars or approval before confirmation.
Write down each service, its duration, buffer time, price, available staff and cancellation rule. This prevents a common setup error: publishing time slots that are shorter than the service they are meant to contain.
Use a form for manual requests
For a small business with only a few bookings each week, create a booking or contact page with fields for the customer’s name, email, phone number, service, preferred date, preferred time and extra information. WordPress form tools can provide appointment or registration form layouts, but the exact fields depend on the form tool you use.
State clearly that the request is not confirmed until you reply. Check your calendar manually, email the customer with an available time, then add the confirmed appointment to your calendar. This route is cheap in complexity and works for request-only bookings, but it does not automatically stop two people choosing the same time, collect payment or show real-time availability.
Add a booking system
Use a booking plugin when customers must see live availability, reserve a slot, pay online, receive confirmations or book different services and staff. Configure the booking form on a page, usually by inserting the plugin’s block, shortcode or page element; the exact method varies by plugin. Booking systems commonly provide availability rules, customer records, notifications and payment or calendar integrations.
Choose a system that matches the job. An appointment tool suits salons and consultations, while an event tool should handle capacity, repeated dates and group registrations. Do not install several booking systems on the same page, because their calendars and confirmation emails can conflict.
Set availability and booking rules
Enter working hours, days off, holidays, service duration, padding between appointments, minimum notice, maximum booking window and the number of people or resources available. Add each service separately if different services use different durations or staff.
Set the WordPress site timezone under Settings and General, using a named city or region rather than relying on server time. Timezone mismatches can move appointments, make slots appear in the past or disable a calendar when the date changes. Support threads also commonly identify caching and misaligned availability settings as causes of booking calendars that stop working.
Configure confirmations and payments
Set the customer confirmation email, the administrator notification, reminder timing, cancellation instructions and the address that receives booking alerts. Add your phone number and a clear fallback instruction so customers can contact you if an email is missed.
If you take payment, connect the payment gateway supported by your booking system and confirm whether a booking is held before payment, after payment or only after manual approval. Use HTTPS, test a successful payment and test a failed or abandoned payment before sending visitors to the form.
Test the complete booking journey
Submit a booking as a customer on a phone and a desktop computer. Check the displayed timezone, available slots, service duration, confirmation page, confirmation email, administrator notification, calendar entry, payment status and cancellation process.
Then try to book the same slot twice, select a closed day, book just before the minimum notice period and submit the form with missing details. Clear or bypass page caching for booking pages if availability does not update. A Friday failure often comes from cached calendars, expired email credentials or a timezone that differs between WordPress and the booking service.
Take the fast theme route
For a salon or barber site, Coiffure is the faster route because it combines a salon-focused design with appointment booking, service showcase sections and customisable pages. Install and activate the theme from the WordPress dashboard, then use its supplied booking and page-building features to add services, opening hours and the booking page.
Still complete the availability, notification and payment checks above. A polished theme does not remove the need to test timezones, double-booking protection and email delivery before accepting real appointments.
Let Coiffure do it
Salon-focused theme with built-in appointment booking, service showcases, and customizable pages for hair and beauty businesses.
Sources
- wordpress.com /support/wordpress-editor/blocks/form-block/?utm_source=open…
- wordpress.org /plugins/yo-booking/?utm_source=openai
- wordpress.org /support/topic/timezone-and-recurring-events-issues/?utm_sou…
- wordpress.org /support/topic/booking-calendar-and-book-button-become-disab…
Questions
- Can WordPress accept bookings without a plugin?
- Yes, WordPress can collect booking requests through a form, but it cannot provide a complete live booking system on its own. You can ask visitors for a preferred date and time, check your calendar manually and confirm by email. This works for low booking volumes, but automated availability, double-booking protection, payments, reminders and customer self-service require a booking tool or a theme with booking functionality.
- What is the difference between a booking request and a confirmed booking?
- A booking request only records what the customer wants; a confirmed booking reserves a specific time, place or capacity. Make the distinction clear on the form and confirmation page. If you approve bookings manually, tell customers that submission does not guarantee the appointment. If your booking system confirms slots automatically, check how it handles unpaid, cancelled and abandoned bookings.
- Why are booking times showing at the wrong hour?
- Booking times are usually wrong because the WordPress timezone, booking plugin timezone, calendar timezone or customer timezone is not being handled consistently. Set the site to the correct named city or region, then check the plugin’s timezone and calendar integration settings. Daylight-saving changes and imported calendar events can expose the problem, so test dates in both summer and winter where relevant.
- How do I prevent two customers booking the same slot?
- Use a booking system that locks or marks a slot unavailable when a booking is accepted, and configure the correct staff, resource or event capacity. A basic contact form cannot prevent two visitors selecting the same time because it only sends separate messages. Test simultaneous or near-simultaneous bookings, and make sure caching does not serve an outdated availability calendar.
- Should customers pay when they book?
- Customers should pay at booking when the appointment is standard, the price is fixed and you want to reduce no-shows. Use manual approval or a payment link when the price depends on the request, availability needs checking or the service is bespoke. Whichever model you choose, explain when the booking becomes confirmed, what happens after a failed payment and how cancellations or refunds work.