WooCommerce bookable products – accepting bookings on your store

WooCommerce bookable product featured image

If you want to take bookings on your WooCommerce site, you need to turn a standard product into a bookable product. This article walks through how to do exactly that, for both date-based rentals and time-based appointments.

WooCommerce doesn’t include a bookable product type by default, so you’ll need a plugin. Throughout this article, we’ll use the Bookings for WooCommerce plugin.

Bookings for WooCommerce featured image

Bookings for WooCommerce

Never miss a booking - let your customers book 24/7

Find Out More

Online booking is now how customers expect to reserve and pay. The global online booking systems market was worth $13.8 billion in 2025 and is forecast to reach $31.6 billion by 2034, with appointment booking one of its fastest-growing segments, according to industry research from Dataintelo. But dedicated systems and booking SaaS can work out to be expensive to run – which is why a WooCommerce plugin fits the bill.

After completing this tutorial:

  • Users will be able to:
    • Pick dates or times from a calendar to book your products
    • See the total cost calculated automatically before they check out
    • Complete their booking through the standard WooCommerce checkout
  • As the store owner or admin, you’ll be able to:
    • Accept payments for bookings, rentals, and appointments online
    • Set availability so you never get a double booking
    • Manage every booking from your WordPress dashboard
  • As a bonus, we’ll also look at how to:
    • Add optional extras like insurance or equipment hire
    • Take deposits instead of full payment upfront

In this tutorial, we’ll assume that you already have WordPress and WooCommerce installed and ready to go.

Watch the video below or continue reading the article for written step-by-step details.

Why use a bookings plugin, not a product options plugin?

Bookable products need to manage time. They have to track which dates or slots are already taken, prevent two customers booking the same slot, and calculate a price based on duration. A standard WooCommerce product can’t do any of this on its own.

A product options or add-ons plugin can look like a simpler alternative, but they do a different job. They let you add extra fields to a product – a date picker, a dropdown, a text box – but only collect what the customer types. They don’t check availability, hold stock against a calendar, or stop the same date being sold twice.

A bookings plugin gives you a true booking product type instead. It manages a live calendar, enforces quantity limits per slot, applies buffer periods between bookings, and works out the cost automatically. That’s the difference between collecting a date and actually managing a booking.

Product options still have their place – just as a complement, not a replacement. Once your booking engine is handling availability and pricing, an add-ons plugin is ideal for selling extras alongside the booking, like insurance or a welcome pack. We’ll cover that combination later in this article.

How do you add bookable products to WooCommerce?

Bookings for WooCommerce adds date-based and time-based bookings to your store, and it’s compatible with all themes, page builders, and WooCommerce payment gateways.

Once you’ve purchased Bookings for WooCommerce:

  • Download the plugin’s zip file by clicking on the link on your order confirmation screen or in your welcome email. You’ll receive the email automatically a few seconds after you’ve completed the purchase
  • Go to Plugins > Add New in your WordPress dashboard
  • Click on the ‘Upload Plugin’ button
  • Drag and drop the plugin’s downloaded zip file into the ‘Choose File’ area and click ‘Install Now’
  • When the plugin has uploaded, click the ‘Activate Now’ button

With the plugin activated, you can create your bookable product in the same way you would any other product.

How do you create a bookable product?

Creating a bookable product takes four steps. Add a new product, set its type, define how it’s measured, and set the price.

  1. Set product type to ‘Booking’

    With Bookings for WooCommerce active, set the product type to ‘Booking’ in the ‘Product data’ sectionWooCommerce booking product type

  2. Set the booking unit

    Choose your booking unit, e.g. ‘Day’, ‘Night’ or ‘Week’. This is how the booking length is measured

  3. Define the booking duration

    Decide how long bookings can last by setting optional minimum and maximum lengths

  4. Set the price

    Enter the price in the ‘Standard price’ field. This figure will be multiplied by the duration of the booking to give a total priceWooCommerce bookable product price per week

Publish your product. You now have a working bookable product with a calendar where customers can select their dates and be charged automatically. Now let’s look at how to configure it for the two main types of booking.

How do you create a date-based bookable product?

