View Product Page

Hourly bookings

The “Hourly bookings” are useful in the following cases:

  • Appointments
  • Lessons
  • Courses
  • Bookings whose duration can be configured by hours

You can enable hourly bookings in the “Booking settings”  by selecting “hour(s)”.

Hourly bookings

You can choose either ‘fixed units of’ or ‘customer can book units of’. Below we will give 2 examples using each one of the options.

  • Example for fixed units of – Restaurant booking
  • Example for customer can book units of – Tool rental
example – fixed units of – restaurant booking

We create a bookable product for a restaurant, brunch and dinner, where people can book fixed units of 2 hours. We are closed on Monday mornings and Tuesdays. From 14.30 – 16.00, we have our break. Our daily opening hours are; Brunch from 10.30 – 14.30 and dinner from 16.00 – 22.00.

Booking settings - Restaurant example

Booking settings - Restaurant example

To start off, we set the ‘booking duration’ to “Fixed units of” 2 hour(s). And we set a price of $30 for 2 hours, multiplied by the number of people.

Now we move on to the default booking availability rules.

Default hours restaurant example

We set all days to “Bookable” and select “Set hours” so we can start applying our default opening hours. Below an example of what the booking form will look like for the customer:

booking form view restaurant example

Now that we have set our opening hours, we will use the “+ Add options for specific days” option, to decide our days of closure.

availability days restaurant example

We set Monday to bookable from 16.00 to 22.00 as we are closed for the morning, and we set Tuesday to not bookable all day. These rules you add here will override the default availability rules you set before.

Below an example of what the booking form will look like when the customer wants to select one of these days:

days with rules restaurant examples
example – Customer can book units of – tool rental

We create a bookable product for a floor cleaning machine rental.  People can choose for how many hours they need the product. We are closed on Monday morning and Sunday, and open till late on Fridays. Our daily opening hours are from 06:00 to 17.00 and on Friday until 21.00.

example settings tool rent
example settings tool rent

To start off, we set the ‘booking duration’ to “Customer can book units of” 1 hour(s). And we set a price of $25 per hour.

Now we move on to the default booking availability rules.

add options to tool rental example

We set all days to “Bookable” and select “Set hours” so we can start applying our default opening hours. Below an example of what the booking form will look like for the customer:

frontend example tool rent

Now that we have set our opening hours, we will use the “+ Add options for specific days” option, to decide our days of closure.

added options for special days example

We set Sunday to not bookable all day, we set Monday morning to not bookable from 06:00 to 12:00 as we are closed for the morning. And we set Friday to bookable from 06:00 to 21:00. These rules you add here will override the default availability rules you set before.

Below an example of what the booking form will look like when the customer wants to select one of these days:

options special hours example customer

No time available in calendar

For per-minute bookings, the plugin adds the possibility to disable the complete day, if no time is available. You can do so by enabling the option “Disable day if no time is available“. From YITH > Booking > Settings > “Booking forms”.

option disabled and enabled

We know that all hours of 8 November are booked, therefore it is no longer possible to book this date. In the example above you can see an example of the “Disable day if no time is available” option disabled and enabled.
In the disabled image, you can see the date as ‘bookable’ but when you click on it you’ll see ‘no time available‘. In the enabled image, you directly see the date as “not bookable”.

Please note: if enabled, the calendar will show up to 1 month.

Per-minute bookings

The “Minute bookings” are useful in the following cases:

  • Appointments
  • Lessons
  • Bookings which duration can be configured by minutes

You can enable minute bookings in the “Booking settings”  by selecting “minute(s)”.

Choose units of minutes

You can choose either ‘fixed units of’ or ‘customer can book units of’. Below we will give 2 examples using each one of the options.

  • Example for fixed units of – Call with professor
  • Example for customer can book units of – Massage
example  for fixed units of – call with professor

We create a bookable product for a call with the professor at your university.  Students can book fixed units of 15 minute calls. The professor only works on Monday, Tuesday and Thursday morning, from 08:00 to 12:30.

Call with professor example
Call with professor example

To start off, we set the ‘booking duration’ to “Fixed units of” 15 minute(s). And we set a price of $0, as this is a free call with the professor.

Now we move on to the default booking availability rules.

default availability professor example

We set all days to “Not bookable” and select “+ Add options for specific days” so we can start applying our default availability hours. In this case, it is quite clear, we add the 3 days and their specific hours.

The options we set in “+ add options for specific days” will override the default availability (first line).

Below an example of what the booking form will look like for the student:

student view example fixed minutes
Example for customer can book units of – massage

We create a bookable product to schedule a massage, where people can book sessions of 45 minutes. We are only open on weekdays in the late afternoon, except for Wednesday when we open only in the afternoon. Evening hours are from 16:00 to 22.00 and on Wednesday from 12.00 to 18.00.

