Create a Tour

1: Create a Tour

1.1: Add General Fields

1.2: Add Global Price

Config

  • Regular Price: This price is applicable for Adults

  • Sale Price: The Sale price is applicable for Adults

  • Children Price: The price is applicable for Children

  • Baby Price: The price is applicable for babies

Example:

Total Amount = 2(Adults) * $390 + 1 (Children) * $300 = $1080

Backend
Frontend

1.3: Add Quantity and Guest

  • Quantity: The maximum number of tours that can be booked at once

  • Stock Quantity by Guests: Check available dates based on the number of guests or stock quantity.

a) Case 1: Check available dates based on the number of guests.

  • Setup Scenario:

    • Quantity: 1

    • Stock Quantity by Guests: Checked

    • Maximum adults: 4

    • Maximum children: 3

    • Maximum babies: 3

  • Tour availability calculation:

    • Maximum adults per booking: 4 (Maximum adults)* 1 (Quantity) = 4

    • Maximum children per booking: 3 (Maximum children)* 1 (Quantity) = 3

    • Maximum babies per booking: 3 (Maximum babies)* 1 (Quantity) = 3

Note: Each guest type has its own stock that is tracked independently.

Suppose that:

  • The customer 1 books a tour at 05/08/2025 with 6 guests (2 adults, 2 children, 2 babies)

→ Remaining guest stock: Adults - 2 left , Children - 1 left and Babies - 1 left

  • The customer 2 also books a tour at 05/08/2025

    • He can book the tour at 05/08/2025 if within remaining quota ( For example: 2 Adults, 1 Child, 1 Baby → Booking allowed )

    • Booking is not allowed if he want to book more than what remains ( For example: 3 Adults, 0 Children, 1 Baby → Booking not allowed )

Backend
Customer 1
Customer 2
Customer 3

b) Case 2: Check available dates based on stock quantity.

  • Setup Scenario:

    • Quantity: 1

    • Stock Quantity by Guests: Un Checked

    • Maximum adults: 4

    • Maximum children: 3

    • Maximum babies: 3

  • Tour availability calculation formula:

    • Maximum adults per booking: 4(Maximum adults) = 4

    • Maximum children per booking: 3(Maximum children) = 3

    • Maximum babies per booking: 3(Maximum babies) = 3

Note:

  • In this case, the system only tracks overall tour stock (i.e., how many bookings are allowed), not individual guest types.

  • Each booking reduces the total quantity, regardless of how many guests are included

Suppose that:

  • The customer 1 books a tour at 05/08/2025 with 6 guests (2 adults, 2 children 2 babies)

→ One booking has been used up

  • The customer 2 tries to book a tour at the same date ( 05/08/2025 ): Booking is not allowed because the tour’s Quantity is set to 1 and it has already been booked by the customer 1

1.4: Add Insurance

Support 2 types: General Price and Guest type price

Read more here

a) General Price

Insurance: Choose "General Price" option

Backend
Frontend

b) Guest type price

Insurance: Choose "Guest type price" option

Backend
Frontend

1.5: Add Deposit

Support partial payment in two types: Percent and Fixed amount.

Read more here

a) Percent

Deposit type: Choose "a percentage amount of payment" option

Backend

b) Fixed

Deposit type: Choose "a fixed amount of payment" option.

1.6: Add Tour with Fixed Dates

  • Time slots: No

  • Days: Add the number of days for the tour.

  • Fixed Dates: Setup check-in and check-out date.

Backend
Frontend

1.7: Add Tour with Duration

  • Time Slots: Yes

  • Hours: Enter the number of hours for the tour

  • Schedule: The Price in Duration will take priority over the global price.

Case 1: The Price Is Calculated Based on the Number of Guests in each Type

Total Amount = 3 (Adults) * $10 + 1 (Children) * $7 + 1 (Baby) * $7 = $44

Frontend
Backend