Date-based bookings suit anything a customer takes for whole days, nights, or weeks, where only one customer can have it at a time. Good candidates include:

  • Holiday lets, cottages, and apartments
  • Hotel, B&B, and guesthouse rooms
  • Vehicle hire, such as cars, vans, and motorhomes
  • Equipment hire, such as bikes, tools, or camera kit

You set the booking unit and a few parameters, and the plugin handles the calendar.

WooCommerce bookable product - daily booking example

When you choose ‘Booking’ as the product type, a set of new tabs appears in the ‘Product data’ section: ‘Bookings Settings’, ‘Availability’, ‘Pricing’, and ‘External’ (plus ‘Time Slots’). The unit, date, and price options below are all on the ‘Bookings Settings’ tab.

Booking unit

The booking unit is how you measure the length of a booking. You can choose ‘Day’, ‘Night’, or ‘Week’.

Choose ‘Day’ when bookings start and end on the same day, such as tool or equipment hire. There’s a daily booking demo here.

Choose ‘Night’ when bookings run overnight, which suits hotels and accommodation. There’s a nightly booking demo here.

Choose ‘Week’ when bookings are measured in weekly blocks, such as holiday rentals. There’s a weekly booking demo here.

Bookings start day

Specify a day of the week that bookings must start on, or choose ‘Any’ if it doesn’t matter. This works with any booking unit.

WooCommerce bookable product setting to define what day of the week bookings begin

This is useful if you rent a weekend cottage and only want bookings to start on a Friday. It also helps if you run a weekly rental with a fixed changeover day.

Minimum and maximum booking length

Set a minimum booking length to stop customers booking for too short a period. Enter ‘2’ as the minimum with a ‘Night’ unit, for example, to require at least a two-night stay.

Min and max booking length settings

Set a maximum booking length to cap how long a booking can run. Enter ‘3’ as the maximum with a ‘Week’ unit to prevent bookings longer than three weeks.

Postpone start

Prevent bookings from starting immediately by setting a minimum notice period. Enter ‘2’ in the ‘Postpone start’ field if you need two days to prepare before any booking begins.

Setting to define minimum notice period for booking

The ‘Postpone start’ setting is always measured in days, whatever booking unit you’ve chosen.

Buffer period

Add a buffer period to block off time at the end of each booking. This gives you a turnaround window to clean and prepare before the next customer arrives.

Setting to define buffer period for bookable products

Set the buffer to ‘1’ on a weekly holiday villa, for example, and a booking that starts on a Tuesday for one week will end on the following Monday. The buffer period is always measured in days.

For overnight bookings, the ‘Allow overlaps’ setting does the opposite. Enable it to let a new booking start on the same day another ends, so a guest can check out and another check in on the same date.

Last bookable date

Limit how far into the future customers can book by setting the ‘Last bookable date’. This is handy if you only take bookings up to the end of a given season. You can update it at any time.

Last bookable date setting

How do you create a time-based bookable product?

Time-based bookings let you take appointments measured in minutes or hours rather than days. They suit any business that sells the same resource in slots across a single day. Good candidates include:

  • Salon, barber, and spa appointments
  • Health and therapy sessions, such as physio or dental
  • Consultations, coaching, and tutoring
  • Hourly hire of courts, studios, or meeting rooms

The plugin handles this with its time slots feature.

WooCommerce product bookable by time

To turn a bookable product into a time-based one:

  • Step #1: Set your booking unit to ‘Day’
  • Step #2: Enable ‘Time Slots’ on the ‘Time Slots’ tab
  • Step #3: Set how long each slot lasts, along with your opening and closing times
  • Step #4: Define your pricing per slot

Save your product. Customers can now pick a date and then choose an available time slot, with the cost calculated for them.

Enable time slots setting for bookable products

There’s a full guide in the time slots documentation, and a dedicated tutorial on taking appointments in WooCommerce.

Time slots come with several options to match the booking experience to your business:

  • Choose from five time-selector views, including a dropdown, a visual grid, and a diary view
  • Charge per slot, with an optional cap so a full day never costs more than your day rate
  • Let customers book consecutive slots in one go, with optional minimum and maximum durations
  • Offer a single-click ‘whole day’ option that books every slot from open to close
  • Override the price or availability for any individual slot, with optional date ranges for seasonal rates

