How to Setup WooCommerce Bookings to sell Bookable products on your WordPress Website

Updated on By

WordPress was basically designed for creating blogging websites but then with the advanced tools and developments it became one of the people’s favorite platform to create their website. With plugins like WooCommerce and WP ecommerce, you can now create feature rich ecommerce website with unparalleled features.

If you want to create your hotel websites with online booking system, you can do so easily using the advanced tools available on the internet, without writing a line of code. The reasons to choose WooCommerce and WooCommerce bookings to create your website are many. A few of them are listed below

  • Simple setup, very easy to use
  • Extensible and Flexible
  • Feature rich and manageable
  • Manage persons and resources
  • Create custom availability and price slots

Now, if you are ready to kick start your website development process, here are the steps through which you can install and use WooCommerce bookings –

Get Hosting

Signup now to get our discount – only $2.95/month.

Templatic Themes fans get a special low price when hosting with Bluehost. Click here to signup and claim this deal.

Installing WooCommerce bookings

WooCommerce bookings is a plugin that works with WooCommerce to create bookable products. Therefore, to use WooCommerce bookings, you need to first install and configure WooCommerce plugin. To setup WooCommerce, you can use this guide. Once WooCommerce is ready to use on your website, you can install WooCommerce bookings and start creating bookable products.

Here are the simple steps through which you can install WooCommerce bookings:

  1. Download the WooCommerce bookings zip file from here.
  2. Login to your dashboard
  3.  Navigate to Appearance ⇒  Plugins ⇒ Add new
  4. Upload the zip file and install it
  5. Activate the plugin once successfully installed

When you activate WooCommerce bookings, an additional menu item will appear under WooCommerce. This tab will introduce all the settings available for the booking feature on your website. However, there is a different procedure to add bookable products into your website which we shall see in the later section.

Creating a bookable product

Creating a bookable product using WooCommerce bookings is as easy as you create normal products with WooCommerce. All it needs is a few extra configurations.

To add a bookable product, the first step is to navigate to Products ⇒ Add Product.

In the next step, you have to specify that the product you are creating is a “Bookable product”. The option for bookable products in the drop-down for product data will only appear when you have WooCommerce bookings installed and active.

Bookable products are generally not physical. So don’t forget to check mark the virtual product box for intangible bookable services.

When you choose the “bookable products” options from the dropdown, the field for the products will change accordingly. Let’s understand what each of the fields mean.

Booking duration

The drop-down selection allows you to choose if you want to allow booking for a fixed block of time or if you want the customers to book for the duration determined by the customer.

Fixed block of

You can choose the pre-determine the duration of bookings. So whenever a user tries to book, the booking will be processed for the fixed period of time only.

For instance, if you are creating a website for booking an appointment at a massage parlor, it’s for a fixed duration of 2 hours. So for this situation, you can choose the “fixed block of” option and specify the duration.

Customer defined blocks of

When you choose this option, you can allow the customers to choose. You can determine the duration and allow the customer to choose the number of blocks they want to book. However, when you choose these option, you can specify the minimum or maximum duration of days/hours for the booking.

Enable the calendar range picker

Enabling this will allow the users to select a start date and end date on the calendar. This will calculate the duration automatically.

Calendar display mode

You can choose to display the calendar on click or you can make the calendar visible by default.

Requires confirmation

If checked, booking request will be sent and payment processing won’t be done till the admin confirms the booking. So the booking request will only be confirmed when the admin reviews and approves it.

Can be cancelled

This option lets you determine if the visitors can cancel their booking once confirmed. If you disable this option they won’t be allowed to cancel their booking once done. If you choose to allow cancellation, you can choose till when can be the booking be cancelled.

In the example shown below, the booking can be cancelled before one hour of the commencement of the booked time. This means, that for the massage parlor appointment, the visitors can cancel their appointment one hour before the commencement of their appointment time. They won’t be allowed to cancel their booking after that. For example – If a user has an booked a session that starts at 2 PM, they will be allowed to cancel the appointment till 1 PM. After 1 PM the cancellation will not be allowed.

You can also choose the duration, before the start date, for which the cancellation will be allowed. So, as per the example in the image, you can cancel the booking before 1 hour of the start time.

Setting up the costs

You can set up the cost for each block you’ve created and show it on the sales page of your booking site.

Base cost

This can be the booking charge or the sign up cost or anything, the base cost will be charged with each and every booking regardless of the block cost. It’s important to note that the base cost is independent of the block cost. Even when a user books more than one block, the base cost remains the same for a booking.

Block cost

You can set the price of a single block here. The total cost will be calculated by multiplying the per block price and

Display cost

This is the price displayed to the customers regardless of the base cost and the block cost. When you leave this field blank If there are different price ranges, they will be calculated by the system according to the system based on the selections made by the customer. If the price to be displayed is from a custom defined range the front end will display “from:” before the display cost.


