How to accept bookings on a WordPress site
WordPress does not include a booking calendar or availability rules, so you need a booking plugin or a theme with booking features. Set your hours, services, buffers, notifications and payment rules, then publish the booking form and test it before sending customers there.
- 01Choose the booking workflow
- 02Set the site timezone first
- 03Install and configure a booking tool
- 04Build the booking form
- 05Publish the calendar page
- 06Connect notices and payments
- 07Test the complete customer journey
What you need
- Administrator access to the WordPress site
- A clear list of services, prices and appointment lengths
- Your working hours, breaks, holidays and booking limits
- A reliable email address for booking notifications
Choose the booking workflow
Decide whether visitors should book instantly, submit a request for your approval, or pay before the appointment is confirmed. Also decide whether you need services, staff members, group capacity, cancellation rules, deposits, reminders or calendar synchronisation.
Do not start with a generic contact form if customers need to see live availability. A form can collect requests, but it will not reliably block a time slot or prevent two people choosing the same appointment.
Set the site timezone first
In WordPress, open Settings and then General, and set the site timezone to the location where the business operates. Use a named city or region rather than a fixed UTC offset where possible, so daylight-saving changes are handled correctly.
Booking plugins commonly use the WordPress timezone when calculating slots. If it is wrong, the calendar, confirmation email and admin booking can show different times. This is one of the problems most likely to appear after a site moves host or serves customers in another country.
Install and configure a booking tool
Install a booking plugin from Plugins in the WordPress dashboard, or use a booking-capable theme if that is part of your site setup. Create each service with its duration, price and any preparation or clean-up time. Add your weekly availability, staff capacity, minimum notice and how far ahead customers may book.
Block holidays, private appointments and other unavailable periods. Enable server-side availability checks or double-booking protection when the plugin provides them. Booking systems need to re-check a slot when the form is submitted, not only when the calendar is first displayed.
Build the booking form
Keep the form short. Usually you need the customer name, email address, phone number, selected service, date, time and a consent checkbox. Add a notes field only if you will actually read it before the appointment.
Show the appointment duration, price, location, rescheduling policy and what happens after submission. If bookings need approval, label the button and confirmation clearly so a request is not mistaken for a confirmed appointment.
Publish the calendar page
Create a page such as Book an appointment, insert the booking block or shortcode supplied by your plugin, and add it to your menu and contact buttons. Check the page on a phone as well as a desktop, because date pickers and time-slot lists can become difficult to use on narrow screens.
Keep a separate confirmation page or confirmation message. Include the appointment details, cancellation instructions, contact information and a calendar file or calendar link if your booking tool supports it.
Connect notices and payments
Configure the email sent to the customer and the notification sent to the business. Use an address on your own domain where possible, and send a test message before launch. If messages do not arrive, check spam, the site mail configuration and your email provider rather than assuming the booking failed.
If you take payment, connect the supported payment gateway and decide whether payment confirms the booking or merely records a deposit. Test successful, failed and abandoned payments. For a live site, also test a cancellation and a reschedule so you know whether the slot becomes available again.
Test the complete customer journey
Make a real test booking in a private browser window. Confirm that an unavailable time cannot be selected, a booked time disappears or becomes blocked, the correct timezone appears in every message, and the booking is visible in the WordPress dashboard.
Then test two people attempting the same slot, a booking near a daylight-saving change, a blocked holiday, a mobile screen and a failed email. If you only check the calendar display, you can miss the Friday problem where two submissions are accepted for one slot.
Fast way: For a beauty business, Noda is a practical shortcut because it combines a beauty-focused design with built-in appointments, portfolio layouts and testimonials. Install and activate it, configure the appointment settings, add your services and availability, then place the booking element on the page instead of assembling those parts separately.
Let Noda do it
Beauty-focused theme with built-in appointments, portfolios, and testimonials for makeup artists and salons.
Sources
- wordpress.org /plugins/whenpilot/?utm_source=openai
- wordpress.org /plugins/booking/?utm_source=openai
- wordpress.org /plugins/timetics/?utm_source=openai
Questions
- Can WordPress accept bookings without a plugin?
- WordPress core cannot provide live appointment availability, slot locking, booking records or booking notifications by itself. You can make a simple enquiry page with a form and confirm appointments manually, which is suitable for a low volume service. If customers must choose real-time slots or pay online, use a booking plugin or a theme with those features built in.
- How do I stop two customers booking the same time?
- Use a booking system that re-checks availability when the booking is submitted and marks the slot as unavailable after confirmation. A calendar display alone is not enough because two visitors can load the same free slot before either submits the form. Also account for staff capacity, appointment duration and buffer time between services.
- Why are booking times showing in the wrong timezone?
- The usual cause is a mismatch between the WordPress site timezone, the booking plugin timezone and the customer or staff calendar timezone. Set the WordPress timezone to the business location, use a named region where available, and check the timezone shown in confirmation emails and calendar exports. Test dates around daylight-saving changes before launch.
- Can customers pay when they book an appointment?
- Yes, if your booking tool supports a payment gateway or connects bookings to an ecommerce system. Decide whether the payment is a full charge, deposit or authorisation, and make the confirmation rule clear. Test failed payments, refunds, cancellations and abandoned checkouts because a payment status and an appointment status may be separate settings.
- Should I use a booking plugin or a booking theme?
- Use a plugin when booking is a core business function and you may change the theme later. A booking theme is quicker when its appointment system already matches your services and design, but changing themes can require migrating booking displays and settings. For a makeup artist or salon, a theme such as Noda can be a convenient fast route because appointments are included alongside portfolio and testimonial features.