Case 2: A Fixed Total Price for each Guest Type

In this case, for each guest type (like adults, children, or babies), the total price is a fixed amount, no matter how many guests of that type are included in the booking.

Example: A customer books a tour with 2 Adults, 1 children and 1 baby at 07:00 on Monday

→ Price of 2 Adults = $10 ( total price of adults is $10 , no matter how many adults are included in the booking )

Total Amount = Fixed tour price for Adults + Fixed tour price for Children + Fixed tour price for Babies

= $10 + $7+ $7 = $24

1.8: Add Features

Icons: you can find icon class here

Backend
Frontend: Product Detail

1.9: Add Global Discount

  • Price in Global Discount will override both the global price and the duration-based price.

  • The system will apply a discount depending on the total number of guests (Adults + Children + Babies).

  • If you want to apply a discount depending on the number of Adults only or Adults + Children, you only need to customize the code using following hook:

add_filter( 'ovabrw_get_price_by_global_discount', function( $gd_prices, $product_id, $numberof_adults, $numberof_children, $numberof_babies ) {
    return $gd_prices;
}, 10, 5 );
Backend
Frontend - Booking Form

1.10: Add Price with Special Time

  • Price in special time will override global price, duration-based price and global price.

  • The system will apply a discount depending on the total number of guests (Adults + Children + Babies).

  • If you want to apply a discount depending on the number of Adults only or Adults + Children, you only need to customize the code using following hook:

add_filter( 'ovabrw_get_price_by_special_time', function( $special_time_prices, $product_id, $checkin_date, $numberof_adults, $numberof_children, $numberof_babies ) {
    return $special_time_prices;
}, 10, 6 );
Backend
2 Guests

1.11: Add Resources

Example 1: The Resource Price Is Calculated Based on the Number of Guests in each Type

In this case, the price of each resource is calculated based on number of guests in each type

Total = 1 (Adult)*$390 + 1 (Children)*$200 + 1 (Baby)*$100 + 1 (Adult resource)*$10 = $800

Backend
Frontend: Booking Form

Example 2: A Fixed Resource Price for each Guest Type

In this case, for each guest type (like adults, children, or babies), total price of a resource is a fixed amount, no matter how many guests of that type are included in the booking.

Suppose that The customer selected Resources 3 with 2 adults, the system still calculates the price of Resources 3 for only 1 adult.

Total = 1 (Adult)*$390 + 1 (Children)*$200 + 1 (Baby)*$100 + 1 (Adult resource)*$8 = $798

1.12: Add Services

Example 1: The Service Price Is Calculated Based on the Number of Guests in each Type

In this case, the price of each service is calculated based on number of guests in each type

Total = 1 (Adult)*$390 + 1 (Children)*$300 + 1 (Baby)*$100 + 2 (Adults )*$10 = $810

Example 2: A Fixed Service Price for each Guest Type

In this case, for each guest type (like adults, children, or babies), the total price of a service is a fixed amount, no matter how many guests of that type are included in the booking.

Suppose that the customer selected pack 1 ( an extra service) with 2 adults, the system still calculates the price of the service: "pack 1" for only 1 adult.

Backend
Frontend: Booking Form

1.13: Add Unavailable Time

Backend
Frontend: Booking Form

1.14: Add Place

a) Short Address

The short address will be displayed in Archive/Category, Single Tour instead of address in google map.

b) Show Map

You can choose: Global, Yes, No

  • "Global": Use setting in global settings for map

  • "Yes": Show Google Map and Google Map Iframe

  • "No": Hide Google Map and Google Map Iframe

c) Use Google Map:

You have to insert Google Key Map in Settings to display Google Map here.

Backend
Frontend: Product Detail

d) Use Iframe to display a Route Tour

Create a route tour in Google Maps, then use the "Share or Embed a map" feature to get the iframe

Setup a route tour in google map
Backend: insert iframe html
Frontend: Tour detail page