Massage example
Massage example

To start off, we set the ‘booking duration’ to “Customer can book units of” 45 minute(s). And we set a price of $30 per session of 45 minutes.

Now we move on to the default booking availability rules.

We set all days to “Bookable” and select “+ Add options for specific days” so we can start applying our default availability hours. We add the special hours for Wednesday (overriding the default hours) and the days of closure for the weekend.

The options we set in “+ add options for specific days” will override the default availability (first line).

Below an example of what the booking form will look like for the customer:

example 45 minute bookings

No time available in calendar

For per-minute bookings, the plugin adds the possibility to disable the complete day, if no time is available. You can do so by enabling the option “Disable day if no time is available“. From YITH > Booking > Settings > “Booking forms”.

option disabled and enabled

We know that all times of 8 November are booked, therefore it is no longer possible to book this date. In the example above you can see an example of the “Disable day if no time is available” option disabled and enabled.
In the disabled image, you can see the date as ‘bookable’ but when you click on it you’ll see ‘no time available‘. In the enabled image, you directly see the date as “not bookable”.

Please note: if enabled, the calendar will show up to 1 month.

Time increment for hourly and minute bookings

By enabling the option Time increment based on duration” you can override the default time increment. The increment will be the same as the booking duration. Therefore, for a two-hour booking, the times shown will be 8:00; 10:00; 12:00; etc.

hourly booking example

By default, the time increment for hourly bookings is 1 hour. In this example, we have created a two-hour booking and we activated the “Time increment based on duration” option (in “Booking availability).

Time increments based on duration
Time increments based on duration

This means that on the frontend, the customer will directly see time blocks of 2 hours when the option is enabled.

increment enabled disabled booking

With the option disabled, the customer will see all available hours, and will only see the time increment of 2 hours after someone has placed a booking.

Hourly booking + buffer time

For this example, we have created a 2-hour booking and set the “Buffer time” to 1 hour.

Buffer time and increments settings

The availability will consider both the booking duration of 2 hours (+ time increment) and the time buffer time of 1 hour after a booking is placed.

before after booking buffer

As you can see, before the booking you see all hours available. Now we book the 1:00 pm time frame for 2 hours. The customer that wants to make a booking after that, will see 5:00 as the next available time. Considering the 2 hour for the booking + 1 hour buffer time.

minute booking example

By default, the time increment for minute bookings is 15 minutes. In this example we have created a 30-minute booking and we activated the “Time increment based on duration” option (in “Booking availability).

Minute bookings with time increments
Minute bookings with time increments

This means that on the frontend, the customer will directly see time blocks of 30 minutes when the option is enabled.

With the option disabled, the customer will see all available hours, and will only see the time increment of 30 minutes after someone has placed a booking.

Minute booking + buffer time

For this example, we have created a 30-minute booking and set the “Buffer time” to 30 minutes

The availability will consider both the booking duration of 30 minutes (+ time increment) and the buffer time of 30 minutes after a booking is placed. As you can see, before the booking you see all hours available. Now we book the 10:00 am time frame for 30 minutes. The customer that wants to make a booking after that, will see 11:00 am as the next available time. Considering the 30 minutes for the booking + 30 minutes buffer time.

example Time increment including buffer

This option is available for both hourly and minute bookings. In this example, we use a case with a ‘minutes‘ booking.

We have set the booking duration to a “Fixed unit of” 30 minutes.

Buffer time and time increments including buffer

Note: this option only becomes available when you select “Fixed units of” in the Booking settings > duration.

We have set an example using a buffer time of 15 minutes and enabled the “Time increment including buffer” option (in “Booking availability).

buffer included enabled and disabled

Above you see an example of what the booking form looks like when you enable and disable the option. With the option enabled, you can see the 30-minute booking + 15 minutes buffer included. With the option disabled, you will only see the 30-minute booking time frame, after the customer places a booking, the buffer time will be applied as shown in “Minute booking” and “Hourly booking” examples.

How to add resources to your products

Once you have configured the resources, you can add them to your bookable product(s). So, go to the product settings.

At this stage, you should have already set your product type to “bookable product” and configured the product’s basic settings and cost.

In the same booking tab, you will also see a “Resources” subtab, with two sections, one for 1. Resources settings and the other one for picking up the 2. Resources and add a price if needed.

1. Resources settings

Resources settings

Enable resources: enable the option to assign resources to the product. 

Resource assignment: choose how to assign the resources: you can have customers select only one resource or multiple resources, or you can automatically assign one available resource or all resources. 

  • Customer can select one resource: you can also optionally choose to make this selection Required.
  • Customer can select one or more resources: they may also not select any resource.
  • Automatically assign one resource: the plugin will automatically assign the first available resource in the list below and the resource picker will not be visible on the frontend.
  • Assign all resources: all resources will be automatically assigned. Also, in this case, the resources picker will not show on the frontend, so if the resources have a cost, we suggest you list all the resources’ costs in the product description.

