Skip to content
GPLWP Guides

How to accept online bookings on a WordPress site

Booking & Events Time About 60–90 minutes 6 steps Updated 12 Sep 2026

BOOKING & EVENTS
The short answer

WordPress does not include online bookings by default, so you need either a manual form-and-calendar process or a booking plugin. The manual route suits occasional requests; a plugin is safer when customers need live availability, payments and instant confirmations.

The route
  1. 01Define your booking rules
  2. 02Choose the manual route
  3. 03Install a booking system
  4. 04Create the bookable item
  5. 05Configure checkout and notices
  6. 06Test every booking path

What you need

  • Administrator access to the WordPress site
  • The services, rooms or events you want customers to book
  • Your opening hours, blackout dates, booking duration and cancellation rules
  • An email account that can reliably send notifications
  • A payment account if customers must pay when booking

Define your booking rules

Write down what is being booked, whether customers choose a date, a time or both, how many people or resources can be booked, and whether every request is accepted automatically. Add buffer time between appointments, minimum notice, maximum booking range, blackout dates and cancellation terms.

Set the site timezone before entering availability. WordPress uses the timezone in Settings and General to calculate and display dates and times, so a wrong setting can move appointments by an hour or more around daylight-saving changes.

Choose the manual route

For a small number of enquiries, create a booking request form asking for the customer’s name, email address, service, preferred date, preferred time, number of people and any useful notes. Review each request yourself, check a shared calendar, then reply with confirmation or an alternative.

This route can be enough for a consultant or a venue with a few monthly bookings, but it is not live availability. Customers can submit the same slot at the same time, payments and refunds need separate handling, and someone must keep the calendar and website availability in step. Move to a booking plugin when missed requests or double bookings would cost you money.

Install a booking system

For instant reservations, install a booking plugin that supports the type of booking you offer. WordPress core does not provide the availability rules, booking records, payment flow or customer notifications needed for this job; plugins add that functionality to WordPress.

In the dashboard, go to Plugins and Add New, search for a suitable booking plugin, review its compatibility and documentation, then install and activate it. For a ZIP file, use Upload Plugin on the same screen.

If you already use Elementor, JetBooking For Elementor is a practical shortcut. It provides Elementor booking forms with live availability, seasonal pricing, payment support and email notifications, so you can build the booking interface without assembling those parts separately.

Create the bookable item

Add each service, room, appointment type or event as a separate bookable item. Enter its duration, price, capacity and the information customers need before they book. If different staff members, rooms, vehicles or equipment have separate availability, model them as separate resources rather than one generic calendar.

Set recurring working hours first, then add date-specific closures, holidays and special opening hours. Booking systems commonly support availability by date, time slot, range and resource; WooCommerce’s booking documentation also separates availability, people, costs and resources because each affects whether a slot can be sold.

Configure checkout and notices

Ask only for information you need to fulfil the booking. Configure the confirmation, pending, cancellation and administrator emails, then connect the payment method if you require payment or a deposit. State clearly whether the reservation is confirmed immediately or only after you approve it.

Do not assume that adding a booking to a cart means it has been paid for. Some systems temporarily hold availability while a customer is checking out; abandoned carts can leave slots looking unavailable until the system clears them. WooCommerce documents this behaviour and notes that failed scheduled tasks can prevent inactive holds from being removed.

Test every booking path

Make a test booking on a phone and desktop using a customer email address. Check the displayed timezone, available slots, capacity, price, payment result, confirmation email, administrator notification, calendar entry and booking record. Then cancel the booking and confirm that the slot becomes available again according to your rules.

Try two browsers to book the same last slot, an abandoned checkout, a date inside a blackout period, a booking outside your notice window and a booking that crosses midnight. Conflicting availability rules can make slots unexpectedly available or turn an entire calendar grey, so test the real combinations before publishing.

Once the flow works, add the booking form to a clear page, link to it from your navigation and service pages, publish your cancellation and privacy information, and monitor the first bookings manually.

The fast route

Let JetBooking For Elementor do it

Elementor booking forms with live availability, seasonal pricing, and payments for reservations and appointments.

Get JetBooking For Elementor

Sources

  1. wordpress.org /documentation/article/settings-general-screen/?utm_source=o…
  2. wordpress.org /documentation/article/manage-plugins/?utm_source=openai
  3. woocommerce.com /documentation/products/extensions/woocommerce-bookings/?utm…
  4. woocommerce.com /document/introduction-to-woocommerce-bookings/managing-wooc…
  5. woocommerce.com /documentation/products/extensions/woocommerce-bookings/trou…

Questions

Can WordPress accept bookings without a plugin?
Not as a complete booking system. WordPress can publish a page and receive information through a form, but it does not natively manage live availability, overlapping reservations, payment status, booking records or automatic confirmations. You can handle occasional requests with a form and a shared calendar, but regular or paid bookings need a booking plugin or an external booking service.
How do I stop customers double-booking the same time?
Use a booking system that stores availability and blocks a slot when a booking is confirmed. Define capacity and resources accurately, test simultaneous bookings, and keep external calendar synchronisation in mind because a delayed or one-way sync can leave a gap. A manual form cannot reliably prevent two people requesting the same slot without someone checking both requests before confirming.
Should I require payment before confirming a booking?
Require payment before confirmation when the appointment has a fixed price and no manual approval is needed. Use an approval or deposit flow when you need to review the request, check a resource or discuss custom requirements. Make the status clear in the confirmation email, and test failed payments, refunds, cancellations and abandoned checkout holds before accepting real bookings.
Why are available booking times showing in the wrong timezone?
The usual cause is a mismatch between the WordPress site timezone, the booking plugin timezone, the customer’s browser timezone or an external calendar. Set the WordPress timezone to the city that matches your business, choose one display convention, and test a booking around a daylight-saving change. WordPress’s General settings control how dates and times are calculated and displayed.