Some products work either way. A kayak might be hired by the hour or for a whole day, and the ‘whole day’ option covers exactly that case.

How do you prevent double bookings?

Set the ‘Max bookings per unit’ field so you never oversell. It sits in the ‘Units’ group on the ‘Bookings Settings’ tab and controls how many separate bookings can be made for the same date or slot.

Set maximum items available per booking unit

Enter the number of units you have available. If you rent out a single room, set it to ‘1’ so each date can only be booked once. If you hire out 10 bikes, set it to ’10’, and customers can book up to 10 on any given day before that date closes. The field defaults to ‘1’.

How do you control pricing and discounts?

Bookings for WooCommerce calculates the base price by multiplying your standard price by the booking duration. On top of that, you can set seasonal rates, discounts, and flat fees to match how you actually charge.

Block out dates

Reserve dates for yourself so they can’t be booked. On the ‘Pricing’ tab, click ‘Add Date Range’ in the ‘Custom Pricing’ section, set the start and end dates and/or select specific days of the week and set the cost to ‘0’. Customers won’t be able to select any date and/or day in that range.

Block out bookable days and dates

Set seasonal or peak pricing

Charge more during peak periods, or less in the off-season, by adding a date range in the ‘Custom Pricing’ section on the ‘Pricing’ tab. Enter the cost per unit for that period in the row’s cost field.

Seasonal pricing setting

Rows higher in the list take priority, so if two date ranges overlap, the topmost rule wins. This is ideal for raising rates over public and school holidays, or reducing them in quieter months.

Offer discounts

Reward longer bookings with a duration-based discount, set up in the ‘Discounts’ section on the ‘Pricing’ tab. Enter the size of the discount in the ‘Discount Rate’ field, choose how it’s applied in the ‘Discount Type’ field – percentage, fixed, or per unit – and set the qualifying duration in the ‘After’ field.

Discounts for bookable products

Use the ‘Apply From’ field to choose ‘All’, which discounts the whole booking, or ‘Partial’, which discounts only the units beyond the threshold. You can add multiple discount rows for tiered pricing, such as 10% after three nights and 20% after seven. There’s a discounted booking demo here.

Set a flat rate

Charge a single fixed fee regardless of duration by enabling ‘Flat rate’ in the ‘Prices’ group on the ‘Bookings Settings’ tab. This suits bookings where the length doesn’t affect the price, such as event tickets or a fixed-price transfer.

Flat rate pricing setting

How do you manage and sync your bookings?

Once your bookable products are live, you’ll want to manage them from the back end and keep your availability accurate everywhere customers can find you. Bookings for WooCommerce gives you a full set of admin tools, plus calendar sync with the major platforms.

Manage bookings from the back end

View, edit, and manage every booking from the Bookings menu in your WordPress dashboard. A global calendar gives you a single overview of availability across all your bookable products, while a per-product calendar lets you drill down by day.

Export your bookings to a CSV file for any date range from the Bookings menu. You can also have the CSV attached automatically to the new order admin email.

Create bookings manually

Add a booking yourself when a customer books by phone or in person. For a standard date-based booking, create the order first under WooCommerce > Orders, then add the booking under Bookings > Add Booking, select the product, choose the dates, and publish. You can then link the booking to the order from its ‘Order details’ section.

List of WooCommerce bookings

For a product that uses time slots, add the booking straight from the product. Open it under Products, click the ‘Availability’ tab, click the date you want, then choose a slot and click ‘Add booking’.

To change a booking later, open it under Bookings and click ‘Edit booking’ to update the dates or quantity. This is available while a booking is pending or on hold. There’s a full walkthrough in the guide to adding and editing bookings manually.

Sync with Google Calendar

Keep your bookings in sync with Google Calendar automatically. New bookings create calendar events, and edits or cancellations update them. Two-way sync means changes in Google Calendar feed back to your store, so your availability stays accurate in both places.

Sync with Airbnb, Booking.com, and VRBO

Sync your booking calendar with any platform that uses the iCal format, including Airbnb, Booking.com, and VRBO. On the ‘External’ tab, enable ‘Sync Calendars’ to generate an .ics export URL for the product, then paste each platform’s own .ics feed into the calendar URLs table – up to four per product.