Label: set the label for this product resource. This will be used in cart and totals site-wide. For example, if it’s a fitness lesson, your resources might be “Trainers”.

Label (product page): Choose the label for the resources as it will appear before the drop-down menu on the product page. If not set, the default Label will be used (available only when ‘Customer can select one‘ or ‘Customer can select more‘ is selected).

Field placeholder: Choose the placeholder for the resources drop-down menu (available only when ‘Customer can select one‘ and the ‘Required’ option is enabled, or ‘Customer can select more‘ is selected).

2. Resources and prices

In this second section, you can add the resources from the list you’ve previously created.

Pick your resources

Once selected, for each of them you can set:

  • Base price for booking unit: this value will be multiplied by the number of units purchased (for example, if the product has been set in booking units of 1 hour each, it will be the cost per hour)
  • Fixed base fee: this is a general cost that applies to the booking, regardless of the booking duration.
    For example, I may want to charge $5 for a training class with Dory and an additional cost of $2 per hour. If I book a 2-hour class, I will be charged $9 ($2×2 + $5).
Set price for each resource

Resources will be shown in the booking form like this: 

Select resources - frontend.jpg

Google Calendar Sync for all bookings

Thanks to the integration with Google Calendar, the admin can view bookings on his/her own Google Calendar. The booking synchronization is a one-way sync (from your site to Google Calendar).

The Google Calendar sync is available only for the admin: you can set up a unique Google Calendar account to synchronize all bookings with your Google Calendar.

If you want to use it, first of all, make sure you enable it from the Modules subtab.

Modules-Google calendar

Then, you will be able to set up your Google Calendar in YITH > Booking > Settings > Calendars > Google Calendar.

google calendar credentials

This feature is useful to see all bookings in a Google Calendar, but it’s not useful to prevent overbooking.

Example

Admin Google calendar

Single product sync with Google Calendar

On the other hand, about “Booking synchronization with external services” (such as Airbnb and Booking.com), you can add your own ICS files (iCal) to synchronize a specific product with external services in the Sync tab on the product edit page.

Booking sync in product
  • you can set the external calendars
  • you can use this URL to add it to your external services

However, you cannot use the iCal Booking Sync to manage bookings through Google Calendar; or better, you can create 2 calendars (One and Two) on Google Calendar

  • add the Booking iCal URL to your Google Calendar One
  • add the iCal URL of your Google Calendar Two in the external calendars table (in the Booking Sync tab)

This is to prevent double sync issues.

