If your business relies on clients needing to book your services in advance, make an appointment or perhaps rent a product, then your native WooCommerce installation cannot do this on it’s own. Fortunately there is a WooCommerce plugin that will allow you to achieve this quite easily.


This tutorial uses the WooCommerce Product Add-Ons plugin to enhance the capabilities of WooCommerce.

Get the WooCommerce Product Add-Ons by YITH

The Solution

The WooCommerce Bookings plugin is very easy to use and flexible enough to support a wide variety of businesses that might require this functionality. In this article we will look at how to set it up and get it running on your website.

Once you have installed your WooCommerce Bookings plugin, you will notice that a new tab called Bookings will appear underneath your Products tab in your WordPress dashboard.

Clicking on this tab will take you to all the different options available for the WooCommerce bookings plugin allowing you to manually add bookings, view your existing bookings, send notifications and much more.

This post will focus on adding a booking product or appointment:

  1. To add a bookable product, simply begin by creating a normal product. Navigate in your WordPress dashboard to Products and click Add New
  2. Once you have created your product, scroll down to the product data box and change it from a simple product to a bookable product. Note that this option will only show up once you have installed the WooCommerce Bookings plugin.Remember: Since most bookable products are not physical goods, remember to tick the Virtual box so that WooCommerce can apply the correct attributes to your product.
  3. Once you have set the product as a Bookable Product you will be given a few new option fields to specify exactly how your product should be sold.
    • Booking duration
      The Booking Duration option allows you to choose whether your product should be booked for a fixed duration or customer defined duration.Setting up a Fixed Duration product would work for someone offering a service such as a massage parlor. If the products fixed duration is set for 2 hours then once a customer makes a 10am appointment then the WooCommerce booking plugin will know that the time slot from 10am to 12pm is already reserved.The Customer Defined duration option will work in the case of someone making a reservation at a hotel. They will be able to choose for themselves how many days they would like to make the booking for. You can specify the minimum and maximum days/hours a customer can book your product for.
    • Calendar display mode
      This will allow customers to choose a start date and end date on the calendar and the system will automatically calculate the duration
    • Requires confirmation
      If this option is checked, the booking request will be sent to the admin for review but payment will not be processed until the request is reviewed, approved and confirmed.
    • Can be cancelled
      This determines whether a customer will be able to cancel their booking once it is processed. You can also define periods where cancellation is available and when it is not allowed. For example, someone booking into a hotel may still be allowed to cancel their booking if there is more than a 24 hour period before their booking is due to commence but if there is less than 24 hours then cancellation can be denied.
  4. Setting up the costs
    You can set up defined costs for each block defined in your product. This may be useful, for example, if a product is more expensive during peak periods or weekends.
    • Base cost
      The base cost is a set charge for each booking. It will be charged with every booking.
    • Block cost
      This defines the cost of a single block
    • Display cost
      This is the price that will be displayed to the customer. If there are different price ranges, leaving this blank will  display a price according to the customers selections.
    • Range
      This is useful if you wish to customize your pricing for a selected period of time. Perhaps you are running a promotion and offering your clients 50% of your bookable product for the coming weekend, this option will allow you to create a range specifying the discount.
  5. Setting up availability
    For bookable products and appointments, setting up availability is essential. Think of it as managing your stock.
    • Max bookings per block
      This option allows you to specify how many bookings you can take at a time. If you are running a car wash and can only wash 5 cars at a time then you need to define that you can only sell a maximum of 5 of these products for a given time slot.
    • Minimum/Maximum block bookable
      With these options you can specify how soon or how far in advance a customer can book your product.
    • All dates are…
      You can use this option to quickly make available or alternatively block out an entire date range.
    • Check rules against
      If a customer books multiple blocks you can set the system to check the booking against either just the first block that the customer booked or against all the blocks the customer booked. This will let the system know whether to allow the booking or not.
    • Range
      You can set custom availability for a given date range.

Using the WooCommerce Bookings plugin you will be able to create a highly versatile e-commerce platform for almost any booking or appointment based product. You can also add custom fields to the booking form using the WooCommerce Product Add-Ons plugin.