Dates blocked on those services are then marked unavailable on your store. Sync works best when the booking unit is ‘Day’ and ‘Max bookings per unit’ is ‘1’.

Let customers search availability

Add a front-end search so customers can check availability by date before they commit. You can also add a calendar to your shop page so users filter all your products by the dates they need.

Bonus #1: Add optional extras with Add-Ons Ultimate

Increase your average order value by offering extras alongside each booking. Bookings for WooCommerce integrates with Product Add-Ons Ultimate so you can add options like insurance, equipment hire, or a welcome pack.

WooCommerce bookable product with add-on fields

Each extra can be charged as a one-off fee or per booking unit, such as per night. The two plugins are available together in the Bookings and Product Add-Ons Bundle. They give you the best of both worlds – you can create genuine bookable products and offer additional upsells.

Bookings and Product Add-Ons Ultimate Bundle featured image

WooCommerce Bookings and Product Add-Ons Bundle

Create the ultimate bookings site in WooCommerce

Find Out More

Bonus #2: Take deposits on bookings

Collect a deposit at the time of booking and take the balance later, which is useful for high-value rentals. This works through the Deposits and Part Payments plugin.

You can set a percentage or fixed deposit, optionally offer a discount for payment in full, and send automatic reminders when the balance is due. There’s a full walkthrough in our guide to accepting deposits on bookings in WooCommerce.

Funway Rentals Samoa ★★★★★

Simple, effective and easy to understand plugin that made it easy for customers to quickly book their car on our car rental site. Seasonal rates and general discounts are automatically calculated. Not to forget the support is excellent

Frequently asked questions

What types of WooCommerce bookable products does the plugin support?

Bookings for WooCommerce supports daily, overnight, weekly, and time-based bookings. That makes it suitable for property rentals, equipment hire, appointments, and facility reservations. For date-based bookings, customers pick their dates from a calendar. For time-based bookings, you divide the day into slots and customers choose a start time, a duration, or both.

Can customers book directly from my store?

Yes. Customers select their dates or times on the product page, see the total cost calculated automatically, and check out through standard WooCommerce. There are no redirects and no third-party booking platforms involved.

How does the plugin prevent double bookings?

You set the available quantity for each bookable product per day, night, week, or time slot. Once that quantity is reached, those dates are automatically blocked in the calendar. You can also add buffer periods between bookings for turnaround time.

Can I take time-based appointment bookings?

Yes. The time slots feature divides a bookable day into fixed-length windows. You set a slot duration and your opening hours, then choose how the selector appears, with options including a dropdown, a visual grid, and a diary view. Per-slot pricing and availability overrides are also supported.

Can I take deposits instead of full payment?

Yes. By integrating with the Deposits and Part Payments plugin, you can collect a deposit at the time of booking and take the remaining balance later. This is particularly useful for high-value rentals or reservations made well in advance.

Does the plugin sync with Google Calendar, Airbnb, and Booking.com?

Yes. You can sync with Google Calendar, including two-way sync, so bookings are added and updated automatically. You can also sync with any service that uses the iCal format, such as Airbnb, Booking.com, and VRBO.

WooCommerce bookable products – recap

In this article, we looked at how to create bookable products in WooCommerce for both date-based rentals and time-based appointments. We covered the parameters that refine a booking, how to prevent double bookings, and how to set seasonal pricing and discounts. We also looked at how to manage and sync your bookings, and how to add extras and take deposits.

All you need to get started is the Bookings for WooCommerce plugin. It lets you accept bookings, rentals, and appointments through standard WooCommerce products, with automatic pricing and full control over availability.

Bookings for WooCommerce featured image

Bookings for WooCommerce

Never miss a booking - let your customers book 24/7

Find Out More

Bookings for WooCommerce is compatible with all themes and page builders, including Astra, Flatsome, and Woodmart, and page builders like Elementor and Divi. If you have any questions, our world-class support team is on hand to help. And it’s backed by a 14-day money-back guarantee, so you can try it risk-free.

Leave a Reply

Your email address will not be published. All fields are required.