1.15: Advanced Options

1) Product Template

2) Disable Weekday

  • Enter the numbers that correspond to each day of the week:

0: Sunday
1: Monday
2: Tuesday
3: Wednesday
4: Thursday
5: Friday
6: Saturday

Example:

  • Backend: Enter 0,6

  • Frontend: The calendar will block Saturday and Sunday.

3) X days preparation time

Example:

  • "X Days Preparation Time": 2

  • Today is 25 July

  • => The customer is allowed to book from 27 July

4) Book before X hours today

Example:

  • "Book before X hours today": 18:00

  • Today: 25 July ⇒ If now is 15:00 => The customer can book this product today ⇒ If now is 19:00 => The customer can't book this product today

Setup Backend
Setup Backend: Slot time for booking

5) Guest

a) Setup

  • Show children field: "Global", "Yes", "No" options

    • Global: Get value from WooCommerce >> Settings >> Booking Tour >> Guests >> Show children field.

    • Yes: Use children for this tour.

    • No: Not Use Children for this tour.

  • Show Babies field: Choose "Global", "Yes", "No"

    • Global: Get value from WooCommerce >> Settings >> Booking Tour >> Guests >> Show babies field.

    • Yes: Use Baby for this tour.

    • No: Not Use Baby for this tour.

b) Example

  • Step 1: Choose "Show babies field": No

  • Step 2: Save Tour

  • Step 3: All baby fields will be hidden in both the backend and frontend sections.

6) Custom checkout fields

Use Custom checkout fields in Booking Form, Request Form.

Backend product
Frontend - Booking Form

a) Config

  • Display custom fields from: Category Settings, New, No

    • Category Settings: Get value that are set up in the category. Lean more in categories

    • New: You can insert slug of multi custom checkout fields here. Lent more in Custom Checkout Field

      • Example:

    • No: Don't use any custom checkout fields.

7) Check-out field

Show/Hide Check-out date field in booking form, request form

Display: Global Settings, Yes, No

  • Global settings: Get value that are set up in Global Settings (WooCommerce settings)

  • Yes: Display the field .

  • No: Hidden the field.

8) Forms

Display Booking Form, Request Form, Enquiry Form in tour detail

Setup

  • Show Forms: Global settings, only booking form, only request form, only enquiry form, show all

    • Global settings: Get value that are set up in the Woocommerce ( Go to WooCommerce >> Settings >> Booking Tours >> Product Details >> "Show booking form", "Show request form", "Show enquiry form"). Learn more in Show Forms

    • Only Booking Form: Learn more in Tour Template

    • Only Request Form: Learn more in Tour Template

    • Only Enquiry Form: Show content of shortcode. You can insert Shortcode of "contact form 7" plugin.

    • Show All: Show 3 forms

  • Enquiry Shortcode: Insert a shortcode like contact form 7, so the shortcode will display in Enquiry Form.

    • If you empty this fields, the tour will get shortcode in Enquiry Setting under WooCommerce Settings.

    • Config Contact Form 7: You have to insert "[product-link]" in "Message body", so you will see Tour Title and link of tour in mail.

Choose Header & Footer for this tour.

  • Global: Get value in Customize (Apperance >> Customize >> WooCommerce >> Product Detail >> choose "Header", "Footer" setting )

  • Default: Use "Default" header/footer of theme.

  • Header, Header Banner, Header Blog Detail, Header 4, Header 6, Footer 1, Footer 2, Footer 3 ...: There header/footer build with elementor. Learn more in Header Setting and Footer Setting.

1.16: Add Included/Excluded, Tour Plan

Step 1: You have to install and active CMB2 plugin

Step 2: Show "Included/Excluded, Tour Plan" section when create a tour

Step 3: Insert Data

Step 4: Display in tour detail page

2: Tour Template

To learn how to create, customize, and assign tour templates for each tour, please read here.

Last updated