For additional customization for your booking costs, you can use these fields. This is helpful when you want to offer your users a special discount or a special hike for a specific situation. For instance, your beauty salon is going to have a bumper discount offer from 25th Feb to 27th Feb. For this duration, bookings will be available at half the price. So, in the example, a range is created accordingly.

Setting up the availability

Max booking per block – The number of bookings that can be allowed for the same block. This can be better understood through an example. Suppose you have 5 hair treatment experts that can work simultaneously at a given block. So you can specify “5” as the value for “Max booking per block”.

Minimum block bookable

You can specify, with this field, the extent of time in future, for which the booking can be done. For example,  If according to the example, we’ve specified minimum block bookable as 1 week into the future. This means that the visitors can book only for a block available a week after today’s date. Suppose today is 3rd May, then the visitors can only book for blocks on 10th May and onwards.

Maximum block bookable

This option is similar and complementary to the previous one. With this option you can specify the maximum time in the future for which the users can book. For instance, most probably, you wouldn’t want visitors to book one or two years in the future.

Example – We have specified “2 months” in our example. So the visitors can book for a date within two months of the current date. So if the current month is January 31st, the visitors will be able to book for February and March. They won’t be allowed to book for any date after march.

All dates are

With this option you can specify if all the dates will be available by default. You can make all the dates unavailable for default too. This can be helpful for limited period offers. You can make all the dates unavailable for default and then use the range to make them available for a specific time range.

Check rules against

You can make the system check the rules for all the blocks being booked, or just the first block of the range of blocks being booked.

If you specify “All the blocks being booked”, the rules will be checked for each and every block that the user books. If a users books for 3 blocks at once, the availability of each and every block will be checked and booking will be allowed only if all three of them are available. However, specifying “starting block only” will only check the availability of the first block only.


You can specify the range for availability as per your requirements using the range option. Click add range and create custom availability. For instance, you know your beauty salon will be closed for 10 days in March, then you can specify a range for the unavailability.


This is how you can sell bookable products using WooCommerce and WooCommerce bookings plugins. It is easy to use and configure. If you find difficulty regarding any of the features of this plugin you can refer the WooCommerce’s documentation for creating online booking system using WooCommerce Bookings.

Good luck with your new online booking website!!

Get Hosting

Signup now to get our discount – only $2.95/month.

Templatic Themes fans get a special low price when hosting with Bluehost. Click here to signup and claim this deal.

Disclosure: This page contains external affiliate links that may result in us receiving a commission if you choose to purchase mentioned product. The opinions on this page are our own and we don't receive additional bonus for positive reviews.

7 thoughts on “How to Setup WooCommerce Bookings to sell Bookable products on your WordPress Website

  1. Hi there,
    Can i allow users to booking day only? I don’t want to show Hours or minutes, i need to booking only rooms by days. Thank you. Nice blog.

    1. Hi Hugo,

      You can definitely decide the minimum bookable block for your rooms. All you need to do is set the booking duration as – Fixed block of 1 day. So your visitors will only be allowed to choose the how many blocks of 1 day they want to book for.

      And thanks for your kind words 🙂

  2. First I use 10 minute blocks over a 8 hour day as a base. So my clients can book me for 10 minutes at a time.
    After 10 minutes with me the clients can purchase a package. But in order to have a package you need to book a 10 minute block.

    I can not figure out how to make it a pre-requisite to by a package you must have a 10 minute session block booked.

    I have multiple packages product to sell them, but in order for them to have them they need a session.
    Any help would be great.

  3. Hi!

    Do you know how to add the booking calendar to a custom page?
    There’s shortcode to put the “Add To Cart” button on any page, but doing this with a bookable product doesn’t work properly.
    Clicking add to cart just takes you to the standard product page.

    I’d like to be able to add a booking option (with calendar) to any page, so that product can be booked for a date and then added straight to the cart or straight to the checkout.

    Any ideas? Thanks!

  4. Hey, cheers for the run-down! Do you know if it’s possible to have trip-based bookings rather than time-based with Woo Bookings? Use case would be 2 x 5.5hr trips per day 9am and 2.30pm, and when they’re at capacity open up a 3rd trip at 10am for example. Currently, this wouldn’t be possible as availability would overlap and the 10am trip would appear to be booked as well. What do you think?

  5. Im having problems with bookings. I have done all the adjustments but when i choose date to date, or only one date the “check availability” doesnt change to add to cart.. it says:” Please select the options for your booking above first” and i cant do anything.

    Tried with virtual product and regular. Im testing how it would work as a rental site.

  6. Do you know if Bookings allows a “default” time slot, so that the calendar automatically selects the first time slot available? I ask this because with the plugin I’m currently using, people actually don’t know to click on the time slot, and can’t complete the process.

Comments are closed.