Creating a Bookable Product

To accept bookings, you need to create a bookable product.

1. Go to: Products > Add Product. A familiar WooCommerce interface for product creation appears.

2. Enter a title and description for your product.

3. Select Bookable Product in the Product Data dropdown menu.

2013-12-02 at 12.074. Tick the Virtual checkbox, if your product does not require shipping. This omits the Shipping Costs tab from your product.

Fields will change to reflect bookable products.

General settings ↑ Back to top

The first settings are booking duration, calendar display and confirmation preferences.

Bookable Product General Settings

Booking duration ↑ Back to top

This determines how long a booking lasts. The duration can be admin defined (fixed block) or customer defined (they need to input on the front-end). Duration units can be Hours, Minutes, Days or Months.

Fixed blocks have a set duration that you define. The customer can only choose one block which will last the defined amount of time. For example hair dresser appointment lasts one hour and you can only book one at a time.

Customer-defined blocks have a set duration, but the customer can choose how many blocks they want. For example, the coworking space is rented out in hourly intervals, and the customer can define how many 1 hour blocks they would like to rent.

If you set your Booking duration to be customer defined, you can include a minimum and maximum allowed value in the General tab. This allows for a more flexible starting schedule. You can define 30-minute blocks and set the minimum to 2 blocks. Your customers now need to book at least one hour, and can add increments of 30 minutes.

A booking can be set in blocks using minutes, hours, days, weeks and months. If using hours and minutes, you can specify what time the bookings start.

Calendar display mode ↑ Back to top

Select whether to always show the calendar or only when clicked, by default the calendar is set to always show.

If the Booking duration is set to be Customer defined with a unit of Days, then another option will be shown to enable the calendar range picker. Enabling this allows your customers to select a start date and an end date for their booking within the calendar itself.

Requiring Confirmation ↑ Back to top

If the booking needs to be reviewed by an Admin before confirmation, tick the Requires confirmation? checkbox. Rather than take payment at checkout, the user inputs details and submits them for approval.

To learn more, see Manage Bookings.

Bookings requiring approval will remove other items from the cart. They must be checked out alone, so payment gateways can be safely disabled.

If the Requires Confirmation checkbox is ticked, only the Check Availability option is shown when checking out. Once the booking is approved, the customer receives another email to then submit payment.

Allowing Booking Cancellation ↑ Back to top

You may choose whether you want the user to have the option to cancel their booking. After selecting the option Can be cancelled?, two fields appear that allow you to choose how many Minutes/Hours/Days/Months prior to the start date that customers can cancel a booking.

Availability settings

Availability (what slots can be booked) can be controlled via the Availability tab. The first options allow you define dates that can be booked:

bookings-availability-buf

Max bookings per block ↑ Back to top

This setting allows multiple bookings at the same time. With a fixed booking of 1 day and maximum bookings per block set to 2, then each day you can accept two bookings.

Minimum/Maximum block bookable into the future ↑ Back to top

If today is March 1 and you set minimum block bookable to 1 month into the future, then the first date a customer could book would be April 1. The same applies to the maximum date bookable.

Require a buffer period between bookings ↑ Back to top

Based on the unit of time set for the booking (minutes, hours or days), you can specify a period of time after a confirmed booking that is unavailable for anyone else to book. For example, if you sell appointments in 1-hour blocks and wish to have a break of 1 hour between them, you can specify a buffer period.

If you prefer to add a buffer before and after your appointments, tick the Adjacent Buffering checkbox. This option adds the specified block both before and after each booking. Defining a buffer period of one hour between booking with adjacent buffering will result into 2 hours between bookings.
bookings-buffer
Buffer periods are always defined in the same time measurement (minutes, hours or days) chosen for blocks. If you want to have a 30-minute buffer between your 1-hour appointments, be sure to use 60-minute blocks instead of 1-hour blocks.

All dates are ↑ Back to top

Depending on how you want to set up availability, this option allows you to set available by default or not available by default. Available by default means all blocks are available and you can specifically turn some off with rules, where not available by default means all blocks are not available and must be turned on through availability rules.

Check rules against ↑ Back to top

You have two options:

  • All blocks being booked – This checks all available blocks within a duration. For example if a customer chooses to book for 5 days and 1 block is equal to 1 day, it will check availability for all 5 days.
  • Starting block only – This checks the first block the user selects. For example if a customer chooses to book for 5 days and 1 block is equal to 1 day, it will only check availability for the first day.

Restricting the Day a Booking Can Start On ↑ Back to top

Say you have a weekly rental, but you only allow customers to start their rental on Fridays. You would first tick the Restrict start days? box, then choose Friday, or the day(s) you would like to restrict the booking to start on.

This does not affect availability, other days are still available, they just cannot be selected as the days that bookings start on.

Custom Availability Range ↑ Back to top

You can set up specific availability rules, such as availability for:

  • Months
  • Day of the week
  • Time
  • Specific date

To add a rule, click the Add Range button:

Bookings - Add Range

A new row is created, where you can choose a range type, from/to, whether it’s bookable or not (yes or no) and a priority number.

Bookings - Ranges

The from/to values differ based on the range type:

  • Date range – from and to will show a datepicker/calendar selection field
  • Range of days – from and to will show a dropdown of days of the week (Monday to Sunday)
  • Range of months – from and to will show a dropdown of months (January to December)
  • Range of weeks – from and to will show a dropdown of weeks (1 to 52)
  • Time ranges – from and to will show time inputs
  • Date Range with time – a time range can be set based on a custom date range
