Creating a Bookable Product

To accept bookings, you need to create a bookable product. Bookable Products are different than simple products of WooCommerce. Bookable products are specifically designed for businesses that offer time-based services or rental options. These products allow customers to book and schedule appointments, rentals, or reservations for specific dates and durations.

You can create a booking product from pre-defined templates located at Bookings > Add Product or from within the “Templates” tab on the “Edit Product” page.

If you are looking to create a booking product from scratch, please follow the below steps:

  1. Go to: Products > Add New. A familiar WooCommerce interface for product creation appears.
  2. Enter a title and description for your product.
  3. Scroll down to Product Data and select Bookable Product in the dropdown menu.
    bookings bookable product
  4. Tick the Virtual checkbox, if your product does not require shipping. This omits the Shipping Costs tab from your product.
  5. Fields will change to reflect bookable products.

The General settings include information about tax, booking duration, calendar display, confirmation, and cancellation preferences.

bookable product data

Taxes

Not Applicaible

Booking duration

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, a hairdresser 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 co-working 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:
    • A minimum and maximum allowed value can be included in the General tab. This sets the minimum duration the booking product can be booked by a customer. (It is possible to use 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 customer-defined duration with blocks in minutes/hours will display a dropdown.
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 under Availability Settings.

Calendar display mode

Select Calendar always visible or Display calendar on click. By default, the calendar is set to always show.

The appearance of the calendar when Calendar always visible is selected (calendar is visible, one month at a time, starting with the current month)
The appearance of the calendar when the Calendar is always visible is selected
The appearance of the calendar when Display calendar on click is selected (moth, day, year fields awaiting input)
The appearance of the calendar when Display calendar on click is selected

Enable Calendar Range Picker

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” within the General settings.

Enabling this allows customers to select a start date and an end date for their booking within the calendar itself.

image 1
Enable Calendar Range Picker? is enabled, this allows the customer to select start and end date for the booking

When Enable Calendar Range Picker? is not enabled, the Duration selector indicates the number of days required.

When the setting"Enable Calendar Range Picker?" is not enabled, a Duration selector above the calendar needs to be used. to indicates the number of days required
Enable Calendar Range Picker? is not enabled

Requiring Confirmation

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

To learn more, see Managing 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:

  • Check Availability option will be the only payment gateway presented when checking out
  • other items will be removed from the Cart when this bookable product is added to the Cart

Please note that the Check Availability “payment gateway” can’t be enabled/disabled under WooCommerce > Settings > Payments like other gateways can, and is displayed/hidden based purely on a Bookable Product requiring confirmation being in the Cart.

Once the booking is approved by the admin from the backend, the customer receives another email to then submit payment.

Allowing Booking Cancellation

booking cancellation

You may choose whether you want the customer 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 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 to define dates that can be booked:

availability data woo bookings

Max bookings per block

This setting allows you to limit the number of bookings that can be made for a single block of time (time slot). This can be useful for a variety of reasons, such as:

  • Preventing overbooking: If you have limited availability, you can use the maximum bookings per block setting to prevent customers from booking too many blocks of time at once. This will help you ensure that you have enough availability for all of your customers.
  • Managing demand: If you know that your product is in high demand, you can use the maximum bookings per block setting to limit the number of bookings that can be made per day or week. This will help you manage demand and ensure that everyone has a chance to book your product.
  • Creating a sense of urgency: If you want to encourage customers to book your product sooner rather than later, you can use the maximum bookings per block setting to set a maximum number of bookings that can be made for a single block of time. This will create a sense of urgency and make customers more likely to book your product right away.

Under the Availability tab, you will see the Maximum bookings per block field. Enter the maximum number of bookings that you want to allow for a single block of time in this field.

For example, with a fixed booking of 1 day and maximum bookings per block set to 2, then each day you can accept two bookings.

The maximum bookings allowed for each block can be overridden at the Resource level.

Minimum/Maximum block bookable into the future

The minimum and maximum block bookable in the future settings allows you to control how far in advance customers can book your products.

Under the Availability tab, you will see the Minimum block bookable and Maximum block bookable fields. Enter the number of days or weeks in advance that you want customers to be able to book your product in these fields.

For example, if you want customers to be able to book your product at least 3 days in advance, but no more than 2 weeks in advance, you would enter 3 days in the Minimum block bookable field and 2 weeks in the Maximum block bookable field.

Once you have set these settings, they will be applied to the bookable product.

Another example: If today is March 1 and you set the 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

Depending on the chosen unit of time for booking (minutes, hours, or days) under general settings, you have the ability to designate a specific duration of unavailability (buffer time) after each bookable slot. This ensures that no one else can book during that period. For instance, suppose you offer appointments in 1-hour increments and desire a 1-hour break (buffer) between each appointment. In that case, you can set a buffer period of 1 hour.

adjacent buffer woo bookings

If you prefer to include a buffer both before and after your appointments, you can select the “Adjacent Buffering” checkbox. By enabling this option, the specified buffer duration (which cannot be booked) will be added both before and after each appointment. For example, if you define a buffer period of one hour between bookings with adjacent buffering, there will be a total of 2 hours between appointments.

It is important to note that buffer periods should always be defined using the same unit of time (minutes, hours, or days) as the chosen booking blocks. To illustrate, if you wish to have a 30-minute buffer between your 1-hour appointments, ensure that you use 60-minute blocks instead of 1-hour blocks.

All dates are

Depending on how you want to set up availability, this option allows you to:

  • Set available by default: Available by default means all blocks are available and you can specifically turn some time slots off with rules
  • Not available by default: Not available by default means all blocks are not available and must be turned on through availability rules.

Check rules against

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.

Restrict selectable days

The “Restrict Selectable Days” setting allows you to limit the days on which customers can select on the calendar and book appointments or reservations. By enabling this setting and configuring the specific restrictions, you can control the availability of your bookable time slots based on the days of the week.

For example, let’s say you have a business that offers weekend activities such as guided tours or workshops. If you only want customers to be able to book appointments on Saturdays and Sundays, you can enable the “Restrict Selectable Days” setting and specify the allowed days as Saturday and Sunday.

image 2

By restricting selectable days, you can effectively manage your availability and prevent customers from booking appointments on days that are not suitable for your business operations. This setting provides flexibility for businesses that have specific opening hours or operate on a limited schedule, ensuring that customers can only choose from the available days when making their bookings.

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

Custom Availability Range

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

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

To add a rule, select Add Range:

add range woo bookings

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.

add range row woo bookings

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

  • Date range: from/to will show a datepicker/calendar selection field
  • Range of days: from/to will show a dropdown of days of the week (Monday to Sunday)
  • Range of months: from/to will show a dropdown of months (January to December)
  • Range of weeks: from/to will show a dropdown of weeks (1 to 52)
  • Date Range with time: period with a start date/time and an end date/time. Range applies from start time on the start day to end time on the end date.
  • Time ranges: from/to will show time inputs. (You can also set it to a specific day of the week from the options available in the dropdown)
  • Date Range with recurring time: set based on a custom date range. The range is repeated on each day in the date range.
unavailability example woo bookings

Please keep in mind that the time ranges specified in the booking system do not necessarily represent the opening hours of your shop but rather the available booking hours. To illustrate, suppose your shop operates from 9:00 am to 6:00 pm and offers appointments in 1-hour time blocks. In this case, the last available booking slot would be at 5:00 pm, not 6:00 pm.

image 4
Availability range type options

Note: By default, the global availability rules take precedence over the availability rules set at the product level, and the product availability rules take precedence over the resource-priority rules. The priority numbers can be adjusted to modify this order. When determining availability, a lower priority number will always override a higher priority number, regardless of the context. For instance, even if a rule with a priority of 10 exists at the global level, a rule with a priority of 9 at the product level will take precedence over it.

Understanding the priority system allows you to fine-tune and control the availability of your resources and ensure that the desired rules are applied accurately based on their priority levels. 

If multiple rows have the same priority, the rules higher on the list will take priority. You can adjust them by dragging them.

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. 

Note: By default, Store availability rules take priority over product level availability rules and product availability rules take priority over resource priority rules.

Costs for Bookable Products

Costs for specific slots are controlled from the Costs tab.

costs data woo bookings

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

Base Cost

Base cost is applied to the booking regardless of a customer’s choices on the booking form.

Block Cost

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

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 front end. 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:”

Custom Cost Range

Beneath the display cost, you have an area where you can define extra costs. This works similarly 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/to will show a date picker field
  • Range of months: from/to will show a dropdown of months (January to December)
  • Range of weeks: from/to will show a dropdown of weeks (1 to 52)
  • Range of days: from/to will show a dropdown of days of the week (Monday to Sunday)
  • Time range: from/to will show time inputs (You can also set it to a specific day of the week from the options available in the dropdown)
  • Date range with time: set based on a custom date range
  • Persons count: from/to will show the number inputs (Applies only if the “Has Person” option is enabled)
  • Block count: from and to will show the number inputs

Base cost and Block cost can be added, subtracted, multiplied, or divided by the amount you enter. You can also directly set the costs applied for the rule.

image 5
Cost range type options

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.

cost plus fee example woo bookings
If multiple rows match, all additional costs are used.
Shopping Basket
Scroll to Top
Chat with Us
Hello 👋
Looking to rent a baby equipment?