On the other hand, about iCal, Google Calendar synchronizes external calendars every xx hours, so if you create a booking on your site it will not be synchronized by Google Calendar instantaneously. It will be synchronized after some hours.
Google specifies it could take up to 12 hours to be synchronized (you can read it here.

Single Product Sync

If you also use external services such as Booking.com or Airbnb to sell your booking products, you need to prevent overbookings. To prevent your bookable products from being overbooked, you can synchronize their availability with your calendar. Through the option Booking sync available on the product edit page, you can import ICS calendars by adding the names and URLs of the external services.

You can see a sample of how your calendar will be shown in the image below.

Dashboard calendar

Two-way sync samples

Follow these samples to apply the two-way sync with Bookign.com and Airbnb.

Sample 1 (Booking.com)

Booking.com -> YITH Booking and Appointment for WooCommerce:

You have to set the iCal URL provided by Booking.com in the Booking Sync tab.

YITH Booking and Appointment for WooCommerce -> Booking.com:

Now set the iCal URL of the Booking product that you find in Booking Sync tab and export it to Booking.com settings through the Export Future ICS URL feature by copying the link and pasting it on Booking.com.

You can import iCal calendars in Booking.com by following this guide: https://partnerhelp.booking.com/hc/en-gb/articles/115005213509-How-to-export-or-import-a-calendar

Sample 2 (Airbnb.com)

Airbnb.com -> YITH Booking and Appointment for WooCommerce:

You have to set the iCal URL provided by Airbnb.com in the Booking Sync tab.

YITH Booking and Appointment for WooCommerce -> Airbnb.com

Now set the iCal URL of the Booking product that you find in Booking Sync tab and export it to Airbnb.com settings through the Export Future ICS URL feature by copying the link and pasting it on Airbnb.com.

You can import iCal calendars in Booking.com by following this guide: https://www.airbnb.com/help/article/99/how-do-i-sync-my-airbnb-calendar-with-another-calendar

External calendars

In the plugin Settings section, you can find these two options:

external calendar settings
  • Calendar synchronization expires after:
    The Sync Expiration is the minimum time for which the external sync is considered expired.
    By way of example, if you set this option to 30 minutes and synchronize a Booking product now (by contacting external services such as Airbnb or Booking.com), the loaded data will expire in 30 minutes.
    So, if a customer checks the availability now, the plugin uses the loaded data as it is not still expired. After 30 minutes, the data will be no longer updated automatically, since it requires to be synchronized again.
    If a customer checks the availability after 1 hour, the plugin will consider the data as expired and will update the external data to check the correct availability.
     
    It is recommended to set this option to a reasonable value to improve performance. Therefore, if you usually get a booking every 6 hours, you can set Sync Expiration to 2 hours.
    As a general rule, 30 minutes is a good sync expiration time for every Booking system.
    Please note: Airbnb synchronizes external bookings every 2 hours.
  • Show bookings of external calendars in plugin calendar
    By enabling the option Show externals in calendar, external bookings will show in Booking > Calendar too.

For a better understanding of the two different sync systems, please, refer to this page too.

Ask for a booking confirmation

You can decide to enable the “Require confirmation” option so your customers will have to request a confirmation in order to be able to place a booking.

You can find this option in Booking options > Settings > Booking Terms within the product edit page.

Request confirmation

On the frontend the user will see a Request confirmation button instead of Book now.

Pending confirmation

The booking request will appear in All Bookings section and will be assigned the Pending status.

Confirm or reject the confirmation

The admin can either confirm or reject the booking request, by hovering over the status.

confirm or reject

Two options will appear to either confirm or reject the booking request.

Or you can also enter the booking itself, and change the status.

Confirm booking request

In both cases, the users are notified via email of the admin’s answer.

Emails to customers

If the booking is confirmed, the email will include a button to allow the user to pay for the booking.

confirmed booking email

By clicking on the “pay booking” button, the bookable product is automatically added to the cart and the user can complete the order.

Now the booking order is created and associated to the request that had been previously submitted.

When a booking is rejected by the admin, the customer will also receive a notification via email.

rejected booking email

There is no further action the customer can take.

Reject a pending confirmation automatically

With the option “Reject a ‘Pending confirmation’ booking after a specific time”, you can choose to automatically reject bookings with pending confirmations, when reaching an xx amount of days.

Reject options

When reaching -in this example- 15 days, the customer will automatically be notified via email about the rejected booking confirmation.

Booking without request confirmation

A booking request without confirmation is a bookable product that you can book directly. In this case, the “Require confirmation” option is disabled.

Booking without confirmation

When users place a booking, they are actually purchasing one of the products of your store.

Therefore, if all booking criteria are met (availability, duration, people), the product can be added to the cart and purchased just like any other WooCommerce product.

your booking order

And just like purchasing any other WooCommerce, once the purchase is completed a new order is created and its status varies according to the payment method used.

At the same time, the new booking is added to the “All bookings” section in YITH > Booking > Dashboard. It is automatically associated to the related order.

Unpaid booking

To open the booking and see its details, simply click on the booking number (first column) and you will see the edit booking page.

Booking related order

From within the booking edit page, you can click on “View order” to see the related order.

How to cancel a booking

If you want to allow users to cancel a booking they have already submitted, you can enable the “Allow cancellation” option from Booking Options > Settings > Booking Terms in the product edit page.

Allow cancellation option

Your users will be able to cancel their booking no later than xx days/months before the booking start date.

Users can cancel the booking from their “My Account” page on your website.

cancel booking

The admin will see the booking appear with the “Cancelled” status.

Cancelled booking

Note: The plugin does not handle any other refund option related to booking cancellation.

Booking status

The booking status is automatically changed based on the status of the associated order or on any actions performed by the user or the admin.

status colors

  • “Unpaid”: if the order status is set to “pending” or “on hold”
  • “Paid”: if the order status is set to “processing” or “completed”
  • “Cancelled”: if the user has cancelled the booking
  • “Pending”: if the booking request is waiting for admin confirmation
  • “Confirmed”: if the booking request has been confirmed by the admin
  • “Rejected”: if the booking request has been rejected by the admin
  • “Completed”: this status can either be assigned manually or automatically after a certain number of days if the option Set paid booking to “Completed” in YITH > Settings > “General settings” has been enabled.

All changes in the booking status are notified via email, you can find examples of these different emails here.

Booking status vs. order status

When the order is placed (eg. order is in ‘pending payment’) the booking is created in ‘unpaid’ status. When the order is changed to ‘completed’ or ‘processing’ the booking status automatically changes to ‘paid’. When an order is cancelled, the booking status will also change to ‘cancelled’ automatically.

The status of the booking can be adapted manually by the admin, and will be visible to the customer in the ‘Bookings’ section of their My Account page.

User view

After accessing the “My Account” page, users can verify the status anytime.

customer view status booking