WooCommerce Bookings - Date Range with Time
These rules make bookings available from 9:00 am-6:00 pm daily, except for the month of January when bookings cannot be made between 3:00-6:00 pm.

Note that the time ranges are not opening hours, but booking hours. If you offer 1-hour time blocks and your shop is open from 9:00 am to 6:00 pm, your last booking is at 5:00 pm, not 6:00 pm.

By default, Global availability rules take priority over product level availability rules and product availability rules take priority over resource priority rules. The order can be changed using the priority numbers. A lower priority, irrespective of context, overrides any other context with higher priority number. For example, a 9 will always override 10, even if 10 is on the Global level.

If multiple rows have the same priority, the rules higher on the list will take priority.

Rows can be removed by clicking the X on the far right, or dragged and dropped to sort using the handle on the far left.

Also be aware that availability options can be set up globally if all bookable products share some dates. To read more about Global availability, see Booking Settings.

Costs for Bookable Products ↑ Back to top

Costs for specific slots are controlled from the Booking Costs tab.

Screenshot 2015-01-15 14.55.51

The two main costs you can add are Base cost and Block cost.

  • Base cost is applied regardless of a customer’s choices on the booking form.
  • Block cost is the cost per block that was assigned in the General tab. If a customer books multiple blocks, this cost is multiplied by the number of blocks booked.

Display cost does not affect the actual cost of the product. In the example above, the product page displays 300 on the frontend. The cost is displayed to the user on the frontend. Leave blank to have it calculated for you. If a booking has varying costs, the lowest available cost is shown and is prefixed with the word “From:”

Beneath the display cost, you have an area where you can define extra costs. This works similar to availability. Click Add Range to begin:

Bookings - Add Cost Range

A row appears where you can input the range type, from/to and cost:

Bookings Cost Range Example

The from/to values differ based on the range type:

  • Date range – from and to will show a datepicker field
  • Range of months – from and to will show a dropdown of months (January to December)
  • Range of weeks – from and to will show a dropdown of weeks (1 to 52)
  • Range of days – from and to will show a dropdown of days of the week (Monday to Sunday)
  • Time range – from and to will show time inputs
  • Date range with time – a time range can be set based on a custom date range
  • Persons count – from and to will show number inputs.
  • Block count – from and to will show number inputs.

Base cost and Block cost can be added, subtracted, multiplied or divided by the amount you enter. With version 1.10.9 (pending release), you can also directly set the costs applied for the rule.

Rows can be removed by clicking the X on the far right, or dragged and dropped to sort using the handle on the far left.

This configuration will charge a block cost of 100, but between Dec. 23 - Jan. 1, there is an extra fee of 20 if the bookings are between 5-9pm.
This configuration charges a block cost of 100, but between Dec. 23 – Jan. 1, there is an extra fee of 20 if bookings are between 5:00-9:00 pm.
If multiple rows match, all additional costs are used.

Persons ↑ Back to top

If the booking can be made for multiple persons at once, tick the Has persons checkbox. Once selected, a new tab appears:

Bookings has persons

You can set a min and maximum for persons. Similar to duration, the customer can input a value on the frontend booking form, if enabled.

Persons also impacts the following cost options:

  • If multiple costs by person count is enabled, all costs are multiplied by the number of persons the customer defines.
  • If count persons as bookings is enabled, the person count is used as the quantity against the block. Remember the max bookings per block setting above? That determines the upper limit for allowed persons per block. Once the limit is reached, more persons cannot book.

The Persons tab also allows you to define different prices depending on the person type. You might want to offer a different price for children or for teachers on a museum tour for example. To set up different person types, tick the Enable Persons Type checkbox in your Persons Tab:

Bookings person types

Once you tick this checkbox, you have the option to add multiple types.

Give your Person type a name and define the cost for the type. Adding a description is optional.

You can define a minimum and a maximum number for each person type. For example, you could require at least one adult for each booking while making children optional (minimum 0). If you leave Max blank, there are no other restrictions than those of the bookable product itself.

Bookings person types example

Clicking the Unlink button will remove the person type from the product. The person type will still exist, but be hidden, this is so previously created bookings are not broken.

Resources

For added flexibility, WooCommerce Bookings supports Bookable Resources that can be booked independently within a bookable product. Tick the Has resources checkbox to enable a new tab:

Bookings has resources

There are two types of bookable resources:

  • Customer selected – A booking form shows a dropdown list of resources that the customer can select.
  • Automatically assigned – A resource is automatically assigned to a customer booking if available.

An example use case for a customer selected resource would be a room type, such as single and twin rooms.

An example use case for an automatically assigned resource would be a hair salon where the resources are staff and someone is assigned a booking.

After enabling resources, choose your type. If you have chosen Customer selected be sure to give your resource a label. This is what is shown on the frontend booking form.

Resources can be used globally across multiple products. For more information, see: Using Resources.

Questions & Support ↑ Back to top

Have a question before you buy? Please fill out this pre-sales form.

Already purchased and need some assistance? Get in touch with support via the Help Desk.

WooCommerce - the most customizable eCommerce platform for building your online business.

Back to the top