I am using WooCommerce Bookings (https://woocommerce.com/products/woocommerce-bookings/) to offer rentals of equipment on my website.

The rentals must be "per day", so that we have time to retrieve the equipment and service it/clean it for the next renter. This can be set up using the "Fixed Blocks of 1 Days" setting. However, I also need to ask the customer for their desired start time for the date they are choosing. For example, I want them to be able to pick up the equipment any time between 10am and 6pm, in one hour increments. I can get those increments added to the front-end select options if I change to "Fixed Blocks of 1 Hours" and set the Store Availability "Time Range" settings accordingly, but this then allows one customer to select "Friday February 17 at 10am" and another customer to select "Friday February 17 at 11am".

I need it to be so that if a customer selects "Friday February 17 at 10am", no other customer can choose any other time on Friday February 17.

Does anyone know if there is a recipe of settings for it to function in this way? If not, is there another booking plugin that would meet those needs? I have considered adding an attribute/field to collect their desired start time, but I don't think that will be compatible with the plugin's Google Calendar integration. If I use the "Days" instead of the "Hours" setting, then the rental is added to Google Calendar as an "All Day" event, instead of adding it at a specific time.

1 Answer 1


Yes, you can achieve this functionality with WooCommerce Bookings. Here's how you can set it up:

  1. Set the Bookable product duration to "Fixed Blocks of 1 day" under Booking duration.
  2. Set the minimum and maximum block duration to 1 day.
  3. Set the Booking window to the number of days in advance customers can make a reservation.
  4. Under Availability, select "Time Slots" and set the "Time slot calculus" to "Customer defined".
  5. Set the time range to 10am to 6pm, with 1-hour time slots.
  6. Under Resources, add a resource for each equipment item available for rent.
  7. Under Persons, set "Enable person types" to "Yes" and create a person type called "Renter".
  8. Set the minimum and maximum persons to 1 and 1, respectively.
  9. Under Costs, set the cost per day for each equipment item.
  10. Under Booking meta, add a custom field for "Desired Start Time" and set it to display on the checkout page.
With these settings, customers can select the day they want to rent the equipment and choose a start time between 10am and 6pm. Once a start time is selected, that time slot will no longer be available for other customers to book.

Regarding the Google Calendar integration, the booking will appear on the calendar at the start time selected by the customer. However, the end time will be calculated based on the duration of the booking (which is set to 1 day in this case). If you need to include the end time on the Google Calendar event, you may need to look into customizing the integration or using a different booking plugin that better meets your needs.

  • I am a bit confused, as many of these options are not displayed for me in the demo I set up for Woocommerce Bookings. For example, Time Slots, Person Types, Booking Meta. Are you sure we are referring to the same plugin (woocommerce.com/products/woocommerce-bookings)?
    – hockey2112
    Feb 17, 2023 at 22:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.