Bookings Availability Settings

WooCommerce Bookings allows you to configure rules and restrictions for the availability of bookable products. This page is a reference guide to the settings you’ll find in the Availability tab of the edit product page for a Bookable product.

Configuring Availability for a Bookable Product

↑ Back to top

Availability (what slots can be booked) can be controlled via the Availability tab. Options in this tab include:

  • Max bookings per block
  • Minimum block bookable x number of days, weeks, months into the future
  • Maximum block bookable x number of days, weeks, months into the future
  • Require a buffer period and adjacent buffering settings
  • Choosing whether all dates are available or not available by default.
  • Choosing what determines when a booking is available: all blocks being booked or only the starting block
  • Restricting start and end days
  • Setting availability rules using different range options (days, specific hours, etc.)
The “Availability” tab in a Bookable products settings

Max bookings per block

↑ Back to top

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.

Here’s an example of how this works:

  • Booking blocks are for 1 full day
  • Set Max Bookings per block to 2

If you set the maximum number of bookings per block to 2, and each booking block (slot) represents a full day, then only two bookings can be made for that bookable product each day

Note: You can override the maximum bookings allowed for each block at the Resource level. This is useful if a bookable product uses three different resources, each with different booking limits.

Minimum/Maximum block bookable into the future

↑ Back to top

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.

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.

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

Require a buffer period between bookings

↑ Back to top

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.

The buffer applies to availability even before a customer makes a booking. For instance, if the bookable product’s availability is set from 10 AM to 5 PM with a one-hour buffer, the available booking slots will be 10 AM, 12 PM, 2 PM, and 4 PM.

If you prefer to include a buffer both before and after your appointments, you can select the “Adjacent Buffering” checkbox:

Enabling this option adds the specified buffer duration, which cannot be booked, 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.

Note: buffer periods are always use the same unit of time (minutes, hours, or days) as the chosen booking blocks. That means, if you want to have a 30-minute buffer between your 1-hour appoints, you’ll need to set blocks to 60-minutes instead of 1-hour.

All dates are

↑ Back to top

This setting determines whether bookings are available or not available based on the different availability rules you’ve set. You can set availability for a bookable product in two ways:

  • Set all dates are… “Available by default“: Available by default means all blocks are available and you can specifically turn some time slots off with rules.
  • Set all dates are. . . “Not available by default”: This means that all blocks are unavailable until you activate them 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.

Restrict selectable days

↑ Back to top

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 as seen here:

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 overall availability; other days are still available. Customers simply cannot select those days as the specific booking’s start date.

Custom Availability Range

↑ Back to top

If you need to set up custom availability for your bookable product you’ll want to use the custom availability ranges at the bottom of the Availability tab. These allow you to set specific parameters for the following:

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

Here are a few steps to illustrate how you use these:

  1. Add a rule by clicking the “Add Range” button to create a new rule (row):
  1. Choose the range type from the first drop down menu
  2. Enter the range you want to customize in the fields that appear next to the range type
  3. Set whether it’s bookable or not during that range
  4. (Optional) Configure the priority. Note: Rules with lower priority numbers will override rules with higher priority.
  5. Click Update in the top right of the product settings to save changes.

The images above only show the available options/appearance of these fields when you select the “Date range” range type. It’s important to be aware that the from/to values differ based on the range type:

  • Date range: from/to will show a date picker/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 repeats on each day in the date range.
Date range with time and Time Range types and their range options

You can remove custom rules by clicking the X on the far right and sort them by dragging and dropping using the handle on the left.

Important: Time ranges specified in the booking system do not necessarily represent the opening/operating 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.

Availability options can be set up globally if all bookable products share some or all dates. To read more about Global availability, refer to the Booking Settings – Store Availability documentation.

Troubleshooting custom availability ranges

If you add conflicting rules to your availability, it can cause the entire calendar to be grayed out as unavailable. If you see the booking calendar as unavailable after setting a custom availability range, you’ll need to troubleshoot your availability rules to avoid the issue.

Let’s say your store is open every day between 8:00AM and 4:00PM, and on December 25th you are closed. This includes a Custom Date Range and a Time Range.

The following rules do NOT work and will cause your entire calendar to be grayed out. This is because Custom Date Range and Time Range are both being used.

The rules need to be rearranged and include a Range of Days rule. Below is a screenshot of the correct rules for this to work:

By adding a Range of Days rule at the top and the Custom Date Range at the bottom, these availability rules will now work.

Understanding How Priority Affects Availability Rules

↑ Back to top

Understanding the priority system lets you fine-tune and control your resource availability and ensures that you apply the desired rules accurately based on their priority levels. Although the system itself is not overly complex many factors influence it. If you want to learn more about how it works, read: Understanding How Priority Affects Availability Rules.

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.

If multiple rows have the same priority, the rules higher on the list will take priority. You can adjust them by dragging them with the handle on their left side.
Note: By default, Store availability rules take priority over product level availability rules and product availability rules take priority over resource priority rules.

Questions and Support

↑ Back to top

Something missing from this documentation? Do you still have questions and need assistance?

  • Have a question about a specific extension or theme you’d like to purchase? Click here.
  • Already purchased and need some assistance? Get in touch with a Happiness Engineer via the WooCommerce.com Support page and choose this extension name from the “I need help with” dropdown.
Use of your personal data
We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.