Set up a cabin cruise with customer-selected cabin types, prices based on occupancy, and holiday surcharges. Each reservation uses one cabin, whether one or two guests share it.
Scenario
↑ Back to topStrait & Pine Cruises offers one- to ten-day voyages through the San Juan Islands. Customers choose an interior or window cabin for one or two guests. The store has 50 cabins of each type.
| Cabin type | Occupancy | Daily total |
|---|---|---|
| Interior | One guest | $250 |
| Interior | Two guests | $400 |
| Window | One guest | $350 |
| Window | Two guests | $600 |
A $45 per-guest adjustment applies for each booked holiday day. This example uses November 1, 2026, January 1, 2027, and July 4, 2027.
Before you begin
↑ Back to topYou need WooCommerce and WooCommerce Bookings installed and active, and administrator access to create products and resources. This example sells each cabin as a daily reservation. It does not assign an individual cabin number or manage a fixed departure itinerary.
Start with the Boat Cruise template
↑ Back to top- Go to Bookings > Add Product.
- Select Boat Cruise.
- Choose Use template.
The template supplies sample settings and resources. Review every setting below, including the guest-count setting and holiday dates; the defaults need changes for this example. Use Salish Sea Cabin Cruise as the product name.
Configure the booking duration
↑ Back to top- Enter the cruise name and description. Explain that each reservation covers one cabin and one or two guests.
- In Product data, keep Bookable product selected.
- Enable Virtual, Has persons, and Has resources.
- Open General.
- For Booking duration, select Customer defined blocks of, enter 1, and select Day(s).
- Set Minimum duration to 1 and Maximum duration to 10.
- Set Calendar display mode to Calendar always visible.
The maximum duration is the trip length, not an advance-booking limit. On Availability, set Minimum block bookable to 1 Day and Maximum block bookable to 18 Months. Keep All dates are… set to available by default, check availability against All blocks being booked, and leave the buffer at zero. Add availability rules if your sailings run only on certain dates. Store-wide and resource rules can also restrict dates.
Add cabin types and inventory
↑ Back to top- Open Resources.
- Enter Cabin type for Label.
- Set Resources are to Customer selected.
- Rename the template resources to Window Cabin and Interior Cabin. If starting from scratch, add these two resources.
- For Window Cabin, set Block Cost to 100 and Base Cost to 0. Leave both costs at zero for Interior Cabin.
- Choose Edit resource for each cabin type.
- Set Available Quantity to the number of cabins of that type. This example uses 50 for each resource.
- Update the resource.
Resource availability is shared across every bookable product that uses the resource. This prevents the same cabin inventory from being sold twice if it appears in more than one cruise product.
Configure pricing
↑ Back to top- Open Costs.
- Set Base cost and Block cost to 0. Set Display cost to 250.
- Keep the rules in this order. Set the Range of days rule from Monday to Sunday that adds 250 to the block cost.
- Set the Person count rule from 2 to 2 that subtracts 50 from the block cost.
- Replace the template’s old Date range rules with November 1, 2026, January 1, 2027, and July 4, 2027. Set both ends of each range to that holiday and add 45 to the block cost. Leave every rule’s base-cost adjustment at zero.
Each matching rule changes the daily block cost before the total is multiplied by guest count. Date-range rules use the exact dates you enter and do not repeat automatically each year. Maintain the dates before each sailing season.
Configure guests
↑ Back to top- Open Persons.
- Set Min persons to 1 and Max persons to 2.
- Enable Multiply all costs by person count.
- Leave Count persons as bookings unchecked, even if the template enabled it. One reservation then reduces the selected resource by one cabin, whether one or two guests share it.
- Enable Enable person types.
- Rename the template’s person type to Guests. If starting from scratch, add that person type. Set its minimum to 1, maximum to 2, and costs to zero.

Test the booking
↑ Back to topPublish the product, then test it in a private browser window. For the example configuration, select a window cabin for two guests, enter a duration of two days, and choose November 1, 2026.
- Two guests at the discounted interior rate for two days: $800.
- Window cabin adjustment for two guests and two days: $400.
- November 1 holiday adjustment for two guests: $90.
- Total: $1,290.

On ordinary days, a two-day window cabin costs $700 for one guest or $1,200 for two. An interior cabin costs $500 or $800 for the same duration. Add the selected cruise to the cart and confirm the price and guest details before any taxes or fees. On a test store, confirm a reservation and check that its cabin type has 49 available cabins while the other type still has 50. Cancel the test booking and confirm availability returns to 50.
Check unexpected results
↑ Back to top- Two guests use two cabins: clear Count persons as bookings. Keep Multiply all costs by person count enabled for per-guest pricing.
- The total is wrong: check the selected resource’s block cost, rule order, guest count, duration, and holiday year. A display cost changes the advertised starting price, not the calculated booking total.
- A date is unavailable: check the booking window, every day in the selected duration, resource inventory, existing bookings, and store-wide availability rules.
Questions and support
↑ Back to topSomething missing from this documentation? Still have questions and need assistance?
- If you have a question about a specific extension or theme you’d like to purchase, contact us to get answers.
- If you already purchased this product and need some assistance, get in touch with a Happiness Engineer via our support page and select this product’s name from the Product dropdown.