Bookings Use Case: Change Price of Booking Based on Duration of Stay

This scenario will walk you through how to use WooCommerce and WooCommerce Bookings to set up a bookable product where customers get a discount the more days they reserve.


↑ Back to top

A hotel or property rental agency wants to offer rooms that are priced based on duration of stay. A longer stay gets a discounted rate. Our example rates and date ranges are:

  • If customer is booking only 1 day, then price is $30 per day.
  • If customer is booking 2-4 days, then price is $27 per day.
  • If customer is booking 5-8 days, then price is $24 per day.

Products Used

↑ Back to top

Setup and Configuration

↑ Back to top

In this example, each day would be considered a block. The Block Cost would equal to the cost per block (or day, in this case) within that block range and its preceding blocks.

Creating a Bookable Product

↑ Back to top
  1. In the sidebar of your WordPress Admin, click on Products.
  2. Click on the Add New button on the top.
  3. Under Product data select Bookable product.
  4. To the right side of the Product data box, you will then tick the checkbox Virtual (in our example, we are not shipping anything) and Has Persons.

Configure the General Tab

↑ Back to top
  1. Set the Bookings duration dropdown to Customer defined blocks of 1 day(s).
  2. Set Minimum duration to 1.
  3. Set Maximum duration to 8.
  4. In our example, we have also enabled Pass shipping/tax. You do not need to do this step unless you wish to pass these costs off to the Product Vendor using our Product Vendors extension.

The image illustrates enabling the Virtual and Has persons settings, as well as defining the booking duration and the minimum and maximum duration in the General Tab.

Configure the Costs Tab

↑ Back to top

In our example, booking 1 day will cost $30 per day. Booking 2-4 days will cost $27 per day and booking 5-8 days will cost $24 per day. So your guests pay less per day the more days they book.

  1. Set the Base Cost and Block Cost to 0. We will enter prices based on block specific ranges instead.
  2. Click the Add Range button and add three range rules.
  3. Set the Range Type to Block in all three drop downs.
  4. In the first rule, set the range as 1 to 1 and the Block cost = 30.
  5. In the second rule, set the range as 2 to 4 and the Block cost = 27.
  6. In the third rule, set the range as 5 to 8 and the Block cost = 24.

The image illustrates how to set up the three range types and their block costs.

Please note: This set up does not work with WooCommerce Accommodation Bookings.

Customer View

↑ Back to top

With the above configuration, your guests will select a start date and select how many days the booking will last. The prices will update based on the discount assigned to the specific ranges, for example, a reservation for 4 days is $108.

Questions and Support

↑ Back to top

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

  • Have a question before you buy this extension? Please fill out this pre-sales form – please include the name of this extension in your query.
  • Already purchased and need some assistance? Get in touch with a Happiness Engineer via the Support page and choose this extension name from the “I need help with” dropdown