Booking Slots for WooCommerce
Sell appointments, classes and day bookings from normal products: schedules, time slots, capacity, people, a calendar, confirmations and reminders.
- Block cart and checkout
- Classic cart and checkout
- High-performance order storage
- WooCommerce 9 – 11
- WordPress 6.6 – 7.1
- PHP 7.4+
What Booking Slots does
Turn any simple product into something customers book: a haircut every thirty minutes, a two-hour workshop for up to eight people, a cabin by the night. No separate booking system, no extra product type: the normal cart, checkout, orders and emails do the rest.
Booking Slots features
On the product
- Tick "Bookable" and choose what a booking is: N minutes, hours or days
- Weekly schedule with opening hours per weekday, blocked dates and ranges
- Capacity per slot; optionally count people with a minimum and maximum and a per-person price
- A gap between slots, notice needed before the start, how far ahead people may book
- Day bookings can span several days with a maximum length and a per-day price
On the product page
- A calendar showing which days have something free; pick a day, then a slot (spaces left are shown)
- Day bookings pick one day or a range; the price updates as you choose
- Works on block themes and classic themes, no page builder needed
Orders
- The slot is checked when it is added, again at checkout, and taken from availability as soon as the order is placed
- Paid orders confirm the booking; cancelled, failed or refunded orders free the slot
- The order line shows the booking; the order screen has a Bookings box
Emails and calendar files
- Confirmation email with an .ics calendar file attached, a reminder a set number of hours before, and a note to the shop when a booking is made or cancelled; all three editable under WooCommerce > Settings > Emails
- My Account > Bookings lists upcoming and past bookings with "Add to calendar" and, within the window you allow, "Cancel"
Managing
- WooCommerce > Bookings: list with status, product, date and text filters; a month calendar with counts per day; one booking's details, notes, status changes, resend; manual bookings (walk-ins, phone bookings) with an override for full or short-notice slots
- Past bookings are marked complete automatically
For developers
Filters bslt_product_config, bslt_slots, bslt_booking_cost, bslt_email_rows, bslt_settings_fields; actions bslt_booking_created, bslt_booking_confirmed, bslt_booking_cancelled, bslt_booking_complete, bslt_booking_status, bslt_booking_reminder. Table wp_bslt_bookings.
Three businesses, three bookable products
There is no booking product type. A simple product gets a Booking tab, you tick Bookable, and the calendar appears inside the add-to-cart form. The cart, checkout, orders and emails are the normal WooCommerce ones. Here is how three different businesses set the same tab.
| Business | Booking tab | What the customer books |
|---|---|---|
| Hair salon | 30-minute slots, Tuesday to Saturday 9 to 6, capacity 1, 10-minute gap, 2 hours' notice | A day on the calendar, then a free slot; taken slots are gone |
| Pottery studio | 2-hour slots on three evenings, capacity 8 people, $45 per person, minimum 1, maximum 4 | A slot showing "3 spaces left" and a people count that updates the price |
| Lakeside cabin | Day bookings, 2 to 7 nights, $140 per night, blocked over Christmas | A check-in and check-out day; the price updates as the range grows |
| Walk-in or phone booking | WooCommerce > Bookings > Add booking, with an override for full or short-notice slots | Nothing; staff record it and it comes off availability |
| A customer who cannot make it | A cancellation window of, say, 24 hours | "Cancel" in My Account > Bookings while the window is open, then books again |
The slot is checked when it goes in the cart, again at checkout, and removed from availability the moment the order is placed. A paid order confirms the booking and sends a confirmation with an .ics calendar file; a reminder goes out a set number of hours before; cancelled, failed or refunded orders free the slot, and WooCommerce's unpaid-order timeout frees slots held by abandoned checkouts. Past bookings mark themselves complete.
What it does well, and what it leaves to other tools
The large booking extensions add a product type of their own, staff and resource management, and a calendar sync. This plugin keeps bookings inside products you already have, which is why a store that sells both goods and classes can run it without a second checkout. Capacity, people with a per-person price, gaps, notice periods and how far ahead people may book are all per product. Everything lands in WooCommerce > Bookings: a filterable list, a month calendar with counts per day, one booking's notes and status, resend, and manual bookings. Times are in the store timezone and the calendar file carries the right offset.
What it does not do: staff or room resources with their own schedules, a two-way sync with Google or Outlook calendars (customers get an .ics file instead), online rescheduling (customers cancel inside the window and book again), and deposits or part payment. Bookable products must be simple products, not variable ones. For paid add-ons on a booking, such as a longer session or materials, Product Add-ons works on the same product.
How to set up Booking Slots in WooCommerce
- 1
Upload the plugin to
/wp-content/plugins/or install it from the Plugins screen. - 2
Activate it.
- 3
Edit a simple product, open the Booking tab, tick "Bookable" and set the schedule.
- 4
Review WooCommerce > Settings > Bookings and the three emails under Settings > Emails.
Questions about Booking Slots
Does it work with the block checkout?
Yes. The calendar sits inside the add-to-cart form on both block and classic product pages, and bookings flow through the block and classic cart and checkout.
Which timezone are slots in?
The store timezone (Settings > General). Customers see times in that timezone; the calendar file carries the right UTC offset.
Can two customers book the same slot?
Only up to the capacity you set. Pending (unpaid) orders hold their slot; WooCommerce's unpaid-order timeout cancels abandoned ones and frees it.
Can I take bookings over the phone?
Yes: WooCommerce > Bookings > Add booking. It does not create an order; take payment however you like.
Can customers reschedule?
They can cancel within the window you allow and book again. Staff can change anything from the booking screen.
Booking Slots changelog
- 1.0.0
- Initial release.
Plugins that pair with Booking Slots
Product Add-Ons
Extra options on products: text, dropdowns, checkboxes, file uploads and more, each with its own price.
View plugin
Order Delivery Date
Let customers choose a delivery date and time slot at checkout. Set delivery days, lead time, a daily cut-off and closed dates.
View plugin
Custom Order Statuses
Add your own order statuses such as Packed, Awaiting pickup or Ready to ship, with colours, bulk actions and safe deletion.
View plugin