FAQ

 

Pre-Sales Questions

It's one time cost. You can use your purchased version of Booking Calendar as long as you need on your website.

Also, you can request free updates your version of Booking Calendar (if such updates ready) during 6 months after initial purchase of plugin.

If you will need to extend period of support and getting updates to next 6 months, it will cost 50% from the original cost of your Booking Calendar version (original cost - its cost of Booking Calendar version without other discounts).


Optional subscription of getting updates with discounted cost.
Please note, during initial purchase of plugin, its possible to select (or deselect) optional subscription (billing each 6 months) for getting Updates and Support for plugin with additional discount. First 6 month during initial purchase of plugin, getting of updates is for free. Possible to cancel subscription of getting updates at any time.

If you was not selected subscription of getting "Updates and Support" during initial purchase, and if you will need (in a future) to extend period of support and getting updates to next 6 months, it will cost 50% from the original cost (original cost - its cost of Booking Calendar version without other discounts).

You can request new update of Booking Calendar on this page.

If my subscription for updates has expired or is canceled, will the plugin continue to work?

Yes, the plugin will continue to function as before, but you won't receive free updates for Booking Calendar.

While the plugin should work with your current WordPress version, there is a potential risk of conflicts with future WordPress updates. We can't predict the changes in future WordPress updates, and older plugin versions may experience issues.

To ensure the best performance, prevent potential compatibility or security issues, and keep your bookings safe, we strongly recommend keeping your Booking Calendar up-to-date and maintaining an active subscription for the latest updates and support.

Upon the initial purchase of the plugin, you can request free updates for your Booking Calendar version (if updates available) within 6 months after initial purchase of plugin. Additionally, alongside this purchase for receiving the latest update, you can activate an optional subscription at a discounted rate.

Optional Subscription for Updates:

1) When purchasing the plugin initially, you have the option to select or deselect an optional subscription for updates and support, billed every 6 months. For the first 6 months after the initial purchase, updates are provided for free. You can cancel this subscription at any time.

2) If you did not select the subscription for updates and support during the initial purchase, or if your subscription was canceled or expired, and you later need to extend the period of support and updates for the next 6 months, it will cost 50% of the original cost of the Booking Calendar version, without any additional discounts applied. Additionally, the system offers further discounts for subsequent subscription charges every 6 months.

However, the initial charge for this update is 50% of the original Booking Calendar cost ( without any additional discounts applied ).

You can request the latest update of the Booking Calendar on this page.

Yes, its possible to make upgrade from lower version to the higher versions of the same editions (for example from the Booking Calendar Personal single site usage version to the Booking Calendar Business Small single site usage version).
But its does not possible to make upgrade from the single site usage version to the "developer" or multi site usage versions or from the "developer" to the multi site usage versions.
The cost of upgrade from the lower to higher versions, usually higher than difference in cost between 2 versions.
The cost of upgrade from the lower to higher versions of single site usage versions higher on $5 than difference in cost between 2 versions.
The cost of upgrade from the lower to higher versions of "developer" edition versions higher on $10 than difference in cost between 2 versions.
The cost of upgrade from the lower to higher versions of multi site usage versions higher on $15 than difference in cost between 2 versions.

Booking Calendar offers a range of versions and editions to suit different needs. It's important to distinguish between the versions, which determine the functionality, and the editions, which specify the number of websites on which you can use the plugin.

Editions:

Each version can be obtained in different editions, which dictate how many websites you can use the plugin on. The editions include:

Single Site Usage: This edition allows installation and activation on a single, specific website. It's suitable for those who have only one website to manage.

Developer Edition: With the developer edition, you can install and activate the plugin on up to 2 different websites. This is useful for testing on a developer server and a live website.

Multi-Site Usage: The multi-site usage edition enables installation and activation on a maximum of 5 different websites, making it suitable for businesses with multiple online platforms.

You can check overview of different Booking Calendar versions.
You can also check all available features for different versions of Booking Calendar.
Also you can test live demo of specific versions (both client and admin sides) to be sure in functionality and do not have misunderstanding.

Booking Calendar "Free" - this version is free, you can download it from WordPress directory.
It's very easy in use and powerful version for the creating reservation of one resource.
At this version is possible to make reservation for the one resource, like a room or car, or some service... etc. You can insert into the post or page the standard booking form with fixed number of fields and availability calendar, where visitor can select single or multiple days. Administrator and visitor can receive the standard email notifications about different actions, like a "new booking", "approve/decline/... of booking", etc... Administrator can make the booking at admin panel at the "Add new booking" menu page and configure the different settings of the booking form and availability calendar at the general booking settings menu page.

Booking Calendar Personal - it's paid version, where is possible to have booking availability calendar for the each of multiple booking resources (like a room, cars or any services, etc…). You can add new and configure exist fields in the booking form. Also you can configure the email templates for the different booking actions. You can able to edit the exist bookings, add comments to the bookings, print and export bookings to the CSV format, etc… Please check at the feature list and live demo of this version, full list of features of this version.

Booking Calendar Business Small - it's paid version, where is possible all actions from previous versions, plus you can receive the bookings for the specific time of date, set the cost of booking resource and integrate the online payment form of supported payment systems. Your visitors can make the rage days selection using the one mouse click in calendar, or setting minimum or sets of fixed number of days selection using 2 mouse clicks (check in and checkout dates), all middle dates will be selected automatically. Also here is possible to use the same date as check in/out date for the different bookings by activating the fixed time at the settings page.
Please note, if you will use the fixed time slot list selection (and not the time entering using the text fields) in the booking form, the timeslot list will be the same for the any date of week, in other words the fixed time slot list is not depend from the week of day. Also if some visitor will reserve the specific time slot at selected date at specific booking resource (calendar), this timeslot become unavailable for the other visitors at this selected date in this booking resource.
And much more... Please check at the feature list and live demo of this version, full list of features of this version.

Booking Calendar Business Medium - it's paid version, where is possible all actions from previous versions, plus you will have more advanced cost and availability management of the bookings. At this version is possible to set the rates, which will depend from the season filters, plus you can set the more advanced cost for the booking, where cost is depend from the number of selected dates. Also you can set additional cost for the option selection at selectboxes or checkboxes at your booking form. this additional cost can be fixed sum or percent from the final cost of booking. You can even activate and configure for the resources the deposit payment feature, what is mean that visitor will pay at the payment form, the part of the final cost of the booking. This version is also support settings availability per each booking resource, which is depend from the season filters. Also you can able to configure the several customization of booking form fields, it's mean that different resources can have different form fields. You can send the payment requests to visitors for the specific booking by email. And much more.... Please check at the feature list and live demo of this version, full list of features of this version.

Booking Calendar Business Large - it's paid version, where is possible all actions from previous versions, plus you can make the several reservations per the same FULL date (not a time slot) for the same booking resource (availability calendar). At this version is possible to set the capacity of the booking resource, it's mean that your visitors can make the several reservations per the same date, in other words, the date(s) in calendar will be available until lumber of reservations per these full dates is less than capacity of the booking resource. Please note, if you will use the timeslot selection for the booking resource with capacity higher than one, so then this timeslot will be simply record as a data into DB according this booking, but will not impact to the time availability. Also at this version you will be able to search the available booking resources in your pages or posts for the specific check in/out dates and specific number of visitors. This version is also support the coupon codes for getting discounts of bookings. And much more.... Please check at the feature list and live demo of this version, full list of features of this version.

Booking Calendar MultiUser - it's paid version, where is possible all actions from previous versions, plus each registered WordPress user of your site can have independent, individual, own booking admin panel. It's mean that each regular registered WordPress user can see only OWN booking resources and bookings and can configure the own booking form fields and email templates, own payment form integration data and costs of booking resources as some other settings... In this version is exist also the "super booking admin users", which can see and manage the bookings and booking resources from the all users and manage the status of other bookings users. And much more.... Please check at the feature list and live demo of this version, full list of features of this version.

Unfortunately we can not make personal customization or custom development on customer demand. But we can add features, that you need to our TODO list for implementing them in a future updates. You can add your request of specific feature at this page.
Please note, we can not specify some approximate time for implementation of the specific feature.
Thank you for understanding.

Please watch video guides, check FAQ and check already answered solutions at the plugin forum, before sending new question.

If you still have a questions about configuration of plugin you can contact by this email or through support forum.

Please note, you will get response during 24 hours, usually we are response during 2-3 hours during working hours (10:00 - 18:00 UTC+2). If you do not see response, please check your SPAM folder, or recheck that you was contacted us from the valid email.

Please note, we can help with specific questions about configuration or troubleshooting.
But we do not provide full configuration at customer website and do not provide any customization of source code, etc.... We do not provide teaching of using WordPress or configuration of WordPress websites or configuration of your servers, as well.
Please provide detailed info about specific issue. Do not write like "it’s does not work". We can not help with such "general" questions, please be more specific. Write about what exactly issue do you have or what exactly configuration you need a help.

We are expected that your support questions will be kind, helpful, and respectful. Violation of this point can be reason of stop support to such person.

Do not send "bumb" emails. Sending "bumping" emails can be reason of delay of responding to such emails. Please wait the answer to specific one email, then ask other questions.

We can not help with questions that relative to work or configuration of other services or systems. Please ask for a help support of specific service or system. This support is only about functionality and configuration of "Booking Calendar" plugin.

Please note that we cannot use any login credentials to access your website for testing or configuration purposes. Instead, please provide us with screenshots or a video of the issue you are experiencing, along with a detailed explanation of how to reproduce the problem(*).

Please be sure to check the terms and conditions of usage plugin and support that we are providing.

You can get support and ability to request free updates during 6 months after purchase. After this period, if you will need to get updates for next 6 months or getting support it’s will cost 50% from the original Booking Calendar version cost (original cost - its cost of Booking Calendar version without other discounts).

(*) Updated on 2023-05-14

 

Installation / Update / Upgrade

1.Where to Download the Latest Update:

  • If you previously used the Booking Calendar Free version and want update to the paid version, you should receive in email a link to download the paid version. Or you can request the update of Booking Calendar paid version on this page. Please download the zip archive of your paid version.
  • If you already use the Booking Calendar Paid version and wish to upgrade to a higher version or get the latest update, follow these steps:
    • Important: Do not update from the WordPress directory, as it will install the free version.
    • Instead, request the new update of Booking Calendar on this page.
    • Check the conditions for getting updates here.

2. Before You Update:

  • Tip #1: If you've made any source code customization, such as modifying CSS, PHP, or JavaScript files, please be aware that these changes will be reset during the update process. During the update process, all Booking Calendar files are replaced with new ones.
    Sadly, we can't support personal customization or or retain individual tweaks from one update to another. If you've modified the source files, it remains your responsibility to handle these personal customization. Typically, such tasks are handled by your web developer. Thanks a bunch for understanding. Please check what support we are providing here.

  • Tip #2: We recommend making a backup of your database and Booking Calendar folder before proceeding. This ensures you can revert to previous versions and data if needed.

3. Update Process:

After downloading the zip archive with the updated plugin version (you can request update of Booking Calendar on this page), follow these steps:

  • 3.1. Go to WP Booking Calendar > Settings > General page and navigate to the "Uninstall / Deactivation" section. Double-check that the option "Delete booking data, when plugin deactivated" remains disabled (unchecked). This prevents the deletion of all your booking data, including bookings, forms, email templates, and other settings, upon deactivation. Enabling this option will result in the deletion of all booking data during plugin deactivation.
    Settings to prevents the deletion of all your booking data.
  • 3.2. Navigate to the WordPress > Plugins menu and click "Deactivate" under the old Booking Calendar version. Wait for the message "Plugin deactivated."
    Uninstall Booking Calendar plugin
  • 3.3. (Optional) Click "Delete" under the old Booking Calendar version and wait for the plugin to be deleted.
    Delete Booking Calendar version.
  • 3.4. In the WordPress > Plugins menu, select "Add New Plugin" sub menu and click "Upload Plugin." Click on "Upload Plugin" button at top of page. Click on browse button in upload form choose the booking zip archive you downloaded and click "Install Now."
    Install new update of Booking Calendar plugin.
    Troubleshooting.

    • If you're seeing a folder full of files instead of the .zip archive, check out this troubleshooting guide.
    • If you receive a message like this: 'The uploaded file exceeds the upload_max_filesize directive in php.ini', please refer to this troubleshooting instruction.
    • If you prefer to upload the booking zip archive via FTP, refer to "point A" of this article for guidance.
  • 3.5. Return to the WordPress > Plugins menu and click "Activate" under the new version of Booking Calendar. Wait for the message "Plugin activated successfully." Before using the new update, clear your browser cache.
    Activate WP Booking Calendar plugin.

What's Next?

  • Read the general instructions on using paid versions of Booking Calendar.
  • Create different booking resources (unique calendars) for your properties or services at the Booking > Resources page. Check more here.
  • Learn how to insert booking forms or availability calendars for specific booking resource on your pages here.
  • Explore the main features and configuration options here.
  • For additional information, refer to our FAQ.

Using the WordPress Plugins menu page.
1) Open the WordPress Plugins menu, select "Add new plugin" submenu
2) In the search text field enter "booking" or "booking calendar" term and select search.
In the search results, find "Booking Calendar" (created by wpdevelop) plugin and click on "Install" link. Wait until the plugin is downloaded and installed.
3) Open the WordPress Plugins menu page and click on "Activate".
Wait for the message "Plugin is activated successfully". This is important. Otherwise not all DB tables will be created and you will have an error message.
The plugin is now ready for use.

Installation using the uploading of plugin zip archive.
1) Open the WordPress Plugins menu page, select the "Add New" plugin sub-menu and then click on "Upload Plugin" button at top of page. Click on the "Choose File" button and select the booking zip archive. Click on "Install Now" button and wait for the plugin to be uploaded.
If you will receive message like this: "The uploaded file exceeds the upload_max_filesize directive in php.ini", then please check this troubleshooting instruction.
If you want to upload the booking zip archive via FTP, then you need to extract the archive content. You have to get at result the booking folder with plugins files. Then upload entire this folder to ../wp-content/plugins/ folder at your server.
2) Now open the WordPress Plugins menu page and "Activate" that plugin.
Wait for the message "Plugin is activated successfully".
The plugin is now ready for use.

Please note, you can request the new update of Booking Calendar on this page.

A) Probably at your computer was set properties for the archive files to show as folder and that's why you see it as a folder.

Please check in your explorer to show the extension of the files. Then try to download it again and make upload to your website.

Check more helpful info here or here.

B) Or you can upload entire folder (not zip file) to your serve by FTP (skip 2 first points) :

1) Please download the archive of the Booking Calendar to your desktop.

2) Extract it from archive. You have to get the "booking" folder.

3) Please upload this folder, using the FTP manager to your server, to the folder ../wp-content/plugins/

If you do not have access to your server through FTP, then please contact support of your hosting company about this details.

4) Now open admin panel of your WordPress site at the Plugins menu, you have to see there Booking Calendar plugin. (If you was having previous free version, there, please deactivate it).
Please click at the "Activate" link of your new paid version.

5) Please wait until message will show that the plugin is activated successfully.

Now you have to be able to use Booking Calendar plugin.

Here is 2 solutions.

A) Upload using FTP manager. It's can be any ftp manager for uploading files to your server. If you do not have FTP access, so then please contact support of your hosting. Also they can recommend to you FTP manager that can be good for your server to upload these files.

1) Please download the archive of the Booking Calendar to your desktop.
2) Extract it from archive. You have to get the "booking" folder.
3) Then upload this folder, using the FTP manager (like FAR or some other) to your server, to the folder

../wp-content/plugins/

4) Now open admin panel of your WordPress site. At Plugins menu, you have to see "Booking Calendar" plugin.
(If you was having previous free version, there, please deactivate it).
Click at the "Activate" link of your new paid version.

5) Please wait until message will show that the plugin is activated successfully. Now you can use the Booking Calendar plugin.

B) Or you can ask your serve administrator or support of hosting company to extend max file-size limit at your server.

Thank you.

 

Using Booking Calendar

After activation of plugin, you are almost ready to use it.

Inserting the booking form into post or page (widget or any other place of your site)
Just open the edit post or edit page menu page or add new page or post and inside of the edit content toolbar click on Booking Calendar button (button with calendar icon). Inside of the configuration popup dialog configure the options, like number of visible month of calendar, inserting the booking form with calendar or just availability calendar (paid versions in additional will have possibility to select the specific booking resource, for having different booking availability calendars; in some versions also possible to select the custom booking form, or inserting the search form) and insert the booking shortcode into the content of post or page. Publish or update the post or page, open it at client side of site and you will be able to see and make bookings in the booking form.
You can also show the booking form or availability calendar using the booking calendar widget at your sidebar. So please open the WordPress widget menu page and configure the booking calendar widget.
It's possible to integrate the booking calendar form into the any other place of your site, using the special PHP code, please read more detail about this at the FAQ.

Checking new bookings.
After your visitors are made the booking at your site, you will receive the email about the new booking to the email, which you are set at the General booking settings page. You can check the booking at the "Booking listing" page of your WordPress admin panel. Each booking consist information about the dates of reservation data from booking form fields, ID of booking, date of booking creation, booking status, like approved or pending booking.
At the top of this page you can use the booking filter tab to show the bookings, which are fit to parameters of the booking filter.

Changing status of bookings (approve/decline/set pending/set as read).
You can approve, delete, set pending status, or mark as read for the single booking using the buttons at the right side of each booking at the "Booking Listing" page (mark the single booking as read, you can make by clicking on the "new" label at the left side of booking.
The same actions you can make at the multiple bookings, if you are select the multiple bookings, by setting checked the checkboxes at left side near each booking and using the specific button at the top of the page at "Actions tab".

Adding new booking.
You can add a new booking at the client side of site, as a regular visitor of your site, where you are inserted the booking form.
You can also add new booking at the admin panel at the "Add new booking" menu page. At this page you will see the same booking form as at client side.

Settings configuration of booking calendar.
You can configure the different settings of availability calendar, booking form or plugin options at the general booking settings page.

Main section of General Settings page.

"Admin email" - default admin email for notifications about new bookings and other actions in a booking system.
"Show hints" - show / hide help hints, at the admin panel.
Expanded advanced settings of JavaScript loading
"Dissable Bootstrap loading at Client side" - if your theme or some other plugin is load the BootStrap JavaScripts, you can dissable loading of this bootstrap script by this plugin. Please do not activate this feature, if no any other plugin or theme is not loaded these scripts, otherwise can be some issues (issue - warning message about not selected days in calendar during reservation process, even if the dates are selected).
"Dissable Bootstrap loading at Admin side" - if your theme or some other plugin is load the BootStrap JavaScripts, you can dissable loading of this script by this plugin. Please do not activate this feature, if no any other plugin or theme is not loaded these scripts, otherwise can be some issues.
Expanded settings of powered by notice
"Powered by notice" - turn On/Off powered by "Booking Calendar" notice under the calendar in booking form.
"Copyright notice" - turn On/Off copyright notice at footer of site view.

Calendar section of General Settings page.

"Calendar skin" - select the skin of booking calendar
"Number of months" - select your maximum number of scroll months at booking calendar. It's number of months, which you can scroll in calendar using the scroll month arrow in a header of calendar.
"Start Day of week" - select your start day of the week in calendar.
"Multiple days selection" - Activate or disable possibility to select single or multiple days in calendar. If you will leave this option unchecked so you will be able to select only one date in calendar.
"Unavailable days from today" - select number of unavailable days in calendar starting from today date. It's useful if you can not accept bookings for today or today and tomorrow days, etc...
"Unavailable days" - set the specific week days (Sunday / Monday / Tuesday / Wednesday / Thursday / Friday / Saturday) as unavailable days in calendars. This option is overwrite all other settings.

Form section of General Settings page.

"CAPTCHA" - activate CAPTCHA inside of booking form.
Auto fill fields" - activate auto fill fields of booking form for logged in users.
"Show legend" - hide or show legend of dates under booking calendar.
"Show "thank you" message after booking is done" - activating showing of the message for the specific time, after visitor is made the reservation.
"New booking title" - mesaage what is showed after booking has done by visitor.
You can use this shortcode inside of that message: [lang=LOCALE] - start new translation section, where LOCALE - locale of translation
Example #1: [lang=fr_FR] - start French tranlation section.
Example #2: "Thank you for your booking.[lang=fr_FR]Je vous remercie de votre reservation." - English and French translation of some message.

"Showing title time" - time count in miliseconds for showing "new booking title"
"Redirect visitor to a new "thank you" page" - instead of showing message for specific time, the visitor will be redirected to a new page, after he will made the reservation, if this option is activated.
"URL of "thank you" page" - URL of "thank you" page.

Booking listing section of General Settings page.

"Bookings number per page" - select number of bookings per page in booking listing
"Bookings default order" - select your default order of bookings in the booking listing
"Default toolbar tab" - select your default opened tab in toolbar at booking listing page
"Date Format" - set your dates format, like "June 10, 2012" or "2012/06/10" or "06/10/2012" or "10/06/2012" or custom format (please check more info at documentation on date formatting). This date format is apply to the dates in emails and booking listing table.
"Dates view" - select default type of dates view at the booking tables. You can select sowing of all dates, or showing only check in and check out dates for the each reservation at the booking listing page and inside of email templates.

User access level section of General Settings page.

"Bookings Calendar menu pages" - select the minimum user access role to access for the specific page of admin booking panel.

Uninstal / deactivation section of General Settings page.

"Delete booking data" - activate this option if you want to completly delete booking data during deactivation of plugin.

If you've upgraded to a paid version of Booking Calendar, follow these steps to maximize its functionality:

  1. Create Booking Resources: Start by creating booking resources for each of your properties or services on the Booking > Resources page. For more information on configuring booking resources, refer to the documentation on this page.
  2. Insert Booking Form: Once you've created your booking resources, you can insert the booking form for a specific resource (e.g., your property or service) into any posts or pages on your website. Learn how to insert the booking form or availability calendar into your pages or posts. You can also configure the Booking Calendar shortcode manually for more customization.
  3. Customize Settings: Finally, customize your settings such as form fields, email templates, prices and do Payment and availability configuration on the WP Booking Calendar > Settings pages to suit your specific needs.

The Booking Calendar MultiUser version have 2 types of the users: super booking admin and usual user.

The "first" WordPress admin user by default is "super booking admin" user.

So, firstly after activation of the plugin you have to see the booking panel for that user.

Then you are need to open the "general booking settings" page (this page is available only for the super booking admin users), then expand the User settings section at the right side and set the correct permissions (user roles) for the pages of the booking admin panel. Its required for the new WordPress users possibility to open the admin booking admin panel.

Now, you can create new WordPress user (the role of this user have to be higher or equal to the roles, which you are set at the previous step).

Now, you are need to open the Booking > Settings > Users page (you are have to be logged in as booking super admin user) and make activation of the booking admin panel for the new WordPress user.

Finally, you can log in as new WordPress user, and you will see own booking admin panel for this user. You can create new booking resource(s), configure the settings and insert the booking form(s) of this user into posts or pages, which is created by this user.

Workflow of configuration for do not have access of "Regular users" to Settings page and having unique configuration of booking form / Emails / Payments, as needed from view of super booking admin user.
So in case if you need to configure booking form field for regular user, and after this configuration block access to the settings field, you need to make following steps:
1) Please log in as "super booking admin user". I can suggest that this user have WordPress "Administrator" user role.
2) Open the Booking > Settings General page and set access level to "Settings" page as "Contributor" (or administrator).
3) Create new WordPress User (via standard WordPress admin panel), and set user role for this user as "Contributor" (or other user role, which you was set at point #2)
4) Open the Booking > Settings > Users page and activate booking admin panel for this new user as for "Regular user".
5) Now log in to WordPress admin panel as this specific "Regular user". Configure booking form fields and emails, and all other settings from Booking > Settings menu.
6) Log out and log in as "Super booking admin user". Now change "user role" for this regular user from "Contributor" to "Subscriber".
Now you can inform login and password of "Regular user" to real person.

Now if this user will log in into the booking admin panel (WordPress admin panel), he/she will not have access to the Booking > Settings page, and will have booking form as you was configured previously.

Booking Calendar it's WordPress plugin, which make possible to make bookings of any properties or services at your site by visitors. Your visitors can select a date(s) in a calendar, fill the booking form and make a booking. The booking data will be storied in DB of your site and you can check and manage it (approve/decline/delete/... etc. ) at booking admin panel at your site, the email notifications about those actions can be sent to the administrator and to visitor emails.
You can insert the booking form with availability calendar into any post or page of your site or configure and activate the booking widget for your site sideboard.

The booking admin panel is consist from several pages:
"Booking Listing" - at this page you can view and filter any bookings, which was done by visitors. Also at this page you can make specific actions for the bookings (please check at the feature list and live demos, what actions are available in specific versions of Booking Calendar).
"Add new booking" - at this page, you can add new booking manually from admin panel.
"Resources" (paid versions only) - at this page you can manage the booking resources. Booking resources can be any properties (like a rooms or cars...etc.) or services, which is make possible to have individual availability calendar for the each resource.
The free version of Booking Calendar have only one default booking resource, that's why this admin page do not exist in free version. Depend from the version of Booking Calendar in sub pages of the Resource menu you can set the cost of booking resources, rates, availability, which is depend from the season filters, or even set cost dependence from the number of selected dates or cost dependence from selection of options in selectboxes or checkboxes from your booking form. You can also set the coupons for discounts.
Please check at the feature list and live demos, what features are available in specific versions.
"Settings" at this page you can configure the different settings for the availability calendar or booking form. The paid versions have several sub menu pages for the configuration of form fields of the booking form, configuration of email templates for the different action notifications, configure and activation the online payment form integrations, search form configuration and users management. Please check at the feature list and live demos, what features are available in specific versions.
Inside of the "Widget" WordPress menu page you can activate and configure the booking calendar widget(s). In the paid versions are possible to activate several booking calendar widgets, each for the different booking resource.
Inside of the edit "Post" or "Page" WordPress admin page, at the edit content toolbar you can find the "Booking Calendar" button for the insertion booking form or just availability calendar into post or page.

You can add a new booking to the system using the admin panel at the Booking > Add Booking menu page. 
You can select the date(s) in a calendar fill the booking form fields and press the submit button for the creation of new booking. 

Booking Calendar Personal and higher versions
At the paid versions You can select the "booking resource" at the top of the page, so you can select at what exactly resource you are want to make the bookings. 

Booking Calendar Business Medium/Large versions
At the Business Medium/Large versions in additional you can select the specific custom form at the top of the page, so you be able to make the bookings for the specific booking resource, using the specific custom booking form. 

Terms:  add booking, new booking

You can check, modify and change the status or other properties of the booking(s) at the Booking Listing admin menu page. Please open this page, at the top of the page you will see the Filters and Actions toolbar, and the table of booking listing. 
Depends from the version there will be available different additional tools and features. 

Filter tab
Using they filter tab you can specify, what exactly booking(s) you are need to show. 

"Apply" button - press this button after configuration of parameters in the filter tab, the parameters of filter will apply to the search results and new booking listing will show.
"Booking resources" selection -  (deault value: "All resources"), you can select to show the bookings only from specific booking resource or from all booking resource. (available in paid versions only). 
"Booking Status" selection - {Pending/Approved/All (default) }, select to show bookings only of specific status.  
"Booking dates" selection - {Actual dates (default) /Today/Previous dates/All dates / Next dates (select the number of dates) / Prior dates (select the number of dates) / Check in - Check out }, select to show bookings, which was done for the specific date(s) or date ranges. 
"Only new" - set pressed or unpressed "Read" status of the bookings, to show only new or all bookings. 
"Creation dates" selection - {Today/All dates (default) / Prior dates (select the number of dates) / Check in - Check out }, select to show bookings, which was created at the specific specific date(s) or date ranges. 
"Filter by keyword" text field - show the bookings, what have snide of the booking form the specific keywords.   (available in paid versions only). 
"Payment" selection - {All (default)/ Paid OK/ Unknown status/ Not Completed/Failed / Custom (text field)}, select to show bookings only with specific payment status.   (available in Business and higher versions only). 
Min. Cost - Max. Cost fields - set showing the bookings for the specific cost interval. (available in Business and higher versions only). 
"Sort" - {ID/Resource/Cost } - set order of the bookings in the booking listing table. 
"Save as Default" button - Save the actual applied filter settings as a default.  (available in paid versions only).  
"Booking ID" text search field - Search from at the top right side for the fast searching of the specific booking by ID. 

Actions tab.
You can apply these actions for the specific selected bookings (the checkbox at the left side of each such booking have to be checked) a the booking listing. 

Approve / Unapprove buttons - change the status of the specific selected bookings to "Approved" or "Pending".
Delete  button - completely delete the specific selected bookings. 
Read / Unread  buttons - set the specific selected bookings as read/unread. If you are set the specific bookings as read, the icon "New" at the left side near each bookings will hide. You can make also this operations on the specific single bookings by clicking on the icon "New" at the left side of booking. 
Print button - show the print layout of the current visible page of booking listing.  (available in paid versions only). 
Export button  - export the bookings of the current visible page of booking listing to the CSV format.  (available in paid versions only). 
Export All button - export the bookings from all pages of booking listing to the CSV format.  (available in paid versions only). 

 Emails sending (checkbox) - set checked or unchecked this checkbox, if you are want that the email is sending or not sending for the specific actions, like: Approve/Unapprove, etc... This interface element is located under  the Actions tab at the right side of page. 

Booking Listing table
The booking listing table have a several Columns:  ID, Labels, Booking Data, Booking Dates,  Actions. 

ID collumn. 
In the "ID" column in the fields of each booking you can see the ID of the specific booking, the date and time of creation of this booking. Also at this collumn is exist the checkbox for selections of specific booking(s) for the fuser actions using the tools from the Actions tab. 
In additional at the left side you can find the "New" icon for the upcoming bookings. This icon is clickable, so you can disable the status of new (unread) for the specific single booking. 

Lables collumn. 
At this column you can see the status labels of the specific booking, like pending/approved or payment statuses  (available in Business and higher versions only). 

Data collumn. 
At this field you can see the all data about the specific booking from your billing form: 
First Name:Victoria   Last Name:Smith   Email:victoria@server.com   Address:   City:   Post code:   Country:   Phone:(044)458-77-88   Number of visitors: 2   Children: no   Details:   Please, reserve an appartment with fresh flowers.

Booking dates column. 
In this collumn you can see the bookings dates. Please note, at the head of the collumn you can find the icon for the activating extended dates showing: 
for example: June 21, 2012,  June 22, 2012,  June 23, 2012
And normal dates view:
for example: June 21, 2012 - June 23, 2012

Actions collumn. 
Cost settings - view or edit the cost of the specific booking (available in Business and higher versions only). 
Send payment request - button for sending payment request to the visitor by email (available in Business and higher versions only). 
Edit booking - edit the specific booking data at the admin panel (available in paid versions only). 
Edit/create note to the booking - add or edit the note for the specific booking (available in paid versions only). 
Approve/Unapprove - Instant changing the status of the single booking. 
Delete - Completely erase specific booking. 
Change resource - change the booking resource for the specific booking  (available in paid versions only). 
Change payment status - change the pay,ent status for the specific booking (available in Business and higher versions only). 

Booking admin menu page path: Booking > Resources  (available in paid versions only).
Booking Calendar Personal
Booking resources - it's your objects (like rooms, cars or tables) or services, what can be booked by visitors of your sites. You can add/delete/modify the booking resources at the Booking > Resource page. 

You can define the calendar (booking form) to the specific booking resources, at the popup configuration dialog, during inserting the booking form into post or page. 
Terms: Personal, Business Small, Business Medium, Business Large, MultiUser, resource configuration

Booking Calendar Business Small / Medium

In additional, at the Resource menu page at these version, you can configure the cost per booking resource. You can set the cost at the specific field near each specific Booking Resource. At the same page (as at the general booking settings page, also) you can set the settings of cost calculation: per day, per night, per hour and fixed  cost.

Cost per day - is mean that the cost, which you are set near your booking resource will be apply for the each selected day in calendar, when the visitor will make the reservation. 
Cost per night - is mean that the cost, which you are set near your booking resource will be apply for the each night (the number of nights is equal number of days selected in calendar minus one day), when the visitor will make the reservation. If the visitor is select only one day, it's still mean one night selections. If visitor select 2 days, it's also mean the one night selection. If visitor select 3 days, it's mean 2 nights selections. If visitor select N days, it's mean N-1  nights selections, etc...

Cost per hour - is mean that the cost, which you are set near your booking resource will be apply for the each hour, if you are use the time selections/entering in booking form, when the visitor will make the reservation.  If the visitor select several days, so then one full day calculated as 24 full hours, first and last day will be check in/out days and cost will be calculated depending from the check in/out (start/end) times (based on the 24 hours in a day). 

Fixed cost - is mean that the cost, which you are set near your booking resource will be fixed and will not depend from number of days selections or time selections/entering in booking form, when the visitor will make the reservation.  

Terms: Business Small, Business Medium, Business Large, MultiUser, cost configuration, resource configuration

Booking Calendar Business Large

In Booking Calendar Business Large or higher version, you can configure the capacity for the specific booking resource.

The Capacity feature in Booking Calendar Business Large / MultiUser versions provide for you ability to set and manage the capacity for specific resources: properties or services.
Booking Calendar  Capacity - Multiple bookings per same date or timeslot

Resource-Specific Capacity:
Define the maximum number of bookings or appointments that a specific resource or service can handle simultaneously. For example, if you manage a hotel with a particular number of room types or a meeting room, set its capacity to, say, 10, indicating it can accommodate up to 10 bookings simultaneously. This feature works for full dates or time slots on selected dates.

Real-time Availability Updates and Efficient Resource Management:
As bookings are made, the system automatically updates the available capacity in real-time. If the maximum capacity is reached, the system prevents additional bookings for that resource during the specified date(s) or time slot.
This feature enhances resource management by preventing overbooking and ensuring that each resource operates within its defined capacity limits.

Useful for Various Scenarios:
Ideal for businesses or services with limited capacity for specific resources, such as hotel rooms, specific property types, meeting rooms, tours, classes, or any other bookable items.

Improved User Experience:
Users can quickly see the remaining capacity for a resource when making a booking. You can display available slots in mouse-over tooltips when hovering over a specific date or use [capacity_hint] in the booking form to show available slots on selected dates in real-time.

Example Scenario:
Imagine running a workshop space with a capacity for 20 people. With the capacity feature, you can ensure that once 20 bookings are made for a particular time slot, additional bookings for that time will be prevented.
Alternatively, if you have 10 standard rooms and 5 double rooms in your hotel, you can display two separate booking forms—one for "standard rooms" with a capacity of 10 and another for "double rooms" with a capacity of 5.

How to Use:
Configure the capacity feature in the admin panel at the Booking > Resources page. Set the capacity for each resource individually by specifying the maximum number of bookings it can handle.

1. Parent booking resource.
Add new booking resource
Open the Booking > Resources page.
Find the booking resource you want to increase the capacity for or create a new booking resource (e.g., "Resource A").
To create a new booking resource, enter the "Name of booking resource" in the top toolbar at the Booking > Resources page and click the "Add New" button.

2. Increasing Capacity:
Set capacity for Booking Calendar
- Click the "Expand advanced toolbar" arrow button at the bottom left side of the toolbar to reveal additional options.
- Enter the name of the child booking resource (e.g., "Child Resource A").
- Select the number of child booking resources to create (e.g., 5) to set the capacity of the original "parent booking resource" ("Resource A") to 6.
- For the option "Parent" select our parent booking resource - "Resource A".
- Click the "Add new" button in the toolbar to add 5 child booking resources to our parent booking resource "Resource A," resulting in a total capacity of 6 (including the parent booking resource itself and 5 child booking resources).

3. Structure of Booking Resources:
Properties of booking resources in Booking Calendar
The structure of booking resources will look like this:

Resource A | Capacity = 6 | Priority = 0
        -  Child Resource A - 1
        -  Child Resource A - 2
        -  Child Resource A - 3
        -  Child Resource A - 4
        -  Child Resource A - 5

In other words, there are 6 available slots for each dates (or time-sltos, if in booking form exist time fields) for meeting rooms, etc.

4. Publish Booking Form
Publish booking form - Embed booking form into post or page. Booking Calendar.
Let's say each booking resource has an ID like this:

[ID=218] - Resource A | Capacity = 6 | Priority = 0
      [ID=219]  -  Child Resource A - 1
      [ID=220]  -  Child Resource A - 2
      [ID=221]  -  Child Resource A - 3
      [ID=222]  -  Child Resource A - 4
      [ID=223]  -  Child Resource A - 5

To insert your booking form into the page, use this shortcode:
[booking resource_id=218 nummonths=3]

Learn how to put the booking form or availability calendar on your pages using Booking Calendar blocks in the WordPress Block Editor or Classic Editor on this page .
Also, check the simple steps to add the Booking Form manually to your page with shortcode blocks, for example, in non-standard page editors like Elementor, Divi, or others on this page.

5. Preventing Overbookings:
When you make a booking for a specific date or time, the system will decrease the capacity of the booking resource. If the number of bookings reaches the capacity limit of the booking resource, the date or time slot on the specific date(s) will become unavailable

6. Capacity Control Field:
What if you need to book 2 or more slots on a specific date/time? Define the field that will identify how many slots will be booked during one booking process. Open the Booking > Settings General page in the "Capacity" section, enable the "Booking Quantity Control" option, and for the "Quantity field name" select one of the existing fields from your booking form. This field must be a select box with simple numbers as options. For example, configure the field at the Booking > Settings > Booking Form page like this: [select visitors "1" "2" "3" "4" "5" "6"]. In this case, for the "Quantity field name" select the "visitors" field. Save settings changes.

Now, when you select a date (and/or time) and choose the number of visitors as 3, the system will make a booking of 3 "child booking resources" (or parent and 2 child booking resources) and decrease capacity on the selected date/time by 3 items.

7. Disable Bookings in Different Booking Resources:
An additional option "Disable bookings in different booking resources" at the Booking > Settings General page in the "Capacity" section. This option disables reservations that can be stored in different booking resources. When checked and you select several dates to book, all reserved days must be in the same booking resource; otherwise, an error message will show. For example, if you make bookings for a specific property (room), it prevents changing these rooms during all selected dates. In other words, the system checks that all selected dates in child booking resource (or parent booking resource) have to be available and stores this sequence into the SAME booking resource. Otherwise (useful in some situations), the system can store a booking on DAY 1 in child booking resource A and on DAY 2 in child booking resource B (in case if DAY 2 for the booking resource A was already unavailable).

8. Priority Field:
At the Booking > Resources page, there is a "Priority field" for each of your booking resources. It is the order in which the system will check availability and save the booking into the available child booking resources.

7. Different Capacities for Different Resources:
In a scenario where some booking resources support a maximum of 2 visitors per resource and other booking resources support 4 visitors per resource, you can create 2 different custom booking forms at the Booking > Settings > Booking Form page.

In custom booking form for "Standard Rooms" (e.g., with the name "standard-rooms-form"), you can have these fields:

Visitors number: [select visitors "1" "2"]
Number of rooms to book: [select items_to_book "1" "2" "3" "4" "5" "6"]

In the custom booking form for "Family Rooms" (e.g., with the name "family-rooms-form"), you can have these fields:
Visitors number: [select visitors "1" "2" "3" "4"]
Number of rooms to book: [select items_to_book "1" "2" "3"]

The structure of booking resources at the Booking > Resources page can be like this:

Standard Rooms:

[ID=10] - Standard Room - 1 | Capacity = 6 | Priority = 0
      [ID=11]  -  Standard Room - 2
      [ID=12]  -  Standard Room - 3
      [ID=13]  -  Standard Room - 4
      [ID=14]  -  Standard Room - 5
      [ID=15]  -  Standard Room - 6

Family Rooms:

[ID=18] - Family Room - 1 | Capacity = 3 | Priority = 0
      [ID=19]  -  Family Room - 2
      [ID=20]  -  Family Room - 3

And at the Booking > Settings General page in the "Capacity" section, you can activate the "Booking Quantity Control" and for the option "Quantity field name," select the field "items_to_book."

In the page for booking Standard rooms, you can use this shortcode:

[booking resource_id=10 nummonths=2 form_type='standard-rooms-form']

In the page for booking Family rooms, you can use this shortcode:

[booking resource_id=18 nummonths=1 form_type='family-rooms-form']

Watch a legacy video guide on configuring capacity in old versions of Booking Calendar (older than 9.7.7 versions).

Check about configuration of capacity in previous versions of Booking Calendar (versions 9.7.7 or older) on this page.

 

Shortcodes - Inserting Booking Calendar into Pages

1. Using WordPress Block Editor (Gutenberg):
Watch the video below for a step-by-step guide on embedding the booking form via WordPress blocks:
Embed the booking form into the post or page and publish it using WordPress blocks with Booking Calendar.

This video illustrates embedding the booking form into posts or pages using WordPress blocks. The example is relevant to paid versions, but the procedure is the same in the Booking Calendar Free version.

2. For WordPress "Classic Editor" or Older Versions:
If you're using the Classic Editor plugin or an older WordPress version, then you can use popup dialog for inserting the Booking Calendar shortcode.
Watch the video below for a step-by-step guide on inserting the booking form via WordPress "Classic Editor":
Embed the booking form into the post or page using the Classic Editor plugin or an older version of WordPress.

Embed the booking form into the post or page using the Classic Editor plugin or an older version of WordPress.

3. Auto creation page with booking form:
Embed the booking form into the post or page and publish it using WordPress blocks with Booking Calendar.

In the paid versions of Booking Calendar you can configure and publish booking form automatically from the WP Booking Calendar > Resources page in very easy way.

4. Elementor, Divi Theme, and other Non-Standard WordPress Block Editors:
If your theme uses Elementor, Divi Theme, or another non-standard block editor, add a shortcode block to your page. Configure the shortcode manually. Check all Booking Calendar shortcodes and parameters, which you can configure on this page.
Watch the video below for a step-by-step guide on inserting the booking form in "Elementor".
Embed the Booking Calendar Form into the page using the Elementor.

Embed the Booking Calendar Form into the page using the Elementor.

5. Manual Shortcode Configuration:
Alternatively, manually configure shortcodes in your posts or pages, especially if you switched from "Visual editor" to "Code editor" (Ctrl+Shift+Alt+M). You can also add a shortcode block (as mentioned in the previous point). Find all Booking Calendar shortcodes and parameters in the FAQ page.

4.1) Check the Shortcode: Before you start, make sure you have the correct shortcode that you want to insert into your page. You can find a detailed description of the shortcode here.

4.2) Add the Shortcode Block: Go to the page where you want to insert the Booking Calendar form. Look for the shortcode block in your WordPress editor.

4.3) Insert the Shortcode: Once you've located the shortcode block, simply paste the shortcode you found in the FAQ page into the block.

4.4) Publish Your Page: After you've added the shortcode, click the "Publish" button to make your page live on your website.

And that's it! Your Booking Calendar form is now successfully inserted into your page.

Embed the Booking Calendar form into the page by manually configuring the Booking Calendar shortcode within a shortcode block.

Embed the Booking Calendar form into the page by manually configuring the Booking Calendar shortcode within a shortcode block.

6. Insert Booking form via WordPress Classic block:
Watch the video below for a step-by-step guide on inserting the booking form via "Classic Block" in WordPress.
Embed the Booking Calendar form into the page using WordPress Classic block.

Embed the Booking Calendar form into the page using WordPress Classic block.

7. Integrating Booking Calendar Shortcodes in DIVI Builder:
To add Booking Calendar shortcodes to your pages in DIVI Builder using the "Code" module, please follow these steps:

  1. Edit the page where you want to add the Booking Calendar shortcode in the DIVI Builder.
  2. Add a new section or row where you want the Booking Calendar to appear.
  3. Within the section or row, add a new module and select the "Code" module.
  4. In the Code module settings, paste the Booking Calendar shortcode.
  5. Customize the settings of the Code module as needed, such as adjusting the alignment or size.
  6. Save or update the page.

By following these steps, you'll be able to seamlessly integrate Booking Calendar shortcodes into your DIVI Builder pages using the "Code" module.
Integrating Booking Calendar Shortcodes in DIVI Builder

Embed the Booking Calendar form into the page using DIVI Builder.

Note! Please be careful in configuration of Booking Calendar shortcode with quote symbols. Do not use non standard opening or closing quot symbols. Only standard like: ' The best way to type them from keyboard, and not copy/paste.

Booking Form

[booking resource_id=1 nummonths=2]

Parameters
resource_id
ID of the booking resource. You can check the ID of the each booking resources at the Booking > Resources page. If this parameter is skipped, default value = 1.
In version 9.7.7 or older name of this parameter - type instead of resource_id

Example #1:
[booking resource_id=1]

Example #2 (booking resource (calendar) with ID = 5):
[booking resource_id=5]

Booking Calendar version 9.7.7 or older have different name for this parameter - type.
Example #3 for update 9.7.7 or older:
[booking type=5]

Available in Paid versions

nummonths
number of the visible months in the calendar.
If "nummonths" is skipped the calendar is show 1 visible month.

Example:
[booking resource_id=1 nummonths=3]

Example of showing 6 months via 3 columns and 2 rows with 100% calendar width and date cell heights 50px:
[booking resource_id=1 nummonths=6 options='{calendar months_num_in_row=3 width=100% cell_height=50px}']
startmonth
start month in the calendar after loading of the calendar with booking form. Format of value for this parameter is 'YYYY-MM'. If "startmonth" is skipped the calendar is start showing months from current month.

Example:
[booking resource_id=1 startmonth='2025-3']
form_type
name of the custom booking form. You can create the custom booking forms at the Booking > Settings > Form page. If this parameter is skipped, default value is 'standard'.

Example #1 (custom form name "my-custom-form-name" defined at the Booking > Settings > Booking Form page):
[booking resource_id=1 form_type='my-custom-form-name']

Example #2:
[booking resource_id=1 form_type='another_form_name']

Available in Business Medium / Large versions

aggregate
show dates as booked in current calendar, if such dates booked in one of the calendars (booking resources) with ID, which defined in this "aggregate" parameter.It is means that calendar can aggregate dates from several booking resource. Usage: aggregate='2;4;5', where 2;4;5 – ID of booking resources. The ID of booking resources you can check at the Booking > Resources page.

Please note, by default Booking Calendar aggregate the bookings and unavailable dates defined at the Booking > Availability > Days Availability page. You can aggregate only 'bookings' without including unavailable dates from the 'Booking > Availability > Days Availability' page. If you use the 'aggregate' parameter in the Booking Calendar shortcode and wish to include only bookings, utilize the new parameter: options="{aggregate type=bookings_only}". For instance, in the shortcode example below, we aggregate only bookings:
[booking resource_id=3 aggregate='3;4' options="{aggregate type=bookings_only}"]

This feature do not work for booking resources with specific capacity in Booking Calendar Business Large version. Available in Paid versions.

possibility to set calendar additional parameters: full calendar width (percentage or pixels), date cell height, number of months in one row and in Business Medium and higher versions the minimum or fixed number of days selection for the specific day of week or specific season.

Specify the full calendar width (one or several months in a row), the height of date cell (so its possible to configure the height of entire calendar by that (just divide the entire calendar width to 7 and you will get approximate date cell height), the number of months in one row (its useful, if you want to show several months in several rows, for example 4 months in 2 rows or 6 months in 2 rows etc).

Configuration rules
Example 1:
[booking resource_id=1 nummonths=2 options='{calendar months_num_in_row=2 width=568px cell_height=30px}']

Example 2:

[booking resource_id=1 nummonths=4 options='{calendar months_num_in_row=2 width=100% cell_height=40px}']

The general structure of the configuration calendar parameter is following:

{calendar months_num_in_row="{NUMBER OF MONTHs IN ONE ROW}"
width="{ENTIRE WIDTH OF CALENDAR IN px or %}"
cell_height="HEIGHT of CALENDAR DATE CELL, only in px"}

Parameters:
calendar - name of the parameter. Its always the same (Its required for the future extend functionality).
months_num_in_row - number of months on one row. Its can be any number.

width - the entire width of the calendar. This width can be in "px" (for example: "400px") or in percentage (for example "100%). In CSS "300px" defined as: "width: 100%; max-width:300px;". In situation, if you need to use exact calendar width, instead of "width=300px" use "strong_width=300px"

strong_width - the exact width of the calendar. Use this parameter instead of "width" parameter. This width can be in "px" for (example: "400px") or in percentage (for example "100%). In CSS "300px" defined as: "width: 300px;" Parameter available since update 9.4.

cell_height - height of calendar date cell. The height can be only in "px" (example "30px").

Available in Business Medium / Large, MultiUser versions

Specify that during certain seasons (or days of week), the specific minimum number of days must be booked, for example: visitor can select only 3 days starting at Friday and Saturday, 4 days - Friday, 5 days - Monday, 7 days - Saturday, etc...
Important! Please note, this feature is working only, if you activated the "Range days" selection at the General Booking Settings page.

Configuration rules
Example 1:
[booking resource_id=1 options='{select-day condition="season" for="High season" value="7-14,20"},
{select-day condition="season" for="Low season" value="2-5"}']

Example 2:

[booking resource_id=1 options='{select-day condition="weekday" for="1" value="4"},
{select-day condition="weekday" for="5" value="3"},
{select-day condition="weekday" for="6" value="2,7"}']

The general structure of the configuration one condition rule are following:

{select-day condition="{season|weekday}"
for="{Name of season filter|Number of week day}"
value="Number of days selection"}, ...

Parameters:
select-day - name of the rule. Its always the same (Its required for the future extend functionality).
condition - type of the condition. There are 2 types of the condition: "weekday" and "season". "weekday" - is mean that condition rule is based on the selected day of week value, like Monday, Tuesday, etc... . "season" - is mean that condition rule is based on the "season filter" name of selected date. In other words the condition is TRUE if the selected day is belong to some season filter in the Booking > Resources > Filters page.
for - value of the specific conditions. If the condition is true, so then the number of specific days selection will possible in the calendar. If the condition is set as "weekday" so then "for" can have the following numbers: 0 - Sunday, 1 - Monday, 2 - Tuesday, 3 - Wednesday, 4 - Thursday, 5 - Friday, 6 - Saturday.
value - number of specific days selection in the calendar, which can be selected by visitors. It can be simple number or several days separated by comma (example: "7,14,21,28") or by dash (example:"3-5", its the same like this: "3,4,5") or combination (example:"3-5,7,14", its the same like this: "3,4,5,7,14")

Available in Business Medium / Large, MultiUser versions

[booking resource_id=1 form_type='standard' nummonths=2
options='{select-day condition="weekday" for="1" value="4"},
{select-day condition="weekday" for="5" value="3"},
{select-day condition="weekday" for="6" value="2,7"}']

where values of the "for" parameter are mean following:
0 - Sunday, 1 - Monday, 2 - Tuesday, 3 - Wednesday, 4 - Thursday, 5 - Friday, 6 - Saturday
You can use only one number of the specific week day.

Its mean that on Monday is possible to select only 4 days,
on Friday is possible to select only 3 days,
on Saturday is possible to select only 2 or 7 days.

Available in Business Medium / Large, MultiUser versions

[booking resource_id=1 form_type='standard' nummonths=2
options='{select-day condition="season" for="High season" value="7-14,20"},
{select-day condition="season" for="Low season" value="2-5"}']

where values of the "for" parameter are mean following:
High season - its a name of the some Season filter on the Booking > Resources > Filters page,
Low season - its a name of the some Season filter on the Booking > Resources > Filters page
You can use only single season filter name in the one value.

Its mean that during High season is possible to select only 7, 8, 9, 10, 11, 12, 13, 14 or 20 days
and during the Low season is possible to select only 2, 3, 4 or 5 days

Available in Business Medium / Large, MultiUser versions

Description.
This configuration will allow to set the specific start day(s) selection (day(s) of week) for the specific Season Filters.

Note. All these conditions are based on the "first" day of range days selection in the calendar.

For example, in high season, you can allow start day selection only at Friday in the Low season (or any other days) to start day selection from any weekday.
1) I can suggest that you are activated the range days selection using 2 mouse clicks for the specific day(s) of week. For example for Friday.
2) So then inside of the page, where you are inserted the booking shortcode, you are need to have something like this, to allow any start day selection for the "Low season" days:

[booking resource_id=1 form_type='standard' nummonths=6
options='{start-day condition="season" for="Low season" value="0,1,2,3,4,5,6"}']

Configuration of the Options parameter:
start-day – name of the rule. Its always the same.
condition – type of the condition. For this rule is available only 1 type of the condition: “season”.
season – is mean that condition rule is based on the EXACT “season filter” name of selected date. In other words the condition is TRUE if the selected day is belong to some season filter in the Booking > Resources > Filters page.
for – value of the specific condition – EXACT Name of Season Filter.
value – day(s) of week, where we can start selection for the specific season.
It can be simple number or several days separated by comma.
0 – Sunday, 1 – Monday, 2 – Tuesday, 3 – Wednesday, 4 – Thursday, 5 – Friday, 6 – Saturday

Available in Business Medium / Large, MultiUser versions

You can use the condition for defining a specific number of selected dates if started from a specific date. Condition format:
{select-day condition="date" for="2023-10-01" value="20,25,30-35"}
.

Example of shortcode:
[booking resource_id=3 options='{select-day condition="date" for="2023-10-01" value="20,25,30-35"}']

Available in Business Medium / Large, MultiUser versions

In update 6.1 or newer you can use new condition variable: options='{parameter name="my_param" value="value"}'
This option parameter can transfer custom value from this booking form shortcode into the content of booking form.

Example of shortcode usage:
[booking resource_id=1 form_type='standard' nummonths=3
options='{parameter name="my_param" value="value"},{parameter name="other_param" value="other value"}']

Example of booking form customization:

[text some_field_name "my_param"]
and
[text other_field_name "other_param"]

Important. Parameter name must be unique and exist only once in booking form.


Adding booking form into page via Classic Editor
Adding booking form into page with via WordPress Blocks - Gutenberg editor
(Available since update 8.4)
Note! Please be careful in configuration of Booking Calendar shortcode with quote symbols. Do not use non standard opening or closing quot symbols. Only standard like: ' The best way to type them from keyboard, and not copy/paste.

Availability calendar (without booking form)

[bookingcalendar type=1 nummonths=1 startmonth='2022-05']

Parameters
Note! Because in this calendar showing availability and no booking form, that's why with this shortcode does not possible to select day(s) in calendar. Instead of this shortcode please use booking form shortcode.
nummonths
number of the visible months in the calendar. If "nummonths" is skipped the calendar is show 1 visible month.
startmonth
start month in the calendar after loading of the calendar with booking form. Format of value for this parameter is 'YYYY-MM'. If "startmonth" is skipped the calendar is start showing months from current month.
type
ID of the booking resource. You can check the ID of the each booking resources at the Booking > Resources page. If this parameter is skipped, default value = 1. Available in Paid versions
aggregate
possibility to show reserved days in one calendar from several booking resource. So its mean that one calendar can aggregate dates from several booking resource. Usage: aggregate='2;4;5', where 2;4;5 – ID of booking resources. The ID of booking resources you can check at the Booking > Resources page. Available in Paid versions
possibility to set calendar additional parameters: full calendar width (percentage or pixels), date cell height, number of months in one row and in Business Medium and higher versions the minimum or fixed number of days selection for the specific day of week or specific season.
Options parameter usage

Specify the full calendar width (one or several months in a row), the height of date cell (so its possible to configure the height of entire calendar by that (just divide the entire calendar width to 7 and you will get approximate date cell height), the number of months in one row (its useful, if you want to show several months in several rows, for example 4 months in 2 rows or 6 months in 2 rows etc).

Configuration rules
Example 1:

options='{calendar months_num_in_row=2 width=568px cell_height=30px}'

Example 2:

options='{calendar months_num_in_row=3 width=100% cell_height=40px}'

The general structure of the configuration calendar parameter is following:

{calendar months_num_in_row="{NUMBER OF MONTHs IN ONE ROW}"
width="{ENTIRE WIDTH OF CALENDAR IN px or %}"
cell_height="HEIGHT of CALENDAR DATE CELL, only in px"}

Parameters:
calendar - name of the parameter. Its always the same (Its required for the future extend functionality).
months_num_in_row - number of months on one row. Its can be any number.
width - the entire height of the calendar. This width can be in "px" (example: "400px") or in percentage (example "100%).
cell_height - height of calendar date cell. The height can be only in "px" (example "30px").

Adding booking form into page with new Gutenberg editor
(Available since update 8.4)
Note! Please be careful in configuration of Booking Calendar shortcode with quote symbols. Do not use non standard opening or closing quot symbols. Only standard like: ' The best way to type them from keyboard, and not copy/paste.

Timeline

Single (booking resource) view

Month View mode (30):

[bookingtimeline type='1' header_title='All Bookings' scroll_day=4 scroll_start_date='2016-11-17']

Timeline (day view) - Single booking resource

3 Months View mode (90):

[bookingtimeline type='1' view_days_num=90 header_title='All Bookings' scroll_day=5 scroll_start_date='2016-11-17']

Timeline (week view) - Single booking resource

Year View mode (365):

[bookingtimeline type='1' view_days_num=365 header_title='All Bookings' scroll_month=3 scroll_start_date='2016-11-17']

Timeline (month view) - Single booking resource


Matrix view (several booking resources)

Available in Paid versions

Day View mode (1):

[bookingtimeline type='1,5,6,7' view_days_num=1 header_title='All Bookings' scroll_day=4 scroll_start_date='2016-11-17']

Timeline (day view) - Matrix view - several booking resources

Week View mode (7):

[bookingtimeline type='1,5,6,7' view_days_num=7 header_title='All Bookings' scroll_day=4 scroll_start_date='2016-11-17']

Timeline (week view) - Matrix view - several booking resources

Month View mode (30):

[bookingtimeline type='1,5,6,7' header_title='All Bookings' scroll_month=2 scroll_start_date='2016-11-17']

Timeline (month view) - Matrix view - several booking resources

2 Months View mode (60):

[bookingtimeline type='1,5,6,7' view_days_num=60 header_title='Bookings' scroll_month=2 scroll_start_date='2016-11-17']

Timeline (2 months view) - Matrix view - several booking resources


Optional parameters
scroll_day
number of days to scroll
scroll_month
number of months to scroll
scroll_start_date
specific date, where to start show timeline
header_title
header text in timeline
options
Ability to define links for booking resource titles in Matrix timeline. Usage:
[bookingtimeline type='3,4' options='{resource_link 3="/resource-apartment3-id3/"},{resource_link 4="/resource-3-id4/"}' header_title='All Bookings']
Available since update 7.0.1
limit_hours
Ability to limit times for showing cells in TimeLine for 1 day view mode. Usage: limit_hours='9,22' where 9 - its 09:00, start hour and 22 - its 22:00, end hour.
Example 1:
[bookingtimeline type='1' limit_hours='9,22']
Example 2:
[bookingtimeline type='1,5' view_days_num=1 limit_hours='10,21']
Available since update 7.0.1
Adding booking form into page with new Gutenberg editor
(Available since update 8.4)
Note! Please be careful in configuration of Booking Calendar shortcode with quote symbols. Do not use non standard opening or closing quot symbols. Only standard like: ' The best way to type them from keyboard, and not copy/paste.

Selection of booking resource

Available in paid versions. You can check example of using this shortcode at this page.

[bookingselect label='Please select the resource:' form_type='standard' nummonths=1 type='17,16,15']

Parameters
type
ID of the booking resources, separated by comma. You can check the ID of the each booking resources at the Booking > Resources page. For example:
[bookingselect type='17,16,15' selected_type='15' first_option_title='' label='']
selected_type
ID of booking resource, which selected by default in this selectbox.This is obligatory parameter.
nummonths
number of the visible months in the calendar. If "nummonths" is skipped the calendar is show 1 visible month.
startmonth
start month in the calendar after loading of the calendar with booking form. Format of value for this parameter is 'YYYY-MM'. If "startmonth" is skipped the calendar is start showing months from current month.
form_type
name of the custom booking form. You can create the custom booking forms at the Booking > Settings > Form page. If this parameter is skipped then default custom booking form for specific booking resources is loaded (you can define default custom booking forms for specific booking resources at the Booking > Resources page ). Available in Business Medium / Large versions
label
text of label for the select box. If this parameter is skipped, default value empty string.
first_option_title
first option in dropdown list. If you want to skip this option, then leave it empty like this: first_option_title=''
aggregate
show dates as booked in all calendars, if such dates booked in calendars with ID, which defined in this parameter.It is means that calendar can aggregate dates from several booking resource. Usage: aggregate='2;4;5', where 2;4;5 – ID of booking resources. The ID of booking resources you can check at the Booking > Resources page. This feature do not work for booking resources with specific capacity in Booking Calendar Business Large version. Available in Paid versions.
possibility to set calendar additional parameters: full calendar width (percentage or pixels), date cell height, number of months in one row and in Business Medium and higher versions the minimum or fixed number of days selection for the specific day of week or specific season.
Options parameter usage

Specify the full calendar width (one or several months in a row), the height of date cell (so its possible to configure the height of entire calendar by that (just divide the entire calendar width to 7 and you will get approximate date cell height), the number of months in one row (its useful, if you want to show several months in several rows, for example 4 months in 2 rows or 6 months in 2 rows etc).

Configuration rules
Example 1:

options='{calendar months_num_in_row=2 width=568px cell_height=30px}'

Example 2:

options='{calendar months_num_in_row=3 width=100% cell_height=40px}'

The general structure of the configuration calendar parameter is following:

{calendar months_num_in_row="{NUMBER OF MONTHs IN ONE ROW}"
width="{ENTIRE WIDTH OF CALENDAR IN px or %}"
cell_height="HEIGHT of CALENDAR DATE CELL, only in px"}

Parameters:
calendar - name of the parameter. Its always the same (Its required for the future extend functionality).
months_num_in_row - number of months on one row. Its can be any number.
width - the entire height of the calendar. This width can be in "px" (example: "400px") or in percentage (example "100%).
cell_height - height of calendar date cell. The height can be only in "px" (example "30px").

Adding booking form into page with new Gutenberg editor
(Available since update 8.4)

Edit Booking

System shortcode for ability to edit or cancel exist booking by visitor, who made this booking. Or show payment form, after sending payment request.

[bookingedit]

Available in Paid versions

Important! Please note, if you open this page directly, you will see this warning "You do not set any parameters for booking editing". It's because system allow to open this page only from link(s) in email templates, which your website visitor had to received, after he/she made the booking (inside of that link will be specific parameter (secret HASH) for the identification of the booking).
Note! Please read more about configuration such functionality here.
Adding booking form into page with new Gutenberg editor
(Available since update 8.4)
Note! Please be careful in configuration of Booking Calendar shortcode with quote symbols. Do not use non standard opening or closing quot symbols. Only standard like: ' The best way to type them from keyboard, and not copy/paste.

Search Availability Form

Search availability form - search availability for selected check in and check out dates (using date-picker fields), among several booking resources (properties or services). Possible to search only for full dates. Check more about this feature here. Watch it in this video guide. You can check example of using this shortcode at this page.

Available in Business Large / MultiUser versions

[bookingsearch searchresults='https://mysite.com/search-results/'
noresultstitle='Nothing Found' searchresultstitle='Search results:']

Parameters
searchresults
URL of the page, where search results are showing. You must insert into the content of that page this shortcode: [bookingsearchresults]. If this parameter is skipped, the search results is showing at the same page, just below the search form
searchresultstitle
header of the search results. If this parameter is skipped, then no header. Deprecated in update 10.1 Configure this option at the WP Booking Calendar > Settings > Search page.
noresultstitle
showing text, if nothing found. Deprecated in update 10.1 Configure this option at the WP Booking Calendar > Settings > Search page.
users
limit the search results based on the availability per user. Showing availability in search results only for the specific users.
Available in MultiUser versions
For example:
[bookingsearch users="1,2"]
where 1,2 – its a ID list of users.
Adding booking form into page with new Gutenberg editor
(Available since update 8.4)

Search Results

Showing search results at separate page, different from page with search availability form (more info about search availability form shortcode [bookingsearch], check at this page ).
You can search availability for selected check in and check out dates (using date-picker fields), among several booking resources (properties or services). Possible to search only for full dates. Check more about this feature here. Watch it in this video guide. You can check example of using this shortcode at this page.

[bookingsearchresults]

Available in Business Large / MultiUser versions

Adding booking form into page with new Gutenberg editor
(Available since update 8.4)
Note! Please be careful in configuration of Booking Calendar shortcode with quote symbols. Do not use non standard opening or closing quot symbols. Only standard like: ' The best way to type them from keyboard, and not copy/paste.

Booking Form (without calendar)

This shortcode is useful, if you need to receive several (specific number of bookings) for specific date. It's can be event, where exist restricted number of bookings for this date. You can use this shortcode for booking resource (with specific capacity). Check more about this feature here. Watch it in this video guide.

[bookingform type=1 form_type='standard' selected_dates='24.12.2020']

Available in Business Large / MultiUser versions

Parameters
selected_dates
date of booking. Format for parameter: DD.MM.YYYY. This is obligatory parameter.
type
ID of the booking resource. You can check the ID of the each booking resources at the Booking > Resources page. If this parameter is skipped, default value = 1. Available in Paid versions
form_type
name of the custom booking form. You can create the custom booking forms at the Booking > Settings > Form page. If this parameter is skipped, default value is 'standard'.
Adding booking form into page with new Gutenberg editor
(Available since update 8.4)
Note! Please be careful in configuration of Booking Calendar shortcode with quote symbols. Do not use non standard opening or closing quot symbols. Only standard like: ' The best way to type them from keyboard, and not copy/paste.

Showing booking resource details

Showing details about specific booking resource, like Title, Cost, Capacity or ID of booking resource.

Available in paid versions

[bookingresource type=1 show='title']

Parameters
type
ID of the booking resource. You can check the ID of the each booking resources at the Booking > Resources page. If this parameter is skipped, default value = 1. Available in Paid versions
show
define showing details type. If this parameter is skipped, default value is 'title'.
Possible values:
title - show title of booking resources
cost - show default cost of booking resource (from Booking > Resources page . Its can be cost per day, per night, per hour or fixed cost depend from your settings at Booking > Settings > Payment page. Available only in Business Small/Medium/Large, MultiUser versions

capacity - show capacity of booking resource - number of "child" resources. Available only in Business Large, MultiUser versions.

Adding booking form into page with new Gutenberg editor
(Available since update 8.4)

 

Payment Setup & Pricing Configuration

This guide is applicable to Booking Calendar version 9.9 or newer.

Setting Up PayPal for the Booking Calendar Plugin:
Setup PayPal for Booking Calendar plugin.

a) Navigate to Booking > Settings > Payment, then select the "PayPal" tab. Ensure you choose the new "PayPal" tab, not the old "PayPal (Legacy)" tab. Toggle the switch to enable the payment system and choose "Sandbox" under "Choose payment account" for testing purposes before going live.

b) Obtain the PayPal "Client ID" and "Secret Key" parameters by following these steps:

1. Log in to your PayPal account Dashboard.
2. Click on "Apps & Credentials."
3. Click the "Create App" button, enter the name of your application, and click "Create App."
4. Under "API credentials," copy the "Client ID" and "Secret Key" fields.
5. Paste these values into the appropriate fields at Booking > Settings > Payment > PayPal.

c) If you wish to automatically approve bookings after a customer makes a payment, activate the "Automatically approve/cancel booking" option and configure the URLs for "Return URL after a Successful order" and "Return URL after a Failed order."

d) Important Note: This PayPal integration requires correct configuration of the [bookingedit] shortcode. Learn how to configure the [bookingedit] shortcode here.

Defining Cost Per Night/Days/Hour or Fixed Cost

To set the cost per night instead of per day or a fixed cost, follow these steps:

  • Navigate to WP Booking Calendar > Settings > Payment Gateways page.
  • Scroll down to the Payment Options section and select "for 1 night" for the "Set the cost" option.
  • Click on the "Save Changes" button.

Additionally, you can choose from the following variants of defining costs: "per 1 night", "per 1 day", "per 1 hour", or a fixed cost.

Difference in Costs Per 1 Night Instead of Cost Per Day

Here's an example to illustrate the difference:

Let's say a visitor selects 4 dates in the calendar: 2025-04-01, 2025-04-02, 2025-04-03, 2025-04-04.
For the booking resource (calendar), you've defined the cost as $100 at the WP Booking Calendar > Resources page.

If you define the cost per 1 day, the total cost will be $100 + $100 + $100 + $100 = $400.
If you define the cost per 1 night, the total cost will be $100 + $100 + $100 + $0 = $300.
If you define a fixed cost, the cost for all those dates will be a fixed sum: $100.

Relative Cost Per Hour

The cost per hour system calculates the cost based on 24 hours in a day. In our case, it would be:
4 days * 24 hours * $100 = 4 * 24 * 100 = $9600.

At the Business Small and higher versions of Booking Calendar are supported several payment systems integrations.

1) Each payment system support own list of currencies.
So you can change and check the list of the currency at the Booking > Settings > Payment page at the each section of payment system integrations.

2) Also at the Booking > Settings > Payment > General page you can select the currency that is showing in the Booking admin panel and at front-end side (in hints) of the Booking Calendar plugin.

3) In the Booking Calendar Business Medium or higher versions at the Booking > Settings General page in Calendar section, if you have activated this option "Showing cost in date cell", then you can select currency symbol that will be showing in the calendar day cells.

If you need to set different daily costs for different seasons or weekdays, the Booking Calendar Business Medium or higher versions allow you to do just that.

Set different daily rates for different seasons or weekdays to optimize your pricing strategy to seasonal demand or specific days of the week.

For example, you may want to charge higher rates during peak seasons or weekends.

You can set rates as a fixed cost per day (night) or as a percentage of the original cost of the booking resource.

WP Booking Calendar - Setup Seasonal Pricing for High seasons

Seasonal Pricing Configuration:

  • Navigate to WP Booking Calendar > Prices > Daily Costs page.
  • Click on the "Seasonal Pricing" button to access the seasonal pricing configuration.

Seasons Setup:
To adjust days within specific seasons or create new seasons, navigate to WP Booking Calendar > Prices > Seasons page. Here, you can create conditional seasonal filters based on days conditions, or use the Days Season filter to easily select the necessary days.

WP Booking Calendar - Setup days seasons

If you need to set different costs for different lengths of bookings, the Booking Calendar Business Medium or higher versions allow you to do just that.

For instance, you might want to offer a discount for longer stays, like two weeks or more.

You can configure this feature under "Duration-Based Costs" in the WP Booking Calendar > Prices > Daily Costs page.

To learn more about this feature, check out the Valuation Days Overview.
You can also watch a video guide here: Valuation Days Cost Video Overview.

"Duration-Based Costs" work for any day on the calendar, regardless of the season or weekday. However, if you'd like to apply them only to a specific season, you can base it on the check-in day. In simpler terms, this feature lets you offer discounts or adjust costs based on the length of a booking. For example, if a guest books seven or more days, they could receive a 10% discount.

In case if you need to apply it to a specific season, then it can depend only on the belonging "check-in day" to a specific season. It means that, if you select 2 weeks, the "Duration-Based Costs" can apply costs only depending on the check-in day belonging to a specific season, even if some other days belong to another season. In other words, if you will have the days selected with season intersections, then you can have an issue with "Duration-Based Costs".

Let's explore some examples to better understand how to configure this:


Example #1

Configuring Duration-Based Costs in  WP Booking Calendar

Let's say the standard daily cost is $100 per day. But if a guest books six or more days, all future days have a cost of $75 per day.

    1st day = $100
    2nd day = $100
    3rd day = $100
    4th day = $100
    5th day = $100
    6th day = $75
    7th day = $75
    ..
    99th day = $75

Configuration:
    From 1st to 5th day = $100 per day
    From 6th to 99th day = $75 per day


Example #2 - Understanding the "Together" Term

Booking Calendar - Duration-Based Costs - Configuring Week Cost Discount

If the standard daily cost is $100 per day, and a guest books one week or more, they get a 10% discount. Importantly, this discount applies to all days, not just the seventh day.

For example, if a guest books six days:

		1st day = $100
		2nd day = $100
		3rd day = $100
		4th day = $100
		5th day = $100
		6th day = $100

But if they book seven days:

		1st day = $90
		2nd day = $90
		3rd day = $90
		4th day = $90
		5th day = $90
		6th day = $90
		7th day = $90

Configuration:

    From 1st to 6th day = $100 per day
    Together 7 days = 90% for all days
    From 8th to 99th day = 90% of the cost of 1 day


Example #3 - Costs per Nights

If you're charging per night instead of per day, the configuration from Example #2 would be adjusted accordingly:

    From 1st to 6th day = $100 per night
    Together 7 days = 90% for all days
    From 8th to 99th day = 90% of the cost of 1 night
    For LAST day = $0 per night

Where "LAST" - it's a reserved term that defines the last selected day.

This FAQ guide explains step by step how to set up partial payments/deposits, allowing customers to pay a portion of the booking cost upfront. Later, you can request the remaining balance from customers by sending "payment requests." This functionality is available in the Booking Calendar Business Medium or higher versions.

1. Setup Partial Payments.
To configure partial payments for a specific booking resource, navigate to WP Booking Calendar > Prices > Daily Costs page. Click on the "Partial Payments" button next to the specific resource. Then, enable the "Deposit" payment option and configure the amount of the partial payment. It can be a fixed amount or a percentage of the total booking cost. Partial payments can also depend on the booking's check-in date for specific seasons or the difference between today and the check-in dates.
Configure partial payments

2. Publish page with booking form.
Now, follow this guide to publish the booking form for your booking resource.

3. Submitting booking and processing partial payment.
In our example from point #1, we have set the cost for the booking resource at $100 per day and defined the deposit cost as 30% of the total booking cost. Let's say we are making a booking for 5 days, with a total cost of $500. In this case, the "Deposit Payment" would be 30% of $500, which equals $150. Check out the example below to see how a visitor makes a booking and submits a deposit payment (partial payment) for it.
Showing Partial Payment / Deposit form  after  creation of the booking

4. Booking Notes with Payment Breakdown.
When an administrator checks "Notes" of this booking in the Booking Listing page in the admin panel, they will see the payment breakdown as follows:

  Total Cost: $500.00
  Deposit Due: $150.00
  Balance Remaining: $350.00

Additionally, they will find other details related to "Automatically calculated total cost and deposit", "Displaying Payment section", and the response from the "Payment system" in case the user has successfully made a payment.

Important to note! The booking cost field displays the last cost shown in the payment form. In our case, it was the deposit cost of 30%, which is $150.
Showing payment breakdown in Notes section near specific bookings Please note, the booking was auto-approved due to the enabled "Auto-approve booking" option at WP Booking Calendar > Settings > Payment Gateways > Stripe page. This occurs when a visitor successfully makes a payment. The same option is available for PayPal and some other payment systems.

5. Emails.
Which emails were sent to users during this time?
It depends on the activated "emails" at WP Booking Calendar > Settings > Emails page.
Visitors may receive the following emails:

  • Email notification about the creation of a new booking ("New (visitor)" email template).
  • If you activated the "Auto-approve booking" option at WP Booking Calendar > Settings > Payment Gateways > "Specific Payment Gateway" page, the system sends an email confirming the booking approval ("Approved" email template).

6. Sending Payment Requests to Pay the Specific Sum.

To send payment requests, ensure you've set up the [bookingedit] shortcode correctly. Refer to our detailed guide for step-by-step instructions on configuring the [bookingedit] shortcode.

To send payment requests for paying (in our case) the remaining balance, edit the booking's cost in the "cost field" and click on the "Save cost" button. In our example, we changed the cost from $150 to $350. This is a manual process.

At this point, the system can send a "Modified" email to the user. After changing the cost for a booking, the plugin can automatically send a notification email to the visitor if the following conditions are met:

  • Ensure that the "Emails sending" option is enabled under the Filter toolbar.
  • Activate the "Send email on cost changes" option at WP Booking Calendar > Settings > Payment Gateways page.

If both conditions are met, the plugin will send a "Modified" booking email to the visitor. You can customize the content of the "Modified" booking email template at WP Booking Calendar > Settings > Emails page.

WP Booking Calendar - Sending Payment request  for remaining balance due.
Sending Payment Request.
When you click on the "Payment request" button, a popup window will appear where you can enter the payment reason.
The entered "Payment Reason" can be included in the payment request email by using the [paymentreason] shortcode at the WP Booking Calendar > Settings > Emails > Payment Request email template page. WP Booking Calendar - Email Template Settings - Sending Payment Request
After Visitor Receives the Payment Request Email
When a visitor receives the payment request email and clicks on the payment link, they will be redirected to the payment request page. This page will display the cost corresponding directly to the amount specified in the cost field for the respective booking at the Booking Listing page. WP Booking Calendar - Payment Balance Due

7. Summary about Payment Requests.
Upon completion of the payment by the visitor, administrators can review the booking details within the Notes section associated with the specific booking on the Booking Listing page. This section provides a detailed log of various events related to the booking, including payment system responses, payment section displays, payment request details, and updates to booking costs. Administrators can utilize this information to ensure accurate tracking and management of bookings.

[2024-04-21 17:09] Payment system response. -- STRIPE -- | approve | Total: EUR 350.00 | Status: paid | Payment: complete |
[2024-04-21 17:08] Payment section displayed | Amount to pay: $350.00
[2024-04-21 16:46] Payment request for Booking  ( ID = 297 ) has been sent. Cost for payment: 350.00. Send by: John Smith (s@wpbookingcalendar.com)
[2024-04-21 16:45] Cost for Booking  ( ID = 297 ) has been updated from 150.00 to 350. Changed by: John Smith (s@wpbookingcalendar.com)
[2024-04-21 15:05] Payment system response. -- STRIPE -- | approve | Total: EUR 150.00 | Status: paid | Payment: complete |
[2024-04-21 15:04] Payment section displayed
-----------------------------------------
Total cost: $500.00
Deposit Due: $150.00
Balance Remaining: $350.00
-----------------------------------------
[2024-04-21 15:04] Automatically calculated deposit cost 150
[2024-04-21 15:04] Automatically calculated cost 500

It's important to note that the process of changing payment costs and sending payment requests is MANUAL.
Administrators are responsible for updating costs and initiating payment requests as needed.
WP Booking Calendar -- Booking Notes

Please note, this configuration is possible at the Business Medium or higher versions.

Description
If you are need to add the additional costs, like tax or some other additional charges (cleaning,breakfast, excursion...), or just increase the cost depend from the visitor number selection at the selectbox, which is depend from the selection of the selectboxes or checkboxes in the booking form, so then you can make this configuration in the Business Medium or higher versions.

Configuration
1) You can insert into the Booking form, at the Booking > Settings > Fields page some checkbox, like this:

Tax: [checkbox* my_tax ""]

If you are need to have this checkbox hidden and checked by default in this way:

<div style="display:none;">[checkbox my_cleaning default:on ""]</div>

If you are need to have this checkbox as required and checked by default so use it in this way:

Cleaning service: [checkbox* my_cleaning default:on ""]

For the selectbox, its can look like this:

Visitors [select visitors "1" "2" "3" "4"]

Please read more about the booking form fields configuration here

2) Then at the WP Booking Calendar > Prices > Form Options Costs page at the advanced cost management section for the option my_tax or/and visitors, set some additional cost.

For example, for the tax 6% you need to set value 106% there.

Or if you want to add the fixed cost value, you can set this value to this "my_cleaning" option:

my_cleaning = 50

or for the visitors selections you can leave this configuration:

visitors:
1 = 100%
2 = 200%
3 = 300%
4 = 400%

etc....

Its possible to use arithmetic expressions, including fields shortcodes and simple mathematics operations at the Booking > Resources > Advanced cost page.

Its useful, when you are having checkbox (or selectbox), and want to apply some additional cost depend from selected option in other selectbox or checkbox in booking form.


1) For example, you are having increase of booking cost depend from visitors selection ( in N times),
and also you need to add 50 USD for a breakfast per each visitor, if some checkbox is selected.
Example of configuration fields in the booking form at the Booking > Settings > Form page:

</p>
<p>Visitors:  [select visitors "1" "2" "3" "4" "5"]</p>
<p>Breakfast (+50 USD):  [checkbox breakfast ""]</p>
<p>

In this case you can configure at the Booking > Resources > Advanced cost page for visitors option:

[visitors]
1 = 100%  of total booking cost
2 = 200%  of total booking cost
3 = 300%  of total booking cost
4 = 400%  of total booking cost
5 = 500%  of total booking cost

And for breakfast selection you can define expressions like this:
( [visitors] * 50 )

where [visitors] its shortcode of field from the Booking > Settings > Form page in "Content of booking fields data" form.


2) Shortcodes, its the names of form fields, from the "Content of booking fields data" form in Booking > Settings > Form page.
Each such shortcode will be replaced to digital number relative to selected option or checkbox.

3) In case, if the options in selectboxes or checkboxes does not have numbers (but some strings), please DO NOT use such shortcodes!
For example, if you have shortcode like this in booking form:

[select visitors "1" "2" "3" "4"]

so then you can use [visitors] shortcode at the Booking > Resources > Advanced cost page.

But if you are having shortcode like this at the Booking > Settings > Form page:

[select visitors "Person 1" " Person 2" " Person 3" " Person 4"]

so then you CAN NOT use shortcode [visitors] in the Booking > Resources > Advanced cost page.

4) Tip. The value of each selected checkbox = 1 and value of not checked checkbox is 0.

5) Please note, you need to use parentheses ( and ) to separate each mathematical operation.

Please use instead of expression like this

5 - 3 * 2
this expression
( 5 - ( 3 * 2 ) )
otherwise, the result will be 4 instead of correct -1

Supporting since update 8.2 in Booking Calendar Business Medium or higher versions.

You can configure the booking form to display only the selected payment method after the booking process. To do this, use the following shortcode in the booking form at WP Booking Calendar > Settings > Booking Form page:

Select payment method: [select payment-method "All payment methods@@" "Stripe@@stripe_v3" "PayPal@@paypal_std_co" "Authorize.Net@@authorizenet" "Opayo - Elavon@@sage" "Bank Transfer@@bank_transfer" "Pay in Cash@@pay_cash" "iPay88@@ipay88" "iDEAL Buckaroo@@ideal"]

You can customize the shortcode to include only the active payment gateways that you've enabled at WP Booking Calendar > Settings > Payment Setup page.

After the visitor selects a specific payment system in the booking form, only that payment form will be displayed after the submission of the booking.

This feature is also useful in Booking Calendar Business Medium or higher versions for setting additional "Payment system fee" (commission) at WP Booking Calendar > Prices > Form Options Costs page. Check more about this feature here. Watch it in this video guide.

Short answer to this question, it does not possible. But you can configure auto cancellation of unpaid bookings, and auto approving of paid bookings during specific times.

Booking is created before payment process in any case. You need to activate the auto approve / cancel bookings at the Booking > Settings > Payment page in Stripe or PayPal section, etc..

Also you can activate auto cancellation of pending bookings that have no successfully paid status after a specific amount of time. You can activate this option at the Booking > Settings General page in the "Auto cancellation / approving" section.

It means that if the booking is not approved, and does not have the successfully paid status, this booking can be auto canceled after a specific amount of time.

Or you can even activate to show the "Pending bookings as available dates" - you can activate this option at the Booking > Settings General page in Advanced section.

---
Important info about payment status and auto-cancellation of bookings.
But you need to be sure that all "good" bookings have to be approved or have successfully paid status.

Because if you are using the PayPal standard integration and your visitors make the payment for the booking, but do not click on the "return link" on PayPal site to your site, so Booking Calendar does not know that the payment is successful, and this booking can be auto canceled with that feature.
Stripe has to auto redirect to booking page automatically.

So sometimes it's possible that the successfully paid bookings will not have this status and that's why it can be auto-canceled, if you do not approve them.

Ideally (for PayPal) you will need to activate and correctly configure the PayPal IPN system, at the Booking > Settings > Payment page and in the PayPal account. So in this case the PayPal has to send the messages directly to your booking system.

---
When auto cancellation starts work ?

The Auto cancellation starts work when someone opens the front end side of your website. Please open the page with your booking form, and then check your booking at the Booking Listing page, relative Auto cancellation.
Also please recheck your timezone configuration at the WordPress > Settings General page. It can be an issue relative to the not right time of auto-cancellation.

So please note, auto-cancellation can execute every 1 hour (or other period), if you have configured CRON at your website or if some visitor has visited your website, and cancellation time exceeds that specific "auto cancellation " time duration from last cancellation .

If nobody visit website during "1 hour" (or other period of time), so system just does not start script for initializing checking about (auto cancellation, etc... ) some bookings. In this case, you need to configure CRON script at your server. Please check more about configuration of CRON.

In pure WordPress system it working with pseudo-cron functionality:

WordPress Cron is what many people refer to as a “pseudo-cron system.” The difference is in how UNIX cron and WordPress Cron take action. A typical UNIX cron system runs in this order:
- A time tied to an action occurs.
- Cron runs the action tied to that time.

With WordPress Cron, it works a little differently:

- A visitor comes to any page on your WordPress website.
- WordPress Cron checks each cron event to see whether the scheduled time has passed.
- If the scheduled time for that event has passed, then WordPress Cron executes any actions tied to that event.

This instruction is explain how to start work with integration your payment gateway into Booking Calendar Business Small or higher versions of update 7.0 or newer, based on exist payment gateway.

Let say that your new payment gateway have name: loc_payment.

1) You need to create new folder, like this:

../{Booking Calendar Folder}/inc/gateways/loc_payment/
,
then create new PHP file with following name:
../{Booking Calendar Folder}/inc/gateways/loc_payment/wpbc-gw-loc_payment.php

2) After this you can copy/paste code from file

../{Booking Calendar Folder}/inc/gateways/stripe/wpbc-gw-stripe_v3.php
(or some other, which you better like)
into your new file, and replace in content terms like "stripe" or "STRIPE" to "loc_payment" or "LOC_PAYMENT" accordingly.

3) Then check your code relative comments in this new file and configure your payment form and settings, relative to API and help info from website of your new payment gateway.

4) Additionally you need to add one new hook for ability to load the new payment gateway

// General API for Adding new gateways:
function add_my_gateway( $gateway ){ return $gateway . ',gateway_ID'; }
add_filter( 'wpbc_gateways_original_id_list', 'add_my_gateway' );

In your case you need to have something like this:

function add_my_loc_payment( $gateway ){ return $gateway . ',loc_payment'; }
add_filter( 'wpbc_gateways_original_id_list', 'add_my_loc_payment' );

5) If your payment gateway have response functionality, then you can check this function:

function wpbc_payment_response__stripe_v3( $parsed_response ) {

 

Booking Form Setup and Configuration

Simple Booking Form configuration available in the Booking Calendar Free version and in all Paid versions, after activation of "Simple Booking Form" option at the WP Booking Calendar > Settings General page in "Form Options" section or at toolbar at the WP Booking Calendar > Settings > Booking Form page.

Simple Booking form Setup
Define booking form layout, including centering, and placing the form next to the calendar. Adjust the size and alignment of the form, easily create or edit new fields, define color themes, enable CAPTCHA, and much more.
WP Booking Calendar - Simple Booking Form configuration

Preview of Simple Booking form Setup
You can see all changes in real-time on the same page at WP Booking Calendar > Settings > Booking Form, immediately after making adjustments and Saving Changes to your booking form.
WP Booking Calendar - Simple Booking Form Setup - Preview

Two-Column Layout: Calendar Next to Form
If you want to display the calendar next to the booking form, with the calendar on the left and the booking form fields on the right, follow these steps:

  1. Go to WP Booking Calendar > Settings > Booking Form page.
  2. Select the "Calendar next to form" template from the top toolbar.
  3. Click the Reset button.
  4. Click the Save Changes button.

WP Booking Calendar - configure calendar next  to  booking form  fields.
After completing these steps, you will see the calendar next to the booking form fields on the front-end of your site.
WP Booking Calendar - Two-Column Layout: Calendar Next to Form

Two-Column Layout for Booking Form Fields
If you want to display the calendar at the top and show the booking form in two columns, follow these steps:

  1. Go to WP Booking Calendar > Settings > Booking Form page.
  2. Select the "2 columns" template from the top toolbar.
  3. Click the Reset button
  4. Click the Save Changes button.

WP Booking Calendar - Configure Two-Column Layout for Booking Form Fields
After completing these steps, you will see the calendar at the top and the booking form fields in two columns on the front-end of your site.
WP Booking Calendar - Show Two-Column Layout for Booking Form Fields

You can find it at the Booking > Settings > Form page (available in paid versions only).

Please use shortcode generator at the right side of the Booking > Settings > Form page for the fast and correct creation of booking form fields.

Booking Form Fields setting

Inside of this form, you can use the text, HTML tags and special short codes for the form fields.

General shortcode rule for fields insertion

[shortcode_type* field_name "value"]

shortcode_type - its a reserved term, for the definition type of booking field (like a text field or select box, etc). Please check the full list of these terms bellow.
Parameters:
* - this symbol means that this field is Required (can be skipped in shortcode)
field_name - field name, must be unique (can not be skipped), you can use any letter or "_"symbol.
"value" - default value of field (can be skipped)

In addition you can define the "ID" and CSS "CLASS" of HTML element, in such way:

[shortcode_type* field_name id:id-of-element class:class-name "value"]

where "id-of-element" - its ID of element, "class-name" - its CSS CLASS of element.

Shortcodes of form fields

[calendar] - calendar. Insert the booking availability calendar into the booking form.
[email] - email field, Example:

[email* my_email]
. This field is required and have to be inside of the each booking form customization.

[captcha] - CAPTCHA. Insert the captcha into the booking form. Please note, you are need to activate using of the captcha at the general booking form, also.
[text] - text field. Example:

[text firt_name "John"]

[select] - select field, Example:
[select my_slct "1" "2" "3"]

If you want to use the different option titles from the option values,
you can use the select box options in this format: Option-Title@@Option-Value
Example:
[select my_day_parts "Morning@@08:00 - 12:00" "Evening@@13:00 - 17:00" "Full day@@08:00 - 17:00"]

[checkbox] - checkbox field,
Example #1:

[checkbox my_radio ""]

Example #2:
[checkbox my_radio default:on ""]
- checked by default
Example #3:
[checkbox my_radio "TV" "Player"]
- several values
[textarea] - textarea field, Example:
[textarea my_details ""]

[country] - countries list field,
Example #1:
[country]
- default usage
Example #2:
[country "US"]
- country selected by default as "United States of America"
[submit] - submit button, Example:
[submit "Send"]

Time shortcodes (Business Small/Medium versions)
Entering the time using the text fields (you can enter the time only in 24 hour time format)
[starttime] - start time field. Example:

[starttime]
.
[endtime] - end time field. Example:
[endtime]
.
[time] - additional time field (as an additional property). Do not apply to the dividing day into sections. Example:
[time my_tm]

Selection of time from predefined time slot list.
[select rangetime] - start and end time field in one drop-down list If you have predefined times (start and end time), use this code:

[select rangetime "10:00 - 12:00" "12:00 - 14:00" "14:00 - 16:00" "16:00 - 18:00" "18:00 - 20:00" ]

[select durationtime] - duration time field. If you set already start time, you can set duration of time using this shortcode:
[select durationtime "00:30" "01:00" "01:30" "02:00" "02:30" "03:00" ]
. You do not require endtime.

[select starttime "12:00" "14:00"] - if you have already predefined check in time slots.
[select endtime "16:00" "20:00"] - if you have already predefined check out time slots.

(Business Medium/Large, MultiUser versions)

[cost_corrections] - enter direct cost at admin panel at page: "Add booking".
Example:

[cost_corrections]

Showing the cost in real time at booking form. (Business Medium/Large, MultiUser versions).
[cost_hint] - show cost hint for full booking in real time, depends from selection of days and form elements. Example:

The full cost for payment: [cost_hint]

[original_cost_hint] - show cost hint of original booking cost without additional costs for full booking in real time, depends only from days selection. Example:
The original cost for payment: [original_cost_hint]

[additional_cost_hint] - show cost hint of additional booking cost, which depends from selection of form elements. Example:
The additional cost for payment: [additional_cost_hint]

(Business Large, MultiUser versions)
[coupon] - coupon field, Example:

[coupon* my_coupon]

[lang=LOCALE] - start new translation section, where LOCALE - locale of translation

Use any other HTML tags (carefully).

Some other shortcodes available in new updates of Booking Calendar, as well.
Please use shortcode generator at the right side of the Booking > Settings > Form page for checking other available shortcodes.


"Content of booking fields data" form

Configuration of booking data showing in the booking listing page at "Booking Data" column and in the email templates, if used this shortcode - [content].

Use these shortcodes for customization:

[field_name] - inserting value of the specific booking form field from the above form for the specific booking.

Use any other HTML tags (carefully).

Simple HTML Configuration

Now, you can organize your booking form fields in rows and columns using the new Simple HTML shortcodes. This makes configuring your booking form even easier.

Here's how it works:

Example of how to create a single row with 2 columns:

    <r>
      <c>...</c>
      <c>...</c>
    </r>

With this feature, you have the flexibility to design your booking form exactly as you need it. (Available in all paid versions).

Create Rows. Use these tags to defines a row in your form:

    <span class="tag"><r></span><span class="pln">...</span><span class="tag"></r></span>

Add Columns. Inside each row, you can specify columns using tags:

    <span class="tag"><c></span><span class="pln">...</span><span class="tag"></c></span>

Label Fields. Use the tags:

    <span class="tag"><l></span><span class="pln">...</span><span class="tag"></l></span>

Spacer:

    <span class="tag"><spacer></spacer></span>

or

    <span class="tag"><spacer></span><span class="pln">width:1em;</span><span class="tag"></spacer></span>

Simplified field data tag:

    <span class="tag"><f></span><span class="pln">...</span><span class="tag"></f></span>

Easily highlight field data by enclosing it within tags in the 'Content of booking fields data' section on the Booking > Settings > Form page:

    <span class="tag"><f></span><span class="pln">...</span><span class="tag"></f></span>

This will highlight the background of the field on the Booking Listing page. (All Pro Versions). For example

    <span class="tag"><f></span><span class="pln">[secondname]</f</span>

The ability to have several different custom booking forms with different form fields configurations possible in the Booking Calendar Business Medium or higher versions.
Check more about this feature here. Watch it in this video guide

1) At the front-end side, you can define the showing of a custom booking form or standard form, depending on the form_type parameter in the Booking Calendar shortcode. Please check more here https://wpbookingcalendar.com/faq/shortcode-booking-form/

For example, showing standard booking form:

[booking type=1 nummonths=2 form_type='standard']

Showing some custom booking form:

[booking type=1 nummonths=2 form_type='my-custom-form']

2) For correct showing data at the Booking Listing page and in Calendar Overview pages and emails, depending on specific custom booking form relation to specific booking resources, then you need to define specific custom booking form as Default at the Booking > Resources page for specific booking resources.

3) If you are using the booking resource selection shortcode like in this example, then if you want to show the custom booking form for specific booking resources, you need to define specific custom booking form as default at the Booking > Resources page. You will need to use shortcode like this, without the form_type parameter in shortcode, to load specific custom booking form relative to specific booking resources (check more about configuration here )

[bookingselect label='Please select the resource:' nummonths=1 type='17,16,15']

But if you will use shortcode with form_type parameter in shortcode, then system will load for all booking resources the default booking form or custom booking form depends from your parameter:

[bookingselect label='Please select the resource:' form_type='standard' nummonths=1 type='17,16,15']

Description
Available in Booking Calendar Business Medium or higher versions.
This feature provide possibility to show the different form fields or any other HTML content in the booking form, depends from the selection of specific week day in calendar or different days, which assigned to the specific season filters.


Configuration
If you are not familiar with the booking form fields configuration, please read firstly about the booking form fields configuration here.

The general structure of the configuration condition rule are following:

[condition name="FILTER-NAME" type="FILTER-TYPE" value="VALUE"]
   CONTENT (any HTML or form fields shortcodes), showing if these condition is TRUE
[/condition]

Parameters:
name - its the unique name of the condition group, several conditions with different values. For example, if you want to have the specific HTML content for the different week days, you will be have the several conditions, with the same name but with different value parameters in conditions. Please check more about it, in the examples.
type - type of the condition. There are 2 types of the condition: "weekday" and "season". "weekday" - is mean that condition rule is based on the selected day of week value, like Monday, Tuesday, etc... . "season" - is mean that condition rule is based on the "season filter" name of selected date. In other words the condition is TRUE if the selected day is belong to some season filter in the Booking > Resources > Filters page.
value - value of the specific conditions. If the value is true, so then the content of the conditions is showing in the booking form. You can have the default value (empty - "", or like this - "*") for showing the content of this condition, if all other conditions is FALSE, or at initial stage, when the date in calendar is not selected yet.

Examples:
Week days conditions.

[condition name="weekday-condition" type="weekday" value="*"]
  Default:   [select rangetime  "10:00 - 11:00" "11:00 - 12:00" "12:00 - 13:00" "13:00 - 14:00" "14:00 - 15:00" "15:00 - 16:00" "16:00 - 17:00" "17:00 - 18:00"]
[/condition]
[condition name="weekday-condition" type="weekday" value="1,2"]
  Monday, Tuesday:    [select rangetime  "10:00 - 12:00" "12:00 - 14:00"]
[/condition]
[condition name="weekday-condition" type="weekday" value="3,4"]
  Wednesday, Thursday:  [select rangetime  "14:00 - 16:00" "16:00 - 18:00" "18:00 - 20:00"]
[/condition]
[condition name="weekday-condition" type="weekday" value="5,6,0"]
  Friday, Saturday, Sunday:  [select rangetime  "10:00 - 12:00" "12:00 - 14:00" "14:00 - 16:00" "16:00 - 18:00" "18:00 - 20:00"]
[/condition]

where values are mean following:
"*" - default value, if no dates are selected, or none of the exist condition is true.
0 - Sunday,
1 - Monday,
2 - Tuesday,
3 - Wednesday,
4 - Thursday,
5 - Friday,
6 - Saturday
You can use the several values, separated by comma.

Season filters conditions.

[condition name="season-times" type="season" value="*"]
  Default: [select rangetime "14:00 - 16:00" "16:00 - 18:00" "18:00 - 20:00"]
[/condition]
[condition name="season-times" type="season" value="High_season"]
  High season: [select rangetime  "10:00 - 12:00" "12:00 - 14:00" "14:00 - 16:00" "16:00 - 18:00" "18:00 - 20:00"]
[/condition]
[condition name="season-times" type="season" value="Low_season"]
  Low season: [select rangetime "12:00 - 14:00" "14:00 - 16:00"]
[/condition]

where
High_season - its a name of the some Season filter on the Booking > Resources > Filters page,
Low_season - its a name of the some Season filter on the Booking > Resources > Filters page
You can use only single season filter name in the one value.

Additional info.
Please note, if you will activate the "Multiple days" selection or "Range days" selection in the General Booking Settings page at calendar section, so all these conditions will be based on the "first" day of that selection in the calendar.

If you need to show or hide some form fields in the booking form, depend from the selected option in some selectbox, you can make it with JavaScript customization.

For example, if you need to show additional fields for entering "First and Last Names" of the each visitor, depend from the selected number of this visitors, then you can have this customization in your booking form at the Booking > Settings > Fields page:

<p>Adults:  [select visitors class:visitors_selection "1" "2" "3" "4"] </p>
<p>First Name (required):<br />[text* name] </p>
<p>Last Name (required):<br />[text* secondname] </p>
<p>Email (required):<br />[email* email] </p>
<div class="visitors_selection_div v_num2 v_num3 v_num4" style="display:none;">
   <p>First Name of 2nd visitor:<br />[text* name_2nd] </p>
   <p>Last Name of 2nd visitor:<br />[text* secondname_2nd] </p>
</div>
<div class="visitors_selection_div v_num3 v_num4" style="display:none;">
   <p>First Name of 3rd visitor:<br />[text* name_3rd] </p>
   <p>Last Name of 3rd visitor:<br />[text* secondname_3rd] </p>
</div>
<div class="visitors_selection_div v_num4" style="display:none;">
   <p>First Name of 4th visitor:<br />[text* name_4th] </p>
   <p>Last Name of 4th visitor:<br />[text* secondname_4th]</p>
</div>
<script type="text/javascript">
   jQuery('.visitors_selection').on('change', function() {
       var visitors_num = jQuery(this).find(":selected").val();
       jQuery('.visitors_selection_div').hide();
       jQuery('.visitors_selection_div.v_num' + visitors_num ).show();
   });
</script>

Description of this code:
We are having 3 additional DIV elemtns, where exist fields shortcodes for entering First and Last names of visitors. All these DIV elements does not visible for the visitors

style="display:none;"
.

We attach JavaScript function for selection of the visitors number:

jQuery('.visitors_selection').on('change', function() {

Then we get the number of selected visitors:
var visitors_num = jQuery(this).find(":selected").val();

Hide by default all our additional DIV elements:
jQuery('.visitors_selection_div').hide();

And show DIV elements, that fit to our number of selected visitors:
jQuery('.visitors_selection_div.v_num' + visitors_num ).show();

The trick here in how we apply CSS CLASSes to the DIV elements structure.

For ability to open the booking form in popup window (in paid versions of Booking Calendar), please follow these steps:
1) Create new page (or edit existing page) and add the "Custom HTML block" to the page.
Then insert the code similar to this:

<script src="https://server.com/wp-content/plugins/booking/assets/libs/ui/_out/dropdown_modal.js"></script>
<a  href="javascript:void(0)" onclick="javascript:jQuery('.bookingFormModal').wpbc_my_modal('show');"
    class="wp-element-button">Booking</a>
[booking resource_id=1]

Where [booking type=1] - shortcode for your booking form. Please check more here.

Also you need to define correct URL to dropdown_modal.js script.

<script src="https://server.com/wp-content/plugins/booking/assets/libs/ui/_out/dropdown_modal.js"></script>

You need to replace server.com to your website DNS. And if you are using some paid version of Booking Calendar, then you need to replace /booking/ to correct Booking Calendar Folder. Usually it's similar to this: /booking.bs.10.0/

2) Now open the WP Booking Calendar > Settings > Booking Form page and configure the booking form similar to this:

<div class="wpdevelop">
    <div class="modal bookingFormModal" tabindex="-1" role="dialog" style="display:none;z-index:9999999;">
        <div class="modal-dialog modal-lg" role="document">
            <div class="modal-content">
              <div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button><h4 class="modal-title">Booking Form</h4></div>
              <div class="modal-body">
<!-- Start Booking form configuration -->				  </p>
<p>[calendar]
<div class="standard-form">
     <p>First Name (required):<br />[text* name] </p>
     <p>Last Name (required):<br />[text* secondname] </p>
     <p>Email (required):<br />[email* email] </p>
     <p>Phone:<br />[text phone] </p>
     <p>Adults:<br />[select visitors "1" "2" "3" "4"]</p>
     <p>Children:<br />[select children "0" "1" "2" "3"]</p>
     <p>Details:<br /> [textarea details] </p>
     <p>[checkbox* term_and_condition use_label_element "I Accept term and conditions"] </p>
     <p>[captcha]</p>
     <p>[submit class:btn "Send"]</p>
</div></p>
<p> <!-- End configuration  of the booking form -->
             </div>
            </div>
        </div>
    </div>
</div>
<style type="text/css"> .wpdevelop .modal { overflow-y: scroll; } </style>

3) The result will be like this:

Such configuration possible in the Booking Calendar updates 9.8 or newer.

 

Configuration of Booking Calendar

Follow this detailed guide to customize day selection for different calendars using JavaScript integration.

Insert Booking Shortcode:
You can use this JavaScript AFTER the booking shortcode, like this: [booking resource_id=1] in the WordPress post or page editor. While the examples provided here use this shortcode, keep in mind that in your own examples, you'll likely have different parameters for the booking shortcode, such as ID of booking resource. To learn more about how to insert and configure the booking shortcode into your posts or pages, please read our guide here.

JavaScript Insertion:
Please note: You can insert JavaScript only if you are logged in as an admin user. Subscriber users do not have the permission to insert JavaScript into posts or pages. Follow these steps to add custom JavaScript:

  • Classic Editor: Switch from "Visual" mode to "Text" mode by clicking the "Text" tab at the top right of the post content form.
  • Block Editor: Add a "Custom HTML" block, where you can configure the custom JavaScript code. Or switch from Visual Editor to Code Editor by pressing "Ctrl + Shift + Alt + M" or by using the options toolbar at the top right of the page.
  • Elementor: Add an HTML Widget and follow these steps:

    • Edit Page: Navigate to the page you want to edit in Elementor and click on "Edit with Elementor."
    • Add HTML Widget: Drag and drop the HTML widget from the Elementor widget panel onto the desired section of the page.
    • Edit HTML Widget: Click on the "Edit" button of the HTML widget.
    • Insert JavaScript: Insert your custom JavaScript script in the HTML code editor.
    • Wrap Script: Wrap your JavaScript script inside the <script> tags. For example, <script> your JS code here </script>.
    • Save and Preview: Save your changes and preview your website to ensure that the custom JavaScript script is executed properly.

Customization for Booking Calendar Version 9.8.9 or Newer Updates

Single Day Selection
Activate the Single Day Selection mode with the following code. This code is used to enable single-day selection in the current booking form if you have a different type of day selection set as the default at the General Booking Settings page.

[booking resource_id=1]
<script type="text/javascript">
   var wpbc_resource_id = 1;
   wpbc_cal_ready_days_select__single( wpbc_resource_id );
</script>

Please note that in this code, the line var wpbc_resource_id = 1; defines the ID of the booking resource (calendar). You can find the IDs of your booking resources on the Booking > Resources page. Be sure to use the same resource ID in the shortcode with the wpbc_resource_id parameter.


Multiple Days Selection
Enable Multiple Days Selection mode with the following code:

[booking resource_id=1]
<script type="text/javascript">
   var wpbc_resource_id = 1;
   wpbc_cal_ready_days_select__multiple( wpbc_resource_id );
</script>

Please note that in this code, the line var wpbc_resource_id = 1; defines the ID of the booking resource (calendar). You can find the IDs of your booking resources on the Booking > Resources page. Be sure to use the same resource ID in the shortcode with the resource_id parameter.


Range Days Selection with a Fixed Number of Days with 1 Mouse Click.
Activate the Range Days Selection with a fixed number of days using a single mouse click with the following code:

[booking resource_id=1]
<script type="text/javascript">
   var wpbc_resource_id = 1;
   wpbc_cal_ready_days_select__fixed( wpbc_resource_id, 7, [-1] );
</script>

In this code, we are using 3 parameters:

Parameter #1 - Resource ID:
The line var wpbc_resource_id = 1; define the ID of the booking resource (calendar). Locate the IDs of your booking resources on the Booking > Resources page, and ensure you use the same resource ID in the shortcode with the wpbc_resource_id parameter in JavaScript code.

Parameter #2 - Number of Dates to Select:
The second parameter, in our case, sets the number of dates for selection to 7 days.

Parameter #3 - Start Week Day(s) Selection:
The third parameter, represented as an array, allows you to specify the starting day(s) of the week. Assign values according to the following:

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

[-1] - defines the selection of any weekdays.

For example, if you want the start day of the range selection to be Saturday and you want to select 2 days, use this code:

var wpbc_resource_id = 1;
wpbc_cal_ready_days_select__fixed( wpbc_resource_id, 2, [6] );

If you want to set the start day of range selections as Monday and Friday and make a selection of 4 days, use this code:

var wpbc_resource_id = 1;
wpbc_cal_ready_days_select__fixed( wpbc_resource_id, 4, [1,5] );

The following codes are equivalent:

var wpbc_resource_id = 1;
wpbc_cal_ready_days_select__fixed( wpbc_resource_id, 7, [-1] );

var wpbc_resource_id = 1;
wpbc_cal_ready_days_select__fixed( wpbc_resource_id, 7, [0,1,2,3,4,5,6] );


Range Days Selection as a Dynamic Range of Days with 2 Mouse Clicks.
This code enables this type of day selection for the current booking form if you have a different type of day selection set as the default at the General Booking Settings page.
Activate the Range Days Selection with a dynamic range of days using 2 mouse clicks with the following code:

[booking resource_id=1]
<script type="text/javascript">
  var wpbc_resource_id = 1;
  wpbc_cal_ready_days_select__range( wpbc_resource_id, 7, 14, [], [-1] );
</script>

In this code, we are using 5 parameters:

Parameter #1 - Resource ID:
The line var wpbc_resource_id = 1; define the ID of the booking resource (calendar). Locate the IDs of your booking resources on the Booking > Resources page, and ensure you use the same resource ID in the shortcode with the wpbc_resource_id parameter in JavaScript code.

Parameter #2 - Minimum Number of Days to Select:
The second parameter defines the minimum number of days to select. In our example, it's 7 days.

Parameter #3 - Maximum Number of Days to Select:
The third parameter represents the maximum number of days to be selected with 2 mouse clicks. In our example, it's 14 days.

Parameter #4 - Specific Number of Days to Select:
The fourth parameter is an array that specifies the specific number of days that can be selected.
- To allow any number of days, use this parameter: []
- To allow only week-based selections, such as 7 days, 14 days, 21 days, and so on, use this parameter: [7,14,21].

Parameter #5 - Start Week Day(s) Selection:
The fifth parameter is an array where you can specify the start day of the range days selection.
Specify a specific day of the week or multiple days as the start day for the range selections, use the following values:

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

[-1] - defines the selection of any weekdays.

For example, to start the range selection on Saturday and make a selection from 3 to 10 days, use this code:

var wpbc_resource_id = 1;
wpbc_cal_ready_days_select__range( wpbc_resource_id, 3, 10, [], [6] );

To start the range selection on Monday and Friday and make a selection of only weeks, use this code:

var wpbc_resource_id = 1;
wpbc_cal_ready_days_select__range( wpbc_resource_id, 7, 28, [7,14,21,28], [1,5] );

The following codes are equivalent:

var wpbc_resource_id = 1;
wpbc_cal_ready_days_select__range( wpbc_resource_id, 7, 14, [], [-1] );

var wpbc_resource_id = 1;
wpbc_cal_ready_days_select__range( wpbc_resource_id, 7, 14, [], [0,1,2,3,4,5,6] );


If you're using version 9.7.7 or older, you can refer to the Legacy FAQ for Configuring Different Types of Day Selection at this link.
This resource should provide the guidance you need for configuring different types of day selection in your older version of the plugin.

You can customize the number of months to scroll using JavaScript, allowing for different settings than the general configuration defined in option "Number of months to scroll" at WP Booking Calendar > Settings General page in the "Calendar" section.

To do this:

1) Add a Custom HTML block to your website near your Booking Calendar block. This block allows you to insert JavaScript code into your page.

2) If, for example, you have a booking resource with ID = 4 and need to set the number of months to scroll as 2 years, you can use the following JavaScript code:

Example #1

<script type="text/javascript">
    var my_resource_id = 4;                                                                      /* Defining ID of booking resource - calendar */
    _wpbc.calendar__set_param_value( my_resource_id,'booking_max_monthes_in_calendar','2y' );    /* Defining number of months to  scroll. Can be Years: '4y' or Months: '6m' */
    wpbc_cal__re_init( my_resource_id );                                                         /* Update look  of calendar */
</script>

To set the number of months to scroll as 5 months for the booking resource with ID = 1 (which is the default booking resource in the Booking Free version), you can use the following code:

Example #2

<script type="text/javascript">
    var my_resource_id = 1;                                                                      /* Defining ID of booking resource - calendar */
    _wpbc.calendar__set_param_value( my_resource_id,'booking_max_monthes_in_calendar','5m' );    /* Defining number of months to  scroll. Can be Years: '4y' or Months: '6m' */
    wpbc_cal__re_init( my_resource_id );                                                         /* Update look  of calendar */
</script>

These scripts allow you to customize the scrolling behavior for specific booking resources on your website.

In Booking Calendar Business Large or higher versions possible to define capacity for booking resources (calendars), for ability to receive several bookings for the same date(s)/times in the same calendar (booking resource).

Please read more about it here.
Configuration. Set capacity of booking resources at WP Booking Calendar > Resources page. You can read more info about configurations of booking resources, capacity and availability at this page.
You can test it in the live demo.

Its means that during the booking process, user can book several "child booking resources" and deduct availability for selected date on number of booked "child booking resources". This number (how many items to book), can depend only from one field, that you defined at the WP Booking Calendar > Settings General page in "Capacity" section as the option for "Quantity field name", after enabling this toggle: "Booking Quantity Control".

Usually it is field from the booking form (configured at WP Booking Calendar > Settings > Booking Form page), such as this:

Visitors: [select visitors class:visitors "1" "2" "3" "4" "5" "6"]

It is often require to make deduction of availability based on 2 parameters - selection of "adults" and "children" number.
In this case possible to make this JavaScript customization in the booking form, for automatic selection of specific number of visitors, depend from the selection of number of "adults" and "children" in booking form.
Example of configuration:

<r>
        <c> <l>Adults:</l><br />[select adults class:adults "1" "2" "3"]</c>
    <c> <l>Children:</l><br />[select children class:children "0" "1" "2" "3"]</c>
</r>
<r>
    <c>
        <l>Total number of visitors:</l><div class="visitors_num">1</div>
        <div class="total_visitors_count">[select visitors class:visitors "1" "2" "3" "4" "5" "6"]</div>
    </c>
    <style type="text/css">
        .total_visitors_count select { visibility:hidden;}
     </style>
<script type="text/javascript">
    jQuery( 'select.adults').on( 'change',  wpbc_set_visitors_number );
    jQuery( 'select.children').on( 'change',  wpbc_set_visitors_number );
function wpbc_set_visitors_number() {
    var s_adults   = jQuery('select.adults option:selected').val();
    var s_children = jQuery('select.children option:selected').val();
    var s_visitors = parseInt(s_adults) + parseInt(s_children);
console.log( s_visitors );
jQuery('select.visitors option[value=' + s_visitors + ']').prop({selected: true});
    var resource_id = jQuery( "input[name^='bk_type']" ).val();
    jQuery('.visitors_num').html(s_visitors);
    if (typeof(showCostHintInsideBkForm) == 'function') {
          showCostHintInsideBkForm( resource_id );
    }
}
</script>
</r>

In case, if you select adults and children than available slots for the booking, system does not allow to submit the booking and show warning.
WP Booking Calendar - Warning message,  if booked more than  available slots for specific date/time

1) Firstly, create a new post or page, and insert into content of the page this shortcode:

[bookingedit]

You can just click at the booking button at edit toolbar and then at popup dialog select second tab for inserting this shortcode or just write manually it. Publish or update page and COPY the URL to this page.

Important! Please note, if you open this page directly, you will see this warning "You do not set any parameters for booking editing". It's because system allow to open this page only from link(s) in email templates, which your website visitor had to received, after he/she made the booking (inside of that link will be specific parameter (secret HASH) for the identification of the booking).

2) Now, open the general booking settings page and at the "Manage bookings section" for field: "URL to edit bookings" write (paste) the URL to the page from point #1. Save the changes of this settings page.

In old versions of Booking Calendar this field located at the Booking > Settings General page in "Advanced" section:

3) Open Booking > Settings > Emails page and inside of email template(s), where it's possible (you can check it at help section under the each email template), you can use these shortcodes (for the inserting links into the email templates), which are sending to the visitors:

[visitorbookingediturl]
- inserting link of booking editing by visitor at client side of site,
[visitorbookingcancelurl]
- inserting link for booking cancellation by visitor at client side of site,

[visitorbookingpayurl]
- inserting link to payment page for visitor at client side of site.

4) You can test it for a new bookings.

Configuration of ability to view and manage all previous bookings of user, at front-end side of your website. Visitors of your website, can view previous (own) bookings, by clicking on secret link in email, which is sending after booking created.

Important! Please note, if you open this page directly, you will see this warning "You do not set any parameters for booking editing". It's because system allow to open this page only from link(s) in email templates, which your website visitor had to received, after he/she made the booking (inside of that link will be specific parameter (secret HASH) for the identification of the booking). Check more about such type of configuration here.

Such shortcodes possible to use in the Booking > Settings > Emails page in New (admin) email template only.
Available since update 8.5.1 of paid versions of Booking Calendar.

Using of such shortcodes require correct configuration of [bookingedit] shortcode in your system.
Please check this FAQ instruction how to configure it.

You can enable the "Redirect to thank you page" option on the Booking > Settings General page in the "Booking Confirmation" section. This allows visitors to be redirected to a specified page after creating a new booking. To showcase the confirmation and "booking details" on this page, simply insert the following shortcode:

[booking_confirm]

For guidance on inserting Booking Calendar shortcodes into a page, refer to the instructions on this page, particularly in the 4. Manual Shortcode Configuration section.

To enable the display of the booking admin panel exclusively for specific users, you'll need to install an additional plugin that restricts access to other pages in the WordPress admin panel. You can use the "User Role Editor" plugin or any other plugin of your choice that offers similar functionality.

Follow these steps to show only the booking admin panel for "Subscriber" users in your WordPress admin panel:

  • Navigate to WP Booking Calendar > Settings General page in the "Plugin Menu / Permissions" section. Set the value "Subscriber" for each plugin menu option in the "User permissions for plugin menu pages" section.
  • Install the "User Role Editor" plugin by going to WordPress > Plugins > "Add New Plugin" menu. Alternatively, install another plugin that can restrict access to the WordPress admin plugin pages.
  • Open the Users > User Role Editor page and ensure that only one "Read" capability is defined for "Subscriber" users. Save changes.
  • Log in with another WordPress user who has only the "Subscriber" user role and test it.

Important Note: If you have any questions about configuring the "User Role Editor" plugin or another plugin with similar functionality, please contact the support of that specific plugin for assistance. We can only provide help with configuring the Booking Calendar plugin. Thank you for your understanding.

Integrating Booking Calendar Shortcodes in DIVI Builder

To add Booking Calendar shortcodes to your pages in DIVI Builder using the "Code" module, please follow these steps:

  1. Edit the page where you want to add the Booking Calendar shortcode in the DIVI Builder.
  2. Add a new section or row where you want the Booking Calendar to appear.
  3. Within the section or row, add a new module and select the "Code" module.
  4. In the Code module settings, paste the Booking Calendar shortcode.
  5. Customize the settings of the Code module as needed, such as adjusting the alignment or size.
  6. Save or update the page.

By following these steps, you'll be able to seamlessly integrate Booking Calendar shortcodes into your DIVI Builder pages using the "Code" module.

1. Please read what type of shortcodes you are want to insert here
2. Open for edit your theme (PHP) file. For example: single.php.
3. Insert this code for showing booking form

<?php echo do_shortcode("[booking type=1 nummonths=1]"); ?>

where instead of this shortcode: [booking type=1 nummonths=1], can be any other shortcode from the point #1.
4. save the changes in the PHP file.

1) Currently there is no full API for using Booking Calendar plugin with other plugins or services.
Some hooks exist, but they does not documented well, yet. We are in process of improving this with future updates of plugin.

2) But still plugin have some useful functions and hooks for such purpose.
Please check this file ../{Booking Calendar Folder}/core/wpbc-dev-api.php
Here you can find some useful functions and hooks.

How to Edit CSS in the Theme Editor

The location of the CSS section for editing CSS files depends on your theme.
For standard Classic Themes, it is usually located in the "Appearance > Theme Editor" section.
Edit CSS in Classic WordPress themes

However, in the new WordPress Block themes, it can be found in "Appearance > Editor > Styles". Then, within the Style Widget (located on the right side of the editor), there is an "Additional CSS" section at the bottom for editing CSS. The exact path may vary depending on the theme. (It was explained using the default Twenty Twenty-Four theme as an example).
Edit CSS in Block WordPress themes

How to Edit Plugin files

WordPress update 4.9 or newer.
Since update 4.9 of WordPress, its was updated interface of editing plugin files via WordPress admin panel.
1) Now, you can open WordPress admin panel, then
2) Open WordPress > Plugins > Editor menu
3) In the top right side for option "Select plugin to edit" select "Booking Calendar" plugin (please note, if you have several versions of Booking Calendar (for example, Booking Calendar Free version as deactivated version and paid version, so you will see both options there, and you need to select correct, activated version of your version of Booking Calendar) and click "Select" button
4) Now at right side you can see files and folders of plugin, you can select specific file to edit and make your customization,
after this click on Save changes button.
5) Clear browser cache and test it.

WordPress update 4.8 or older.
1) Open the WordPress Plugins menu page.

2) Click on "Edit" link under the "Booking Calendar" plugin.

3) On the right side of that page, please find specific file, like this:

booking/css/client.css

Or some other that you require. Click on that link.

Please note, if you do not see some specific file in list at the right side, so probably this file in some sub-folder (WordPress Edit plugin menu page do not show links to all files at once).
You will be need to edit URL in your browser and specify directly, what file to edit.

One restriction. (Booking Calendar Free version have name of plugin folder "booking", paid versions of Booking Calendar can have different names. For example Booking Calendar Personal version can have name of folder like this: booking.personal.7.0 (etc). So you will be need to change in URL this folder appropriately.

For example, if you need to edit this file: ../{Booking Calendar Folder}/core/admin/page-email-trash.php
Then you need to edit URL to this:
https://your-server.com/wp-admin/plugin-editor.php?file=booking/core/admin/page-email-trash.php

Important part here this path: ?file=booking/core/admin/page-email-trash.php
And in case, if you use some paid version, you will be need to replace folder name from "booking" to "booking.personal.7.0" or some other.

4) Make edit of this file.

5) Then click on "Update file" button to save changes.

6) Clear browser cache and test it.

Deprecated for Update 9.8 or newer

This feature is available only at Booking Calendar Business Medium or higher versions.
You need to create new custom booking form at the Booking > Settings > Form page, and define several calendars.
Example, of configuration booking form with several calendars of different booking resources:

<style type="text/css">
	.flex_container { display: flex; flex-flow: row wrap; justify-content: space-around; }
	.flex_item { flex: 1 0 auto; }
</style>
<div class="flex_container">
	<div class="flex_item">[calendar]</div>
	<div class="flex_item">[calendar id=2]</div>
	<div class="flex_item">[calendar id=3]</div>
</div>
<div class="standard-form">
     <div class="form-hints">
          Dates:[selected_short_timedates_hint]  ([nights_number_hint] - night(s))<br><br>
          Full cost of the booking: [cost_hint] <br>
     </div><hr/>
     <p>First Name (required):<br />[text* name] </p>
     <p>Last Name (required):<br />[text* secondname] </p>
     <p>Email (required):<br />[email* email] </p>
     <p>Adults:  [select visitors "1" "2" "3" "4"]</p>
     <p>[submit class:btn "Send"]</p>
</div>

Where [calendar] - default calendar. You define this booking resource in the Booking Calendar shortcode, during inserting it into a post or page, for example in shortcode like this (inside of the content of the page) [booking type=5 ]. This shortcode define the main calendar (booking resource) with ID = 5 (parameter type=5 ).

[calendar id=2] - calendar of booking resource with ID=2

[calendar id=3] - calendar of booking resource with ID=3

etc...

 

Time Slots Configuration

Its does not possible to select several time-slots (possible to select only one), if you are using Booking Calendar Free version of in paid versions using range-time shortcode:

Select time-slot: [select rangetime "10:00 - 12:00" "12:00- 14:00" "14:00 - 16:00" "16:00 - 18:00" "18:00 - 20:00"]

Instead of time-slots selection you can use start time and end time selections or start time and time duration selections shortcodes at the Booking > Settings > Form page in paid versions of Booking Calendar. So you can book several consecutive hours during specific day.

1) Star time and duration of time shortcodes, for ability to book several consecutive hours during a day:

Start time: [select starttime "10:00" "11:00" "12:00" "13:00" "14:00" "15:00" "16:00" "18:00"]
Time Duration: [select durationtime "15min@@00:15" "30 min@@00:30" "45 min@@00:45" "1 hour@@01:00" "1 hour 30 min@@01:30"]

2) Or you can use start time and end time selections or time entering shortcodes:

 Start time: [select starttime "10:00" "11:00" "12:00" "13:00" "14:00" "15:00" "16:00" "18:00"]
 End time: [select endtime "11:00" "12:00" "13:00" "14:00" "15:00" "16:00" "19:00"]

You can configure the time-slots selections on the Booking > Settings > Form page. Please use the "shortcode generator" on the right side of that page for the correct generation of the shortcode.
Please watch more in this video: https://wpbookingcalendar.com/help/booking-calendar-video-timeslots/

You can test the bookings for the specific times in action on the live demo of Business Small version (which is configured by default for the bookings of specific time-slots) here: https://bs.wpbookingcalendar.com/
Other live demo you will need to reconfigure.

Description
Available in Booking Calendar Business Medium or higher versions.
This feature provide possibility to use the different time slots selections in the booking form for the different week days or different days, which assigned to the specific season filters. So each week day (day of specific season filter) can have different time slots list.


Configuration
You can configure the time slots at the Booking > Settings > Fields page. If you are not familiar with the booking form fields configuration, please read firstly about the booking form fields configuration here.

The general structure of the configuration condition rule are following:

[condition name="FILTER-NAME" type="FILTER-TYPE" value="VALUE"]
   CONTENT (any HTML or form fields shortcodes), showing if these condition is TRUE
[/condition]

Parameters:
name - its the unique name of the condition group, several conditions with different values. For example, if you want to have the different time slots for the different week days, you will be have the several conditions, with the same name but with different value parameters in conditions. Please check more about it, in the examples.
type - type of the condition. There are 2 types of the condition: "weekday" and "season". "weekday" - is mean that condition rule is based on the selected day of week value, like Monday, Tuesday, etc... . "season" - is mean that condition rule is based on the "season filter" name of selected date. In other words the condition is TRUE if the selected day is belong to some season filter in the Booking > Resources > Filters page.
value - value of the specific conditions. If the value is true, so then the content of the conditions is showing in the booking form. You can have the default value (empty - "", or like this - "*") for showing the content of this condition, if all other conditions is FALSE, or at initial stage, when the date in calendar is not selected yet.

Examples:
Week days conditions.

[condition name="weekday-condition" type="weekday" value="*"]
  Default:   [select rangetime  "10:00 - 11:00" "11:00 - 12:00" "12:00 - 13:00" "13:00 - 14:00" "14:00 - 15:00" "15:00 - 16:00" "16:00 - 17:00" "17:00 - 18:00"]
[/condition]
[condition name="weekday-condition" type="weekday" value="1,2"]
  Monday, Tuesday:    [select rangetime  "10:00 - 12:00" "12:00 - 14:00"]
[/condition]
[condition name="weekday-condition" type="weekday" value="3,4"]
  Wednesday, Thursday:  [select rangetime  "14:00 - 16:00" "16:00 - 18:00" "18:00 - 20:00"]
[/condition]
[condition name="weekday-condition" type="weekday" value="5,6,0"]
  Friday, Saturday, Sunday:  [select rangetime  "10:00 - 12:00" "12:00 - 14:00" "14:00 - 16:00" "16:00 - 18:00" "18:00 - 20:00"]
[/condition]

where values are mean following:
"*" - default value, if no dates are selected, or none of the exist condition is true.
0 - Sunday,
1 - Monday,
2 - Tuesday,
3 - Wednesday,
4 - Thursday,
5 - Friday,
6 - Saturday
You can use the several values, separated by comma.

Season filters conditions.

[condition name="season-times" type="season" value="*"]
  Default: [select rangetime "14:00 - 16:00" "16:00 - 18:00" "18:00 - 20:00"]
[/condition]
[condition name="season-times" type="season" value="High_season"]
  High season: [select rangetime  "10:00 - 12:00" "12:00 - 14:00" "14:00 - 16:00" "16:00 - 18:00" "18:00 - 20:00"]
[/condition]
[condition name="season-times" type="season" value="Low_season"]
  Low season: [select rangetime "12:00 - 14:00" "14:00 - 16:00"]
[/condition]

where
High_season - its a name of the some Season filter on the Booking > Resources > Filters page,
Low_season - its a name of the some Season filter on the Booking > Resources > Filters page
You can use only single season filter name in the one value.

Additional info.
Please note, if you will activate the "Multiple days" selection or "Range days" selection in the General Booking Settings page at calendar section, so all these conditions will be based on the "first" day of that selection in the calendar.

You need to define the times selection in booking form at the Booking > Settings > Form page in a way like this:

<p class="times_section">Select Start times:<br />[select starttime class:start_selection "All day(s) booking@@00:00" "08:00" "08:30" "09:00" "09:30" "10:00" "10:30" "11:00" "11:30" "12:00" "12:30" "13:00" "13:30" "14:00" "14:30" "15:00" "15:30" "16:00" "16:30" "17:00" "17:30" "18:00" "18:30" "19:00" "19:30" "20:00" "20:30" "21:00"]</p>
<p class="times_section time_duration_section">Select time duration:<br />[select durationtime class:duration_selection "All day booking@@24:00" "1 hour@@01:00" "2 hours@@02:00" "3 hours@@03:00" "4 hours@@04:00" "5 hours@@05:00" "6 hours@@06:00" "7 hours@@07:00" "8 hours@@08:00" "9 hours@@09:00" "10 hours@@10:00"]</p>

Please note, here is trick in start time selection. First option configured like this:
"All day(s) booking@@00:00"
Where value for this option "00:00" is means that entire day will be booked (its internal logic of Booking Calendar plugin).

2) Also you need to add custom JavaScript code, that will show the "duration of time", only in case, if you will select other value than "All day booking", and hide the times fields from the booking form, at all, if you select more than 1 day:

<script type="text/javascript">
    jQuery('.start_selection').on('change', function() {
       var start_time = jQuery(this).find(":selected").val();
	   if ( '00:00' == start_time ) {
       	  jQuery('.time_duration_section').hide();
		  jQuery('.duration_selection').val( '24:00' );
		  jQuery('.time_duration_section option:first').css('display', 'block');
	   } else {
          jQuery('.time_duration_section').show();
          jQuery('.duration_selection').val( '01:00' );
		  jQuery('.time_duration_section option:first').css('display', 'none');
	   }
     });
     jQuery(document).ready(function(){
		jQuery('.start_selection').val( '00:00' );
		jQuery('.duration_selection').val( '24:00' );
		jQuery('.time_duration_section').hide();
     });
     jQuery( ".booking_form_div" ).on('date_selected', function(event, bk_type, date) {
                   if ( ! jQuery( this ).is( ':visible' ) ) {
                      return false;
                   }
                   var dates_count =  date.split(',');
		   dates_count = dates_count.length;
		   if ( dates_count > 1 ) {
		       jQuery('.start_selection').val( '00:00' );
		       jQuery('.duration_selection').val( '24:00' );
		       jQuery('.times_section').hide();
		   } else {
		       jQuery('.start_selection').val( '00:00' );
		       jQuery('.duration_selection').val( '24:00' );
		       jQuery('.times_section').show();
			   jQuery('.time_duration_section').hide();
		   }
		 if (typeof(showCostHintInsideBkForm) == 'function') {
               showCostHintInsideBkForm( bk_type );
         }
     });
</script>

So full minimum booking form configuration can look like this:

[calendar]
<div class="form-hints">
          Dates:[selected_short_timedates_hint]  ([nights_number_hint] - night(s))<br><br>
          Full cost of the booking: [cost_hint] <br>
</div><hr/>
<div class="times-form">
	<p class="times_section">Select Start times:<br />[select starttime class:start_selection "All day(s) booking@@00:00" "08:00" "08:30" "09:00" "09:30" "10:00" "10:30" "11:00" "11:30" "12:00" "12:30" "13:00" "13:30" "14:00" "14:30" "15:00" "15:30" "16:00" "16:30" "17:00" "17:30" "18:00" "18:30" "19:00" "19:30" "20:00" "20:30" "21:00"]</p>
	<p class="times_section time_duration_section">Select time duration:<br />[select durationtime class:duration_selection "All day booking@@24:00" "1 hour@@01:00" "2 hours@@02:00" "3 hours@@03:00" "4 hours@@04:00" "5 hours@@05:00" "6 hours@@06:00" "7 hours@@07:00" "8 hours@@08:00" "9 hours@@09:00" "10 hours@@10:00"]</p>
<script type="text/javascript">
    jQuery('.start_selection').on('change', function() {
       var start_time = jQuery(this).find(":selected").val();
	   if ( '00:00' == start_time ) {
       	  jQuery('.time_duration_section').hide();
		  jQuery('.duration_selection').val( '24:00' );
		  jQuery('.time_duration_section option:first').css('display', 'block');
	   } else {
          jQuery('.time_duration_section').show();
          jQuery('.duration_selection').val( '01:00' );
		  jQuery('.time_duration_section option:first').css('display', 'none');
	   }
     });
     jQuery(document).ready(function(){
		jQuery('.start_selection').val( '00:00' );
		jQuery('.duration_selection').val( '24:00' );
		jQuery('.time_duration_section').hide();
     });
     jQuery( ".booking_form_div" ).on('date_selected', function(event, bk_type, date) {
                   if ( ! jQuery( this ).is( ':visible' ) ) {
                      return false;
                   }
                   var dates_count =  date.split(',');
		   dates_count = dates_count.length;
		   if ( dates_count > 1 ) {
		       jQuery('.start_selection').val( '00:00' );
		       jQuery('.duration_selection').val( '24:00' );
		       jQuery('.times_section').hide();
		   } else {
		       jQuery('.start_selection').val( '00:00' );
		       jQuery('.duration_selection').val( '24:00' );
		       jQuery('.times_section').show();
			   jQuery('.time_duration_section').hide();
		   }
		 if (typeof(showCostHintInsideBkForm) == 'function') {
               showCostHintInsideBkForm( bk_type );
         }
     });
</script>
     <p>First Name (required):<br />[text* name] </p>
     <p>Last Name (required):<br />[text* secondname] </p>
     <p>Email (required):<br />[email* email] </p>
     <p>Adults:  [select visitors class:col-md-1 "1" "2" "3" "4"] Children: [select children class:col-md-1 "0" "1" "2" "3"]</p>
     <p>[submit class:btn "Send"]</p>
</div>

It's possible at the Booking Calendar Business Small and Business Medium versions of Booking Calendar in update 4.1 or newer.

You can activate "Use check in/out time:" option at the General Booking Settings page.
Then in the sub-settings set the "Check in" time as 15:00 and "Check out" time as 10:00. (You can set the different times there, but be sure to set the "Check In" time older than "Check Out").
Save the settings page.

Now, your visitors will be able to use the same date as check in/out date for the different bookings, its mean if the some booking is finished on the specific date, other visitor can start the new booking on the same specific date.
The check in/out days in calendar will be marked as half booked (diagonal line) and not by clock icon as for the usual timeslots.

Please note, this option will apply globally to the all booking resources and will overwrite any time slots, if you will use them in the booking form.

If you are need to use just time slots in the booking form, so you are need to deactivate this option and configure the time slot selection at the Booking > Settings > Fields page. Please read more about the booking form fields configuration here.

If you're using the changeover days functionality, which allows half-day bookings, but you need specific booking resources to have time slots or full-day bookings, you can exempt certain pages from the changeover days functionality.

  1. Navigate to WP Booking Calendar > Settings General page in the "Calendar" section.
  2. Activate the option "Use changeover days" (this option is only available if you've enabled "Multiple" or "Range" days selection modes).
  3. Enable the option "Do not use changeover days on certain pages".
  4. Enter the relative URLs of the pages for which you do not want to use the changeover days functionality. Enter one URL per line. For example: "/page-no-change-over/".

Booking Calendar - Set exception for change-over days

 

Search Availability Setup

This functionality is available in update 10.1 of Booking Calendar Business Large and Booking Calendar MultiUser versions.

This feature allows you to easily customize search availability for booking resources. Personalize search visibility and attributes by customizing options like summary text and thumbnail images to enhance user engagement in search results. Additionally, configure specific parameters for resource filtering in search forms, providing users with targeted and relevant search options.
Setup Search Availability in WP Booking Calendar

Search for Specific Time Slots
Now you can search for specific time slots on particular dates or even a range of dates. This is a fantastic feature for appointment-based businesses, allowing clients to find available time slots for different service providers. Imagine searching for an available hair stylist, doctor, or other service provider on a specific date and time. You can even set an approximate date range (+/- N days from the desired date) to find appointments within a specific time slot.
Search Available Time for Appointment Booking. Setup in WP Booking Calendar.

 

Sync

1) Requirements. This functionality available in the Booking Calendar update 8.0 or newer version.
So if you are using some older paid version of Booking Calendar, then you can request the new update of Booking Calendar on this page: https://wpbookingcalendar.com/request-update/

2) Requirements. Additionally for ability to import bookings from external websites, like Airbnb, Booking.com, HomeAway, TripAdvisor, VRBO, FlipKey and any other calendar that uses .ics format, you will be need to install Booking Manager plugin update 2.0 or newer ( https://wordpress.org/plugins/booking-manager/ ).

3) Getting URL of .ics feed. Now, when you have installed both plugins, you can start configuring of import events/bookings from external website.

First of all you need to get URL of .ics feed, from where you want to import the events/bookings.
Let make example based on Google Calendar. At other websites, you need to check help documentation where exactly you can find URL of .ics feeds: Airbnb, Booking.com, HomeAway, TripAdvisor, VRBO, FlipKey

3.1) Open Google Calendar then mouse over specific calendar and click on settings icon at right side near specific calendar, then click on "Settings and Sharing" link.
Google Calendar settings and sharing

3.2) Scroll to "Integrate calendar" section, and copy URL of "Secret address in iCal format"
Google Calendar Secret address in iCal format

4) Inserting Booking Manager import shortcode(s). You will be need to insert the Booking Manager Shortcode for importing of events into some post or page.
The easiest way todo this is clicking on "Booking Manager" button in edit content toolbar:

Then in popup dialog switch to the "Import .ics feed into WPBC" tab.
Paste URL to your .ics feed in specific feed, and configure other parameters, like booking resource (in paid versions), where you want to import bookings, start and end date of import and other parameters.

Please read more about manual configuration of Booking Manager import shortcode at this page.

5) Publish such page(s)

Please note, now, when someone will visit this page, the import process from this specific .ics feed will start into the booking resource, which you have specified in booking manager shortcode.

When you will visit such page, so then you will see how many bookings was imported:

6) CRON. Its means that you need to visit such page periodically for start importing of bookings that can be created at other website. The best way its to configure CRON at your server for periodic access such page(s) and import of bookings from different sources. Please read more about CRON .
Probably you will be need to contact your server administrator or support of hosting, if you will have some difficulties with configuring CRON at your server.

Repeat steps 3 - 6 for different .ics feeds from different sources and for different booking resources (in paid versions of Booking Calendar).

7) TIP. As you can see from Booking Manager Shortcode, you can define in shortcode different URL to .ics feed and specific booking resource (in paid version). Using such shortcodes in different pages give a great flexibility to import from different .ics feeds (sources) into the same resource. Like one page for import from Airbnb and other page with different shortcode for importing from booking.com or Google Calendar. Also you can define different time interval in your CRON for accessing different pages and its means to start import of bookings with different intensity.

1) Requirements. This functionality available in the Booking Calendar update 8.0 or newer version.
So if you are using some older paid version of Booking Calendar, then you can request the new update of Booking Calendar on this page: https://wpbookingcalendar.com/request-update/

2) Requirements. Additionally for ability to export bookings into external websites, like Airbnb, Booking.com, HomeAway, TripAdvisor, VRBO, FlipKey and any other calendar that uses .ics format, you will be need to install Booking Manager plugin update 2.0 or newer ( https://wordpress.org/plugins/booking-manager/ ).

3) Export URLs. Now, when you have installed both plugins, you can start configuring of export bookings into external website.

Please open the Booking > Settings > Sync > Export -ics page.

Configure URLs for each booking resources (in paid versions). In the Booking Calendar Free version, you will see field for configuring URL for your one Default booking resource. Then click on Save changes button.

4) Import .ics in external website. Now you need to check documentation of each other external website, of how to start import of .ics feeds into specific services: Airbnb, Booking.com, HomeAway, TripAdvisor, VRBO, FlipKey

Important! Please note, once you have imported specific .ics feed into external website or application, its does not mean that this operation will be executed periodically. You need to check documentation of specific service (like AirBNB), for ability to import such .ics feeds periodically for having your bookings in external website always up to date.

Example of how to import .ics files in Google Calendar.

If you get error during generating .ics feed or getting just empty space instead of .ics feed.

In case, if you start import of .ics feed into Google Calendar by URL "Other Calendars > Add by URL", then in the point #3 you need to configure URL that ending with wpbm.ics. For example:

/ics/apartment2/wpbm.ics

1) So please try to configure link with wpbm.ics at the end of links at the Booking > Settings > Sync > "Export - .ics" page, like this:

/apartment2ics/wpbm.ics

After this click on icon near specific .ics feed url (check in point #3 in first screenshot point #3), its will open new .ics feed in new browser window. And you have to see .ics feed. Basically in browser window you have to copy full URL and then use it in other services.

2) If you still have an issue. Please recheck your error.log in your server configuration, about any relative errors.
If you can not find error.log file, please contact support of your hosting company about helping in finding this file.
Just to recheck about the reason of this issue. May be you have not activated some PHP module.

3) Be sure that you are using latest versions of Booking Calendar and Booking Manager.

What fields are exported from Booking Calendar to .ics feed?

Booking Calendar export bookings via .ics feeds by assigning these booking form fields to the fields in .ics feed:

SUMMARY

In the Booking Calendar Free version assign to 'SUMMARY' field in .ics feed, one of exist fields from your booking form, that can have names like this 'name', 'firstname', 'secondname', 'lastname'

In the paid versions of Booking Calendar possible to define, what exactly field from the booking form to assign to 'SUMMARY' field in the .ics feed. You can define it at the Booking > Settings General page in "Admin panel" section in the option "Booking title (admin panel)"

DESCRIPTION

Booking Calendar export all bookings details (that you have defined as fields at the Booking > Settings > Form page) to this field 'DESCRIPTION' in the .ics feed.
Please note, in the paid versions, all such bookings details defined at the "Content of booking fields data" form at the Booking > Settings > Form page.

Please note, the import process is working in that case, when some visitor is open your website page with booking import shortcode.
For start import of .ics feeds in "automatic" way you need to configure the CRON script at the server, for periodically accessing the page with booking import shortcode.

In pure WordPress system it works with pseudo-cron functionality. WordPress Cron is what many people refer to as a "pseudo-cron system". The difference is in how UNIX cron and WordPress Cron take action.

A typical UNIX cron system runs in this order:

  • A time tied to an action occurs.
  • Cron runs the action tied to that time.

With WordPress Cron, it works a little differently:

  • A visitor comes to any page on your WordPress website.
  • WordPress Cron checks each cron event to see whether the scheduled time has been passed.
  • If the scheduled time for that event was passed, then WordPress Cron executes any actions tied to that event.

The detail description about Linux style of CRON commands you can check here. Other example of other CRON commands for other periods of time you can find here.
But usually you can configure your cron script via your server administration panel, like ISP Manager or Cpanel, in easier way via menu and not the commands. Help info about configuration of CRON script in ISP Manager server administration panel you can check here or here (older versions). Help info about configuration of CRON script in Cpanel server administration panel you can check here or here. For more info, please contact support of your hosting. Hosting support should know exactly what server administration panel you are using at your server, and how to configure your CRON script. Note. We do not provide support of configuration CRON at your servers.
Check how to setup the Cron job or read more about Hooking WP-Cron Into the System Task Scheduler, if you are WordPress developer.

You need to define the CRON command to access the page with your import .ics feeds shortcodes, during each 1 hour (or other reasonable period of time). So CRON script will access the page with import .ics feeds shortcodes in your website, and during these times, will be start of import process, from your other services.

Example of CRON command (for every 1 hour to run):

0 * * * * wget -qO- https://your-server.com/your-page-with-import &> /dev/null

Instead of "your-server.com" use your website DNS. In other words the URL like this https://your-server.com/your-page-with-import , it's URL to the page at your website, where you have inserted into the content of this page the import .ics feed shortcode. Check more about import .ics feeds shortcodes.

Each .ics feed can contain info about the event in following fields:
- Event Title
- Event Description (optional field)
- Location
and dates of event, of course.

1) During import of .ics feed from external source into the Booking Calendar, you can assign each such specific field to one of exist fields in the booking form. You can make this assignment at the Booking > Settings > Sync > "General" page in "Import > Assign events fields to specific booking form field" section.

Please note, email field here is not required (but this field is required for the Booking Calendar). So that's why during import of events from .ics feed into the Booking Calendar created new email field and assigned your "Administrator email" from your WordPress website.

2) During export of events from the Booking Calendar into the .ics feed, Booking Calendar assign following values to standard .ics feeds fields: "Title" and "Description".

If you are using the Booking Calendar Free version, so then plugin export into "Title" field following fields (if fields with such names exist in your configuration at Booking > Settings > Form page): 'name' 'firstname' 'secondname' 'lastname'.

In paid versions of Booking Calendar, plugin export into "Title" field of specific event, - configured "Title" of booking that is showing in Calendar Overview (timeline) page in booking pipelines. This configuration you can find at the Booking > Settings General page in "Booking Admin Panel" section, in option "Booking title (admin panel)" - default title of bookings in calendar view mode at Booking Listing page.

As "Description" field, Booking Calendar export all booking data of specific booking. In paid versions of Booking Calendar its configuration of "Content of booking fields data" form from Booking > Settings > Form page.

If you need to remove any booking data (in "Title" and "Description" fields) in your exporting .ics feed, then you can activate this option "Remove booking details in exported .ics feed" at the Booking Manager plugin at menu "oPlugins Panel" > General Settings page. In this case, system will export only booked dates into the .ics feed without any additional details. this option available in Booking Manager update 2.0.12 or newer.

P.S. In case, if you need to make some your customization of such import / export process, so then you can find needed info for import in this file: ../wp-content/plugins/booking-manager/core/wpbc/wpbm-bc-import.php

function function wpbm_ics_import_start( $attr )

and for export in this file: ../wp-content/plugins/booking-manager/core/wpbc/wpbm-bc-export.php

function wpbm_export_ics_feed__wpbm_ics( $param = array( 'wh_booking_type' => '1', 'wh_trash' => '' ) ) { 

P.S.S. Disclaimer. Unfortunately we can not start, right now, some personal customization or custom development, because almost have no free time. Check more about new features here https://wpbookingcalendar.com/faq/need-new-feature/
Please note, if you will modify the source code of the Booking Calendar, we will not guaranteed the correct work of plugin and do not support it.

01. To get Google Calendar API key please follow this instruction:

  1. Go to Google Developer Console: https://console.developers.google.com. And then click on Credentials link.

  2. If you do not have projects yet, please click "Create Project".

  3. Give your project a name and click "Create".

  4. Click on "Create credentials" to expand dropdown list and select "API Key".

  5. Click on your "API Key" to edit it.

  6. Copy "API Key" (later we will paste it into Google API Key field at Booking > Settings > Sync > Google Calendar Events Import page in your WP admin panel). Then be sure to select "Key restriction" as "None" and click on Save button.

    Please be sure that you have NOT restricted the Google API key, otherwise its can be reason of not ability to import events.

  7. Now in the sidebar click on "Library", and then click on "Calendar API" link


  8. Click on "ENABLE" link to enable your Google Calendar API


02. Set Your Calendar to Public:

  1. Navigate to your Google calendars.

  2. Open the settings for the calendar.


  3. Navigate to Access permissions section. Click the checkbox to "Make available to public". Do not select other option (be sure that was selected "See all events details"). Save settings.


03. Find Your Calendar ID:

  1. Navigate to your Google calendars.

  2. Open the settings for the calendar.


  3. Now copy the Calendar ID to use in the Booking > Settings > Sync > Google Calendar Events Import page in your WP admin panel for "Calendar ID" field(s).

    Please be sure to use the Calendar ID in format like XXXXXX@group.calendar.google.com (or XXXXXX@gmail.com)

    Do not use the entire XML feed URL (starting from http) and do not use simple ID (term before @), like: XXXXXX.


04. Test Import of Google Calendar Events:

  1. Open your WordPress admin panel and Navigate to Booking > Settings > Sync > Import Google Calendar Events page.

  2. Paste your Google API Key and Google Calendar ID into specific fields. Important! Please be sure that you do not paste any white spaces at the beginning or ending of API Key or Google Calendar ID. Save the changes.
    In the paid versions of Booking Calendar you can assign at this page different Google Calendar ID for the different booking resources.


  3. Open Booking Listing page and switch to the "Actions toolbar", then click on "Import" button.

  4. In popup dialog configure your parameters (during first test import, please be sure that you selected time interval, where for sure exist your Google Calendar Events). And then click on Import button.

  5. You have to see your imported events. Reload the page to see them as bookings.

Typically, exporting from Booking Calendar to Google Calendar isn't directly supported. However, there's a workaround:

  • Open the settings for your specific Google Calendar.
  • Select "Add calendar" and then choose "From URL."
  • Define the URL to the .ics feed from Booking Calendar.
    You can find this URL on the page: WP Booking Calendar > Settings > Sync > "Export - .ics" page.

Please note: Google Calendar imports events from such .ics feeds only twice per day.

 
 

Styles and CSS customization

Since update 4.2 of the Booking Calendar the calendar structure CSS file is located at the ../booking/css/calendar.css (please do not edit it or edit it very carefully). The calendar color skins are located in the ../booking/css/skins folder. Inside of these files (for better compatibility), please modify only following parameters:
* background , background-color, background-repeat, background-image, background-repeat, background-position
* border
* box-shadow, -moz-box-shadow, -webkit-box-shadow
* border-radius, -moz-border-radius, -webkit-border-radius
* color
* font-weight
* text-shadow
* text-transform


If you want to add new style.
Go to the folder “BOOKING_PLUGIN_PATH/css/skins/” and add new CSS file (the template you can get from this directory) to this directory. After this select this file at the general booking settings page and save settings.
If you want to customize exist skin.
Go to the folder “BOOKING_PLUGIN_PATH/css/skins/” open your file from this directory and customize it. After customization you need to select this style at the general booking settings page and save settings.

Important! Please note, if you will make upgrade of plugin to the new update, all plugin files is overwriting. Its means that your custom calendar skin also will be overwriting. That's why please backup your custom calendar skin before update and then restore it after update process.

Since new update 5.4 you do not need to backup/restore your custom calendar skins anymore. Just put your custom calendar skin to the special folder. Please save your own custom calendar skin to the /wp-content/uploads/wpbc_skins/ folder. You need to create this folder /wpbc_skins/ inside of your /wp-content/uploads/ folder, because this folder has not created automatically. Its will save your custom calendar skin, if you will make upgrade of plugin to new plugin update.

You can check this instruction how to edit CSS file from WordPress menu.

By default the "partially booked dates" (its means bookings for specific time-slot and available in Booking Calendar Business Medium or higher versions) is showing with small calendar icon at the bottom right side in each specific day cell, where exist bookings for specific time-slot. Because such bookings for time-slots can have pending or approved status, system also change background color for such dates.
Such workflow can be confused for some customers and sometimes need to show only calendar icon, but leave background color for such dates the same as for available dates. For having such view, you will be need to make some small fix in your calendar skin.

1) First of all, please check what calendar skin is active in your system. You can check it at the Booking > Settings General page in Calendar section. Please note, you calendar skin can be located at ../{Booking Calendar Folder}/css/skins/ or at ../{Booking Calendar Folder}/inc/skins/

2) Because you will be need to make fix, probably you need to create your own calendar skin in specific separate folder ( /wp-content/uploads/wpbc_skins/ ), its will save your customization during future updates of plugin. Please check how todo this here.

3) You will be need to add to the bottom of your calendar skin the CSS code for redefinition background color and text folor for such days.
For example for the "Premium Marine" calendar skin, this color can look like this:

.block_hints .block_time,
.datepick-inline .timespartly {
    background-color: #789;
}
.datepick-inline .timespartly.date_available a{
    color:#fff;
    font-weight: 600;
    text-shadow: 0 -1px 0 #333;
}

For other calendar skins, there will be different colors. In any way you can check what color you need to set there by checking section
/* A V A I L A B L E - BACKGROUND */

and
/* A V A I L A B L E  - Text A */

in your active calendar skin.

After saving your calendar, skin (if you was creating your own calendar skin), please open the Booking > Settings General page and select for "Calendar Skin" your new calendar skin file. Then save changes.

Please do not forget to clear browser cache before testing these changes.

This feature possible to configure, only in the Booking Calendar Business Large or higher versions. Because only in these versions possible to set capacity per calendar, and to have different availability per days depend from number of bookings. Please check more about this here: https://wpbookingcalendar.com/overview/#capacity

1) Firstly please check this instruction how possible to configure your calendar skin by modification CSS file: https://wpbookingcalendar.com/faq/change-skin-and-colors/

2) Then you need to activate this Calendar Skin: "Multidays" at the Booking Settings General page in Calendar section.

This calendar skin have special CSS classes for ability to define different colors in calendar depend from capacity of booking resource (calendar) and number of bookings per specific date(s) (in other words based on availability on specific date). Probably you will be need to copy this calendar skin to separate folder, as explained in above instruction for future customization.

3) Each calendar day cells (in this calendar skin) have specific CSS classes like:

.reserved_days_count1
.reserved_days_count2
.reserved_days_count3
...
.reserved_days_count8
.reserved_days_count9
.reserved_days_count10
...
The number at the end of this class is explain the availability per specific days.

So in case (if you have capacity per booking resource as 10) you can configure in your calendar skin these colors for the different color for the different availability:
You can just add this code to the bottom of that calendar skin.

/* Partially availability: 1-7 */
.datepick-inline .reserved_days_count1,
.datepick-inline .reserved_days_count2,
.datepick-inline .reserved_days_count3,
.datepick-inline .reserved_days_count4,
.datepick-inline .reserved_days_count5,
.datepick-inline .reserved_days_count6,
.datepick-inline .reserved_days_count7{
    background-color: #eb5;
     color: #eeeeee;
     text-shadow: 0px -1px 0px #888888;
}
/* Availability 8-10 */
.datepick-inline .reserved_days_count8,
.datepick-inline .reserved_days_count9,
.datepick-inline .reserved_days_count10 {
    background-color: #1A5;
     color: #eeeeee;
     text-shadow: 0px -1px 0px #888888;
}
/* Approved */
.block_hints .date_approved.block_check_in_out,
.block_hints .block_booked,
.datepick-inline .date_approved,
td.timespartly.check_in_time.check_out_time.check_in_time_date2approve.check_out_time_date_approved div.check-in-div,
td.timespartly.check_in_time.check_out_time.check_out_time_date2approve.check_in_time_date_approved div.check-out-div {
    background-color: #ee5933;
}
/* Pending */
.block_hints .date2approve.block_check_in_out,
.block_hints .block_pending,
.datepick-inline .date2approve,
td.timespartly.check_in_time.check_out_time.check_in_time_date_approved.check_out_time_date2approve div.check-in-div,
td.timespartly.check_in_time.check_out_time.check_out_time_date_approved.check_in_time_date2approve div.check-out-div {
  background-color: #ee5933;
}

P.S. Please do not forget to clear browser cache before testing these changes.

You can define showing calendar months in several rows in "option" parameter of Booking Calendar shortcode, during inserting this shortcode into your page or post. Please read more about this configuration here.

This customization is only for the Booking Calendar Free version. In the paid versions, you can easily configure booking form fields and their style at the advanced form configuration at the Booking > Settings > Fields page.

Customization.
1) Please open this file ../wp-content/plugins/{Booking Calendar Folder}/css/client.css
and add to the bottom of that file this code:

.booking_form .control-label {
  color: #FFF;
}

Of course instead of white color #FFF you can set some other.

2) In the same way possible to change the color of text inside of the text fields, text-area elements and selectboxes. You need to add to the bottom of this file ../wp-content/plugins/{Booking Calendar Folder}/css/client.css this code:

.booking_form_div select,
.booking_form_div textarea,
.booking_form_div input[type="text"] {
  color: #FFF;
}

Again instead of white color #FFF you can set some other color.

Important! Please note after update of plugin to the newer version update, you will be need to make this fix again, because all Booking Calendar files will be overwritten.

How to edit plugin file in WordPress 4.9 or newer

 

Translations

Paid versions of Booking Calendar support configuration in different languages of the booking form, email templates and some other text options in the settings . The active language of the booking form depends on the active locale of the site.

Booking Calendar supports WPML and Polylang plugins for dynamic changing of website locale (language).

General Usage:
[lang=LOCALE] - start a new translation section in a specific language, where LOCALE - locale of the translation.

Example of English and French translation of "Thank you" message:

Thank you for your booking.[lang=fr_FR]Je vous remercie de votre réservation.
-

Important!
Please note, English language is the default language in the Booking Calendar plugin. You need to start with English section (without [lang=...] shortcode at the top of form), and then continue with all other language sections divided by shortcode [lang=LOCALE],  where LOCALE its locale of specific language,  like de_DE,  or es_ES,  etc...

Of course you can have more than 2 language sections.

Example of configuration booking form in English and French languages at the Booking > Settings > Fields page:

[calendar]
First Name (required): [text* name]
Last Name (required): [text* secondname]
Email (required): [email* email]
Visitors: [select visitors "1" "2" "3" "4"]
Details: [textarea details]
[submit "Send"]
[lang=fr_FR]
[calendar]
Prénom (obligatoire): [text* name]
Deuxième prénom (requis) [text* secondname]
Email (obligatoire) [email* email]
Visiteurs : [select visitors "1" "2" "3" "4"]
Détails : [textarea details]
[submit "Envoyer"]

In the same way, you can configure the email templates on the Booking > Settings > Emails page and search form on the Booking > Settings > Search page, etc..

How to  update Local trnasaltions in Booking Calendar plugin

To update the local translation files in the Booking Calendar plugin, follow these steps:

  1. Navigate to WP Booking Calendar > Settings General page in the "Translation" section.
  2. For the option "Firstly load translation," select the "Local" value.
  3. Click on the "Save Changes" button.

After saving the changes, click on the "Update Translations" button. Wait for the system to download and update the translation files. Once the update is complete, test the new translation to ensure it is working correctly.

To select a specific language in WordPress admin panel:

- Open the WordPress > Settings > General page.
- In the "Site Language" option, select your preferred language.

OR

- If you use a translation plugin, select the specific language from the menu of your translation plugin.

In case you need to update the existing local translation of the plugin, please follow these steps:

  1. Download Necessary Tools: Before starting the translation of the WordPress plugin, ensure you have the Poedit application. You can download it for free from here. Additionally, download the original translation files from here. Extract the contents of the archive to access the PO and MO translation files. The PO file contains the source translation files, while the MO file contains the compiled translation files. Edit the specific PO file corresponding to your website's locale. For example, the German translation file may be named as booking-de_DE.po, and the Spanish translation file may be named as booking-es_ES.po. Find the full list of locales in WordPress on this page.
  2. Placeholder Variables: Be attentive to placeholders for variables such as %s, %d, %f, etc. Ensure that you maintain the placeholders in the same position as in the original translation line. The number of placeholders must be consistent with the original translations. For more detailed information about placeholders for variables in translations, check here.
  3. Using Poedit:
    • Start the Poedit program.
    • Click on "Browse Files" or select File > Open from the menu, or press Ctrl + O.
    • Find the specific PO file of Booking Calendar, such as booking-nl_NL.po.
    • Locate untranslated or incorrectly translated terms and update the translations.
    • Ensure that you do not set specific translation lines as "Need to work" or "Fuzzy." You can check this under the "Edit" menu > "Translation need to work" (Ctrl + U).
    • Save the file after translation.
  4. Send Updated Translation: Send your updated translation file (*.po) to info@wpbookingcalendar.com. We will update the translation on the server. Once updated, you can update this translation in the WP Booking Calendar > Settings General page in the "Translation" section, as described in this FAQ guide.

Follow these steps to create a new translation of the WordPress plugin:

  1. Download Necessary Tools: Before starting the translation of the WordPress plugin, ensure you have the Poedit application. You can download it for free from here. Additionally, download the original translation files from here.
  2. Using Poedit:

    • Start the Poedit program.
    • Select File -> New catalog from POT file from the menu and choose the POT file for translation, usually located inside the languages folder, which you downloaded at previous point.
    • Type a description for your translation.
    • Enter the name of the PO file. The name consists of two parts:
      • The filename of the plugin (in this case, "booking").
      • The Locale (for example, for Spanish translation: "es_ES"). So, the name would be "booking-es_ES.po". Find the full list of locales in WordPress on this page.
    • Save the file to the "languages" folder of the plugin.
  3. Translation Process:

    • Begin the translation.
    • Placeholder Variables: Be attentive to placeholders for variables such as %s, %d, %f, etc. Ensure that you maintain the placeholders in the same position as in the original translation line. The number of placeholders must be consistent with the original translations. For more detailed information about placeholders for variables in translations, check here.
    • Ensure that you do not set specific translation lines as "Need to work" or "Fuzzy." You can check this under the "Edit" menu > "Translation need to work" (Ctrl + U).
    • Save the file after translation.
  4. Submit Your Translation:

    • Send your updated translation file (*.po) to info@wpbookingcalendar.com. We will update the translation on the server. Once updated, you can update this translation in the WP Booking Calendar > Settings General page in the "Translation" section, as described in this FAQ guide.

On the Booking Listing page exist ability to change language (locale) of emails, that will send to visitor during approving or declining of the booking. But how to detect language/locale of webpage, from where visitor submit the booking.
Here is instruction how to do this.
Please open the Booking > Settings > Fields page and add to the booking form this shortcode and JavaScript code:

<div style="display:none;"> Active Language: [text active_language class:wpbc_lang_field]</div>
<script type="text/javascript">
 jQuery(document).ready(function(){
    jQuery('.wpbc_lang_field').val( wpbc_active_locale );
 });
</script>

Its will add to your booking form new field [active_language] and JavaScript for auto-inserting active locale into this field. Please note, this field is not visible for visitors, because of this CSS: style="display:none;"

Also you will be need to add to the "Content of booking fields data" form (its at the bottom of Booking > Settings > Fields page) this shortcode:

<strong>Active Language</strong>:<span class="fieldvalue">[active_language]</span>

For showing this field at the Booking Listing page.

There are 2 types of Booking Calendar translations.

1) One list of translations located at WordPress repository. Please note, these translations at your website should be located at: "../wp-content/languages/plugins/" folder.

2) Another list of translations located at the Booking Calendar website. You can download the original PO translations files from here. Please note, these translations at your website should be located at: "../wp-content/plugins/{Booking Calendar Folder}/languages/" folder.

By default Booking Calendar plugin try to use translations from "../wp-content/languages/plugins/",
if failed (not exist), then try to use translations from "../wp-content/plugins/{Booking Calendar Folder}/languages/" folder.
This behavior is possible to change at the Booking > Settings General page in the Translation section.

You can check instruction how to make or update local plugin translation files at this page.

Translations available in paid versions of Booking Calendar:

English - 100%
Dutch 100% [ 2314 / 2314 ], fuzzy 0, not translated 0
French (France) 97.31% [ 2243 / 2305 ], fuzzy 56, not translated 6
Hungarian 97.19% [ 2249 / 2314 ], fuzzy 46, not translated 19
German 96.59% [ 2235 / 2314 ], fuzzy 79, not translated 0
Spanish (Spain) 87.72% [ 2022 / 2305 ], fuzzy 119, not translated 164
Turkish 83.86% [ 1933 / 2305 ], fuzzy 237, not translated 135
Greek 83.38% [ 1922 / 2305 ], fuzzy 240, not translated 143
Danish 83.12% [ 1916 / 2305 ], fuzzy 254, not translated 135
Portuguese (Brazil) 83.02% [ 1921 / 2314 ], fuzzy 243, not translated 150
Italian 80.91% [ 1865 / 2305 ], fuzzy 152, not translated 288
Spanish (Mexico) 77.31% [ 1782 / 2305 ], fuzzy 333, not translated 190
Romanian 76.27% [ 1758 / 2305 ], fuzzy 342, not translated 205
Swedish 75.79% [ 1747 / 2305 ], fuzzy 357, not translated 201
Finnish 75.57% [ 1742 / 2305 ], fuzzy 360, not translated 203
Polish 75.1% [ 1731 / 2305 ], fuzzy 358, not translated 216
Norwegian (Bokmål) 74.62% [ 1720 / 2305 ], fuzzy 372, not translated 213
Arabic 73.67% [ 1698 / 2305 ], fuzzy 388, not translated 219
Russian 72.65% [ 1679 / 2311 ], fuzzy 630, not translated 2
Slovenian 72.62% [ 1674 / 2305 ], fuzzy 401, not translated 230
Chinese (Taiwan) 70.2% [ 1618 / 2305 ], fuzzy 455, not translated 232
Bulgarian 69.93% [ 1612 / 2305 ], fuzzy 432, not translated 261
Portuguese (Portugal) 68.29% [ 1574 / 2305 ], fuzzy 455, not translated 276
Chinese (China) 67.51% [ 1556 / 2305 ], fuzzy 442, not translated 307
Thai 65.68% [ 1514 / 2305 ], fuzzy 498, not translated 293
Hebrew 65.38% [ 1507 / 2305 ], fuzzy 485, not translated 313
Ukrainian 65.04% [ 1505 / 2314 ], fuzzy 489, not translated 320
Japanese 64.26% [ 1487 / 2314 ], fuzzy 18, not translated 809
Galician 63.99% [ 1475 / 2305 ], fuzzy 538, not translated 292
Slovak 59.35% [ 1368 / 2305 ], fuzzy 473, not translated 464
Catalan 58% [ 1337 / 2305 ], fuzzy 493, not translated 475
Croatian 57.53% [ 1326 / 2305 ], fuzzy 496, not translated 483
Czech 51.02% [ 1176 / 2305 ], fuzzy 556, not translated 573

 
 

Troubleshooting

  1. If something does not seem to be sending correctly, install the WP Mail Logging Plugin to check logs of email sending.
  2. Check SPAM / JUNK folder in your mail system.
  3. Check that you have activated and configured the email templates at the Booking > Settings > Emails page.
    • For each email template (switch tabs at toolbar) recheck that you have correct email addresses.
    • Option "Enable / Disable" at the specific email template must be checked.
    • Field "From" at the specific email template must to have the same website DNS as your website

      Sometimes mail servers block emails, if the address "From" different from the domain of website, from where this email was sending. Please open the Booking > Settings > Emails page and recheck that field "From" have the same email as your website domain. For example: info@your-server.com and not like this your_email@gmail.com, where your-server.com it's your website domain.

    • If you are using paid versions of Booking Calendar, please be sure to configure the email field at the Booking > Settings > Form page, like this [email* email]. Its default primary email field for booking form! Please do not use other names for this email field. For example: Email (required):[email* email]
    • Optional. Try to set for field "To" in the "New (admin)" email template the same email that you was used in field "From" at this email template page.
  4. This is most common reason of not receiving emails!

    In most situations you will need to install  and configure some SMTP plugin.
    We can recommend to install and configure the WP Mail SMTP plugin, but you can  search  and install  any other SMTP plugin: https://wordpress.org/plugins/search/smtp/.

    Why you need to have SMTP plugin?
    SMTP plugins have to fix your email deliverability by reconfiguring WordPress to use a proper SMTP provider when sending emails.This is a problem for a lot of WordPress sites because by default, WordPress uses the PHP mail function to send emails generated by WordPress.The issue is that most WordPress hosting companies don’t have their servers properly configured for sending PHP emails. 
    The combination of two causes your WordPress emails to not get delivered.

    It also  can  be a reason why  your emails are marked as spam.
    Please check more here.

    I need help with SMTP plugin configuration.
    Because such plugins was developed by other companies and persons, please contact support of specific SMTP plugin about help in correct configuration of specific SMTP plugin.

  5. Please try to test sending of emails by creation of new bookings at front-end side of your website (do not test it from sending test emails at Booking > Settings > Emails page).
  6. Check that your PHP mail function is working correctly. You can open your login page and try to retry the password, then check if you received email.
  7. If the issue still will exist , please try reconfigure Subject and Content of the email template. Make it simpler. May be because of some server restrictions, you are having blocking of sending these emails.
  8. Otherwise you can try to use some other SMTP plugins:

    WP Mail SMTP (plugin support: https://wordpress.org/support/plugin/wp-mail-smtp/ )
    Post SMTP mailer (plugin support: https://wordpress.org/support/plugin/post-smtp/ )
    SMTP Mail (plugin support: https://wordpress.org/support/plugin/smtp-mail/ )

  9. Finally, please recheck your error.log and mail.log in your server configuration, about any relative errors.
    If you having troubles with checking these files, please contact support of your hosting company about this.

If you use WP Optimize plugin, and you have issue of not showing calendar, but instead of that see the "Calendar loading...".
Probably in the Developer console you will see several lines such as this:

== WPBC VARS 10.1.2 [free] LOADED == wpo-minify-footer-4d836f9d.js:3429:3326
== WPBC VARS 10.1.2 [free] LOADED == wpo-minify-footer-4d836f9d.js:5426:3326
== WPBC VARS 10.1.2 [free] LOADED == wpo-minify-footer-4d836f9d.js:7948:3326
...

Here's how to resolve these issues:

  1. Update Your Booking Calendar to version 10.1.3 or newer
    Ensure you have updated your Booking Calendar to version 10.1.3 or newer. This update addresses cache plugin issues.

    Important! After updating, clear all minimized CSS and JavaScript files and cached pages or posts.

    If you have a paid version, you can request the latest update on this page.

  2. For Booking Calendar Versions 10.1.2 or Older

    1) Please open the WP Optimize > Minify > JavaScript menu and these rules to "Exclude JavaScript from processing":

    */plugins/booking*
    */jquery/jquery.min.js
    */jquery/jquery-migrate.min.js
    

    Exclude  JavaScript fields from WP Optimize

    2) If by some reason, you do not want to exclude those files, then please check these steps. But we reccomend todo steps from point #1.
    In this case you need to open the WP Optimize > Minify > JavaScript menu
    and deactivate this option: "Enable merging of JavaScript files".
    Save changes.
    Test it.

    Resolving Conflict  of WP Optimize with  WP Booking Calendar

If you use the Divi theme and have issue of not showing calendar, but instead of that see the "Calendar loading..." message then follow these steps to fix this conflict.

  1. Update Your Booking Calendar to version 10.1.3 or newer
    Ensure you have updated your Booking Calendar to version 10.1.3 or newer. This update addresses cache plugin issues.

    Important! After updating, clear all minimized CSS and JavaScript files and cached pages or posts.

    If you have a paid version, you can request the latest update on this page.

  2. For Booking Calendar Versions 10.1.2 or Older

    Please open the Divi > Theme Options > General > Performance page and disable this option "Defer jQuery And jQuery Migrate".
    Divi Theme Conflict

If you use WP Rocket plugin, and you have issue of not showing calendar, but instead of that see the "Calendar loading...".

Here's how to resolve these issues:

  1. Update Your Booking Calendar to version 10.1.3 or newer
    Ensure you have updated your Booking Calendar to version 10.1.3 or newer. This update addresses cache plugin issues.

    Important! After updating, clear all minimized CSS and JavaScript files and cached pages or posts.

    If you have a paid version, you can request the latest update on this page.

  2. If you activated this option "Delay JavaScript execution" at the WP Rocket > File Optimization page in JavaScript Files section, then you need to add for the option "Excluded JavaScript Files" this value:
    \/jquery(-migrate)?-?([0-9.]+)?(.min|.slim|.slim.min)?.js(\?(.*))?( |'|"|>)
    /booking(.*)/(.*)
    (.*)_wpbc(.*)
    

    WP Rocket and  WP Booking Calendar Exclusion
  3. If you activated this option "Combine JavaScript files (Enable Minify JavaScript files to select)" at the WP Rocket > File Optimization page in JavaScript Files section, then you need to add for the option "Excluded Inline JavaScript" this value:
    wpbc

    and add for the option "Excluded JavaScript Files" this value:
    /jquery(.*)
    plugins/booking(.*)
    

    WP Rocket and  WP Booking Calendar Exclusion

Issue
If you have the situation that calendar is not visible in your booking form but all other fields is visible.

And you are have JavaScript error, similar to this:

Uncaught TypeError: jQuery(...).wpbc_timeselector is not a function

or:
Error: jQuery("#calendar_booking" + bk_type).datepick is not a function

or:
TypeError: jQuery(...).datepick is not a function

Reason
Reason of this issue is loading of jQuery library 2 times in your website.

The loading process is following:
1) Firstly is loaded the standard jQuery (ver 3.6) from WordPress (and its fine):

<script type='text/javascript' src='../wp-includes/js/jquery/jquery.js?ver=3.6.0' id='jquery-core-js'></script>

2) Then load the scripts of the Booking Calendar, where is defined all functions, including the datepick funcion.
3) Then your theme (or some other plugin) load the jQuery again.
<script type="text/javascript" src="..../wp-content/themes/my_custom_theme/js/jquery.min.js"></script>

This last load of the jQuery is overwrite all previously defined variables and we have this error.

Solution.
Please open the header.php (or footer.php) or functions.php file of your theme and comment the loading of the jQuery, to prevent load it for the second time.
Otherwise please contact support of your theme (or plugin) relative loading of jQuery library  in correct  way,  relative to  WordPress best  practice and not load it directly in the header or footer files.

You can have this issue because of having some JavaScript error(s) at your website.
Probably some other plugin or actual theme generate JavaScript error. That's why the calendar do not show.

To recheck your page for JavaScript errors, open the browser console (usually to see JavaScript error(s) press Ctrl + Shift + J, check more here ).

If you will see the JavaScript error, you can see in description of the error, what plugin (or theme) generate this error. Otherwise you can check for some other known JavaScript errors in other other troubleshooting instructions.

You can also try to check about some conflict with some active plugin or actual theme.
Deactivate one by one all your active plugins at the WordPress > Plugins menu and test about the issue during each deactivation.
If its not help, please deactivate your active theme and active the default WordPress theme.

If you see only calendar at the page, so then probably you have inserted the shortcode for only "availability calendar"

[bookingcalendar type=1 nummonths=2]

instead of shortcode for booking form

[booking type=1 nummonths=2]

Please open the page with booking form for editing, then remove exist shortcode. After this switch from the "Visual" view mode to "Text" view mode your content editor. And then reinsert the Booking Calendar shortcode and test it.
You need to insert this shortcode:

[booking]

Please note, this shortcode [bookingcalendar type=1 nummonths=2] is only for showing availability calendar, without form, where you can not select the dates.

Please read more how easily insert booking form or availability calendar into a pages or how manually configure Booking Calendar shortcodes in content of your pages.

Probably, you have inserted the shortcode for only "availability calendar" [bookingcalendar type=1] instead of shortcode for booking form [booking type=1].

Please note, this shortcode [bookingcalendar type=1] is only for showing availability calendar without form, where you can not select the dates. Booking form shortcode [booking type=1] already contain calendar and there you can select dates and submit the booking.

How to fix it?

Please open that page for editing and then remove exist shortcode.
After this switch from the "Visual" view mode to "Text" view mode your content editor. And then reinsert the Booking Calendar shortcode. You need to insert shortcode like this:

[booking type=1]

Please read more how easily insert booking form or availability calendar into a pages or how manually configure shortcodes of Booking Calendar in content of your pages.

This issue is relative of showing the several booking calendars (booking forms) of the same booking resource at the same "visible" page. Its possible to show only one calendar (booking form) of the specific booking resource at one visible page. You will have no problems to show the calendars (booking forms) of the different booking resources at the same page.

At the Booking Calendar Free version is available only one default booking resource, so its mean that any calendars (booking forms) in this version is belong to the same booking resource. And thats why its not possible to show several booking calendars (booking forms) at the same visible page.

This info is relative to the several booking calendars (booking forms) inside of the content of the page or inside of the content of page and visible booking calendar widget (in this case you are need to deactivate the booking calendar widget, or add the exception of showing the widget at this page).

If you're encountering any of the following issues on your website:

  • Booked dates or times are not promptly appearing on the front-end calendar, or there's a significant delay in displaying them after creating new bookings. However, in the admin panel at Booking > Add booking, all bookings are visible as expected.
  • When you submit a booking or load the calendar, you encounter an error message: 'Error! Request did not pass a security check! Please refresh the page and try again.'

These problems could be caused by caching on your website.

Here's how to resolve these issues:

  1. Update Your Booking Calendar to version 10.1.3 or newer
    Ensure you have updated your Booking Calendar to version 10.1.3 or newer. This update addresses cache plugin issues.

    Important! After updating, clear all minimized CSS and JavaScript files and cached pages or posts.

    If you have a paid version, you can request the latest update on this page.

  2. For Booking Calendar Versions 10.1.2 or Older
    1. Check for caching plugins like "WP Super Cache," "WP Fastest Cache," or "W3 Total Cache." If you're using any of these, consider deactivating them or adding an exception for the page with the booking form to prevent caching.
    2. If the problem persists, it might be a conflict with another plugin or your current theme. Deactivate your active plugins one by one in the WordPress > Plugins menu and test after each deactivation. If the issue remains, deactivate all plugins and switch to the default WordPress theme for testing.
    3. If the problem still isn't resolved, contact your hosting support and ask them to check for server-side caching. Request that they add exceptions for the pages with booking forms to prevent caching or inquire about deactivating the caching system.

If you encounter the error "Request do not pass security check!" follow these steps to resolve it:
Here's how to resolve these issues:

  1. Update Your Booking Calendar to version 10.1.3 or newer
    Ensure you have updated your Booking Calendar to version 10.1.3 or newer. This update addresses cache plugin issues.

    Important! After updating, clear all minimized CSS and JavaScript files and cached pages or posts.

    If you have a paid version, you can request the latest update on this page.

  2. For Booking Calendar Versions 10.1.2 or Older
    This error usually occurs when the NONCE field in the booking form is outdated. The NONCE field is a hidden field with a unique value that prevents remote (CSRF/XSRF) attacks. It is a standard security practice for all WordPress forms.

    The primary cause of this issue is caching.

    Steps to Resolve in versions 10.1 or older and in some cases in new updates:

    1. Check for Cache Issues:

      • This error often stems from caching problems on your server, cache plugins, or caching tools/software.
      • Check for any cache plugins like "WP Super Cache", "W3 Total Cache", "WP Optimize", "WP Rocket", etc... If you use any, deactivate them or add an exception to the page with the booking form to prevent it from being cached.
    2. Deactivate Plugins:

      • If the issue persists, deactivate your active plugins one by one from the WordPress > Plugins menu and test the booking form after each deactivation.
      • If this does not resolve the issue, deactivate all plugins and activate the default WordPress theme. Then, retest the booking form.
    3. Check Server Caching:

      • If none of the above steps work, there may be caching at the server level.
      • Contact your hosting provider’s support team to check for any server-side caching tools or software.

By following these steps, you should be able to resolve the security check error and ensure your booking form works correctly.

If you encounter the message "Calendar is loading" instead of seeing the calendar on your page, and you notice one of the following JavaScript errors or warnings in your browser console:

Uncaught ReferenceError: visible_booking_id_on_page is not defined

or
Uncaught ReferenceError: _wpbc is not defined

or
jquery.min.js?ver=3.7.1:2 jQuery.Deferred exception: moveOptionalElementsToGarbage is not defined ReferenceError: moveOptionalElementsToGarbage is not defined
jquery.min.js?ver=3.7.1:2 jQuery.Deferred exception: _wpbc is not defined ReferenceError: _wpbc is not defined
jquery.min.js?ver=3.7.1:2 jQuery.Deferred exception: visible_booking_id_on_page is not defined ReferenceError: visible_booking_id_on_page is not defined
jquery.min.js?ver=3.7.1:2 Uncaught ReferenceError: moveOptionalElementsToGarbage is not defined
jquery.min.js?ver=3.7.1:2 Uncaught ReferenceError: _wpbc is not defined
jquery.min.js?ver=3.7.1:2 Uncaught ReferenceError: visible_booking_id_on_page is not defined

Please follow these steps to resolve the issue:

  1. Update Your Booking Calendar to version 10.1.3 or newer
    Ensure you have updated your Booking Calendar to version 10.1.3 or newer. This update addresses cache plugin issues.

    Important! After updating, clear all minimized CSS and JavaScript files and cached pages or posts.

    If you have a paid version, you can request the latest update on this page.

  2. For Booking Calendar Versions 10.1.2 or Older
    1. Open the WP Booking Calendar > Settings General page in the "Advanced" section and ensure that the option "Load JS and CSS files only on specific pages" is not activated. It must be disabled.
    2. Check for any cache plugins such as "Jetpack Boost", "WP Super Cache", "WP Fastest Cache", "W3 Total Cache", or other cache plugins. If you are using any of these plugins, please deactivate the cache plugins or add exceptions to the page(s) with a booking form to prevent caching of these pages.

      If you are using the Jetpack Boost plugin, please follow this troubleshooting instruction.
      If you are using another cache plugin, contact the support of your cache plugin for instructions on how to add exceptions to the pages with booking forms to avoid caching these pages and prevent concatenation of JavaScript files by the Booking Calendar.

    3. If the issue persists, it may be due to a conflict with another plugin or your current theme. Deactivate each of your active plugins one by one at the WordPress > Plugins menu and test the calendar after each deactivation. If deactivating plugins does not resolve the issue, deactivate all plugins and activate the default WordPress theme. Then, test the calendar again to identify the cause of the issue.

Here's how to resolve these issues:

  1. Update Your Booking Calendar to version 10.1.3 or newer
    Ensure you have updated your Booking Calendar to version 10.1.3 or newer. This update addresses cache plugin issues.

    Important! After updating, clear all minimized CSS and JavaScript files and cached pages or posts.

    If you have a paid version, you can request the latest update on this page.

  2. For Booking Calendar Versions 10.1.2 or Older

    This issue arises when the Concatenate JS feature in Jetpack Boost is enabled. To resolve this, you'll need to exclude specific JavaScript files from being concatenated in the Jetpack Boost settings.

    Here are the JavaScript handles you need to exclude:

    wpbc-global-vars, wpbc-popper, wpbc-tipcy, wpbc-datepick, wpbc_all, wpbc-main-client, wpbc_capacity, wpbc-times, wpbc-time-selector, wpbc-timeline-flex

    To do this, simply copy this list and paste it into the "Exclude JS Strings" field within the Concatenate JS module. You can access this module by navigating to Jetpack -> Boost in your WordPress dashboard.

    By excluding these scripts from concatenation, you can ensure that the Booking Calendar functions correctly on your site while still benefiting from other features of Jetpack Boost.

    For additional info please contact the support of your cache plugin for instructions on how to add exceptions to the pages with booking forms to avoid caching these pages and prevent concatenation of JavaScript files by the Booking Calendar.
    Also check more here.

1) Firstly please open the Booking > Settings > Emails page and deactivate all email templates.
Then try to make new booking. If you will be able to make new booking, so then its means following:

Some severs can block sending emails and generate "500 Internal Error", when you send it to visitor from domain different from your website. You need to check, if this condition set in your server configuration.

  • Please try to set in the field "From" instead of visitor email shortcode, your email (its at the Booking > Settings > Emails page). The same email that you set in the field "To".
  • Sometimes mail servers block emails, if the address "From" different from the domain of website, from where this email was sending. Its not really depend from the Booking Calendar. So please open the Booking > Settings > Emails page and recheck that field "From", its have to the same as your website domain. For example: info@your-server.com and not like this your_email@gmail.com

Otherwise, please contact support of your hosting company about recheck conditions, when your server block sending of emails.

2) Such error can be because in your server configuration (probably at the WordPress > Settings > General page for the options "WordPress Address (URL)" or "Site Address (URL)") configured different Domain that you try to submit the booking

For example, in Ajax URL its can be set as "https://www.yourserver.com/wp-admin/admin-ajax.php"
and you try to submit the booking from https://www.yourserver.com/education/bookings/

Because booking is sending from HTTP to HTTPS, we are having such type of error.

Please recheck your server configuration at the Settings General page as in above description, or in some other place, where you are set using HTTPS instead of HTTP protocol.

You need to use the same protocol in both ways. If you will have difficulty with searching where exactly you are having this issue, please contact your server administrator who make that configuration.

The same issue can be if you configured sever address with "www." But trying to submit booking from URL without "www." prefix in URL. Or backward.

3) Also please try to deactivate one by one all your active plugins at the WordPress > Plugins menu. Then retest it again.
If its not help, please deactivate your active theme and active the default WordPress theme. And then retest it again. May be there exist some conflict with some active plugin or actual theme and just need to find the reason of that issue.

4) If the previous solutions will not help, please recheck your error.log file from your server configuration (please contact your server administrator or support of the hosting company, if you will have troubles with searching of this file) to be sure in a reason of that issue.

If during export bookings to .ics feed at the WP Booking Calendar > Settings > Sync > "Export - .ics" page you have 404 error, then check these steps:

  1. Go to: WordPress Settings > Permalink page. Please be sure that you set for "Permalink structure" option "Post name" instead of "Plain" value.
  2. Recheck that you have correctly configured .ics feeds URLs for exporting. Open WP Booking Calendar > Settings > Sync > "Export - .ics" page and be sure that you have specified URL for exporting .ics feeds with one level of depth. For example: https://server.com/ics/my_resource/ or if its not work try to set it as this URL: https://server.com/ics/my_resource/wpbm.ics
  3. Please double-check the root folder of your website for any .htaccess files. Make sure these files don't have security restrictions affecting link generation. It's a good idea to reach out to your hosting support for assistance, as they are more knowledgeable about potential security restrictions.
  4. Take a look at any other security plugins in the WordPress > Plugins menu that might be blocking the creation of the URL structure for the .ics feed. Try deactivating each active plugin one by one and test after each deactivation. If the issue persists, deactivate all plugins and switch to the default WordPress theme. Test again to see if this resolves the problem.
  5. Review your server's error.log for any related errors in your server configuration. If you can't locate the error.log file, contact your hosting company's support for assistance in finding this file.
  6. If the previous steps don't resolve the issue, it suggests there might be server configuration restrictions. In this case, only your hosting support or server administrator would know how to reconfigure your server to avoid blocking the generation of the .ics feed. Please inform your hosting support that the "wpbm.ics" file is not a physical file on your server; the script generates it on-the-fly when someone attempts to access the URL defined in WP Booking Calendar > Settings > Sync > "Export - .ics" page.

    Please note, Booking Calendar generate virtual ics feed form the php script. So it’s not the real file at that folder. It’s generate such feed dynamically, when someone access such url.

    System have to work in the same way as WordPress working with pages at your website. As you may know, you can have link to some page like this: https://server.com/category/some-page/ . But it does not mean that you have real file like category/some-page/index.html at your server. Your system access general index.php file at root of your website and then load specific page based on permalink structure. The same with .ics feeds in Booking Calendar, when server try to access url: https://server.com/ics/wpbm.ics
    this .ics feed generate dynamically from the php file.

If you do not see imported bookings, from external .ics feed, then please recheck these points:

1) Please be sure that in your ".ics" feed exist some events, relative to current or future days.
You can download this .ics feed and open in notepad and check your events there.

2) If events was imported before, then such events will not be imported again.
Booking Calendar can import the events from external sources only once (if have not been activated options "Force import" or "Trash all imported bookings before new import" at the Booking > Settings > Sync > "General" page in Advanced section).

May be you are having these event(s) in the Trash or such event(s) was imported into not exist booking resource.

In this case, you need to delete such previously imported bookings (that was imported into non exist booking resource), and then try to import these bookings once again by using correct shortcode.

3) How to check if events, was imported before into Booking Calendar?
3.1) Please update the Booking Manager plugin to the latest update.
3.2) This point work only in Booking Manager 2.0.11 or newer versions.
Open the "oPlugins Panel" > Settings > "Listing Template", and define in listing template these shortcodes:

<p>UID: [UID] ( Booking ID: <a href="[BOOKING_LINK]" target="_blank">[BOOKING_ID]</a>  )</p>

3.3) Open "oPlugins Panel" > "Manage .ics" page, then paste URL of your .ics feed (that you need to check), and click on "Show Events (.ics)" button.
You will see all the events from this .ics feed. Also in each event you will see ID of booking, if its was imported, like this:

Booking ID: 101
if the booking was not imported you will see this:
Booking ID:

You can click on booking ID link to open the Booking Listing page with this specific booking and see, details of this booking. Check the booking resource, where this booking saved.

4) If the booking was not imported, then please recheck parameters of import shortcode.
Please check carefully parameters, like:
import_conditions - if you defined import_conditions='if_dates_free', then event will be imported only, if the source booking resource (calendar), have all dates for this event as available
from - date from which start to import events. Usual value: from='today'
until - date of stop import events. Usual value: until='any'

5) Check this instruction how to start import of new events/bookings.

1) Probably you are using the old version of Booking Calendar (9.7.7 or older) and updated to the new WordPress version (6.4 or newer). Because of that you have this issue, where exist conflicts of old version of plugin with new WordPress versions.
Please check more here

2) In order to resolve this issue, please update your version of Booking Calendar to the latest update 9.8.3 or newer update.
You can request the new update of Booking Calendar on this page.

This warning relative to the Booking Calendar MultiUser version.
You can see this warning, because your WordPress user was not activated as regular user in Booking Calendar (have not own booking admin panel) at Booking > Settings > Users page, and this user is not the super booking admin user.

By default the first user in your website, its Super booking admin user.

1) Please login to admin panel with this "first user".
It can be that currently you have logged in with administrator user, that have ID as 5 (or any other). But your WordPress website, also have other administrator users with ID, like 1 or 2. If true, so then you need to login with User with login ID = 1

After this you will see access to the booking admin panel. Then you can activate the booking admin panel for other WordPress users at the Booking > Settings > Users page.

2) In case, if your current user do not have access to the Booking > Settings > Users page, and you do not know login details of your first user, so you can make small customization for activating your actual user as super booking admin user.

You can make this fix.

Firstly please recheck ID of your user. You can open the WordPress > Users page, and then near specific user you can click on edit button, then in browser URL you will see parameter user_id
which will show Id of your user, let say that this ID of your current user is 3

So then, please make this fix.

Please open this file ../{Booking Calendar Folder}/inc/_mu/multiuser.php

( you can check how to edit files in WordPress menu in this article https://wpbookingcalendar.com/faq/how-edit-file-in-wp-menu/ )

then find this code:

$this->super_admin_id = array( $admin_id );                             // ID of Super Administrators

and replace it to this code:
$this->super_admin_id = array( $admin_id , 3 );           // ID of Super Administrators

Firstly you need to check access to the wpdev-booking.php file. If booking plugin is installed to the https://www.myserver.com/wp-content/booking/wpdev-booking.php so copy that link to your browser and check access. Its have to show this error: Fatal error: Call to undefined function get_option(). If you see something like:Error 500 Internal Server Error, so then you need to set access to the wpdev-booking.php file. In most case you just need to set atribute to that file as 755 using your FTP client, sometimes is needed editing .htaccess file. So contact your administrator or check .htaccess file by yourself.

Sometimes wp-content and/or wp-content/plugins and/or wp-content/plugins/booking directories and/or file wp-content/plugins/booking/wpdev-booking.php had permissions set to 777. So its also can make this issue. Please change permissions on those directories and file to 755 and it have to work.

This issue is relative to the configuration of the DNS in your website.
Please try to reconfigure it or contact your administrator for fixing this issue.

Description of reason of the issue.
1) This error "0", can be because in your server configuration somewhere (probably in the WordPress > Settings > General page for the options "WordPress Address (URL)" or "Site Address (URL)") configured different Domain that you try to submit the booking.

For example, in Ajax URL its can be set as "https://www.yourserver.com/wp-admin/admin-ajax.php"
and you try to submit the booking from https://www.yourserver.com/bookings/ Or backward.

You can check it is by viewing the HTML code of your loaded page, in the section:

<!-- Booking Calendar Scripts -->

Because booking is sending from HTTP to HTTPS, we are having such type of error.

Please recheck your server configuration at the WordPress > Settings > General page as in above description, or in some other place, where you are set using HTTPS instead of HTTP protocol.

You need to use the same protocol in both ways. If you will have difficulty with searching where exactly you are having this issue, please contact your server administrator who make that configuration.

The same issue can be if you configured sever address with "www." But trying to submit booking from URL without "www." prefix in URL. Or backward.

2) Also please try to deactivate one by one all your active plugins at the WordPress > Plugins menu. Then retest it again.
If its not help, please deactivate your active theme and active the default WordPress theme. And then retest it again. May be there exist some conflict with some active plugin or actual theme and just need to find the reason of that issue.

If the previous solutions will not help, please recheck your error.log file from your server configuration (please contact your server administrator or support of the hosting company, if you will have troubles with searching of this file) to be sure in a reason of that issue.

Please note, this workflow based on new update 7.0
If you using older version, please update it. For paid versions, you can request the new update of Booking Calendar on this page.

1) Reason of issue.

Such issue possible, if you previously have deleted some booking resources at Booking > Resources page.
And such deleted booking resources was having some bookings. So now you are having in Database such lost bookings.

2) How to fix it.

  • Open the Booking Listing page and click on "Reset search filter and user options to default values" button (1)
  • Click on "Remove all booking resources" button in toolbar (2)
  • You will see all lost bookings (3)
  • Click on "Change resource" button and assign to this booking some exist booking resource.

Legacy. How to fix in old versions of Booking Calendar.

Please try to open this link:

https://server.com/wp-admin/admin.php?page=wpbc&wh_booking_datenext=1&wh_booking_dateprior=1&wh_booking_date=3&wh_trash=any&wh_modification_dateprior=1&wh_modification_date=3&wh_pay_status=all&view_mode=vm_listing&wh_booking_type

Since update 7.2.1 please use this link

https://server.com/wp-admin/admin.php?page=wpbc&wh_booking_datenext=1&wh_booking_dateprior=1&wh_booking_date=3&wh_trash=any&wh_modification_dateprior=1&wh_modification_date=3&wh_pay_status=all&view_mode=vm_listing&wh_booking_type=-999

Just replace "server.com" to your website DNS in this URL.

The trick in this link having empty "&wh_booking_type" parameter. Its will show all pending bookings, even if such bookings belonging to the booking resources that have been deleted.

Now, when you will see all such bookings, you will see near some bookings label that "Resource does not exist"
So you can assign to such booking(s) new exist booking resource, by clicking on specific "assign booking resource" button near this booking,
or if you do not need such booking, then please delete completely (even from trash) such booking.

1) This issue can happens in Booking Calendar Business Small or higher versions, if this you have activated using "Check in/out times" (check more about this feature here) at the Booking > Settings General page and incorrectly configured "Check in/out times fields" (usually these fields are empty during this issue.
How to fix.

- You need to be sure that the check in time is older than check out time. For example: Check in: "14:00" and check out: "12:00"
- Or you can simply deactivate "Check in/out times" option, if you do not need to use change-over days.

2) Also this issue possible if you have incorrectly configured time(s) fields at the Booking > Settings > Form page.
You can try to remove any times fields from the Booking > Settings > Form page, or try to reset booking form to one default "Form templates" (you can select one predefined form template at the toolbar, and then click on "Both" button, its will reset your form. After this you can click on "Save changes" button to save these changes.
Otherwise, please use shortcode generator at the right side of the Booking > Settings > Fields page for the fast and correct creation of booking form fields.

3) Other workaround. We do not recommend todo this point, because dropping indexes (as in bellow instruction), will significant impact to speed of loading.
So for fixing this issue, please open the phpMyAdmin or similar tool for the working with DB
and execute this SQL command:

ALTER TABLE bookingdates DROP INDEX booking_id_dates

or this (depend from the prefix at your DB tables):
ALTER TABLE wp_bookingdates DROP INDEX booking_id_dates

This error is appear because of wrong installation of plugin.
1) Please, open the General Booking Settings page and set this option "Delete booking data during uninstall", as unchecked, at the right side of page, otherwise your exist booking data will be delete during deactivation of plugin.
2) Then open the Plugins menu and press Deactivate link of Booking Calendar. Wait, for the message about: "plugin is deactivated successfully".
3) Then press activate link. Wait, until message will show up that plugin is activated successfully.
Now, you can test it again.

1) Go to the general booking settings page and check ON use CAPTCHA check box and save a page.
2) If you use Standard (free) version skip this step, otherwise go to the form fields customization page add captcha shortcode to the customization form:

<p>[captcha]</p>

3) Check write permission at the folder YOUR_WORDPRES_SERVER/wp-content/plugins/booking/js/captcha/tmp/. This folder have to be write-able.

4) Check that your server was configured for using 2.0 GD library.
Reason.
The cause is that you do not have the version 2.0 GD library loaded in PHP which defines this function, which is used for the captcha in this plugin.

Checking
Use this PHP code to view what extensions you have loaded on your hosting account.

print_r(get_loaded_extensions());
print_r(var_dump(gd_info()));

Just create a text file with the these lines above in your public_html folder (or wherever your web root is), name it with a .php extension like "test.php" and then run it by using your web browser like "https://www.yourdomain.com/test.php "

This does not write correct HTML but will show you the info you need. (Just do a View/Source on your browser if you want a nicer looking format.) Look for text like "[some number] => gd". If you don't see this, you do NOT have the GD library loaded.
Next you want to look for the version number. Something like: ["GD Version"]=> string(27) "bundled (2.0.28 compatible)"
This needs to say version 2.0 or later.

If you do not see GD version 2.0, you must get your hosting provider to install or upgrade your system.

LEARN MORE:
Learn more about the GD library:
https://www.php.net/manual/en/ref.image.php

Learn more about this function:
https://www.php.net/manual/en/function.imagecreatetruecolor.php

5) If you are using Cache plugin (like "WP Super Cache" ), please deactivate it or add the exception to the page with booking form to do not cache this page.

4) Finally, please try to deactivate one by one all your active plugins at the WordPress > Plugins menu. Then retest it again.
If its not help, please deactivate your active theme and active the default WordPress theme. And then retest it again. May be there exist some conflict with some active plugin or actual theme and just need to find the reason of that issue.

If you are still will have this issue, please recheck the error.log in your server configurations to be sure in a reason of that issue.

Kind Regards.

Here is 2 solutions.

A) Upload using FTP manager. It's can be any ftp manager for uploading files to your server. If you do not have FTP access, so then please contact support of your hosting. Also they can recommend to you FTP manager that can be good for your server to upload these files.

1) Please download the archive of the Booking Calendar to your desktop.
2) Extract it from archive. You have to get the "booking" folder.
3) Then upload this folder, using the FTP manager (like FAR or some other) to your server, to the folder

../wp-content/plugins/

4) Now open admin panel of your WordPress site. At Plugins menu, you have to see "Booking Calendar" plugin.
(If you was having previous free version, there, please deactivate it).
Click at the "Activate" link of your new paid version.

5) Please wait until message will show that the plugin is activated successfully. Now you can use the Booking Calendar plugin.

B) Or you can ask your serve administrator or support of hosting company to extend max file-size limit at your server.

Thank you.

This issue can be because of limitation in WAMP configuration.

WAMP can not load large translation php file ( wpbc_all_translations.php ) .

So please open this folder:

..\wp-content\plugins\booking\core\lib

and rename this file:

wpbc_all_translations.php

to this:

wpbc_all_translations2.php

By default Booking Calendar and Booking Manager plugins does not remove or update the bookings, if bookings was changed/canceled at other sources (Booking/Airbnb/Google Calendar).

In the update 8.6 of Booking Calendar or newer and latest update of Booking Manager plugins you can activate this option
"Trash all imported bookings before new import" at the Booking > Settings > Sync page.

Move all previously imported bookings to trash before new import bookings. Its can resolve issue of updating deleted and edited events in external sources. Its work only, if you are using one source (.ics feed) for importing into specific booking resource!

If you notice Booking > Settings General page is not saving, Suhosin (a security module in PHP) may be preventing the POST data from being saved. This issue can also be caused by servers with version PHP 5.3.9+ and servers running mod_security.

If enabled, Suhosin may need to be configured to increase its data submission limits. Changing Suhsoin settings differ from host to host so it’s usually better to consult with the provider than attempt it yourself, however some hosts allow you to change settings via php.ini, suhosin.ini, or .htaccess.
Commonly, the following vars will need changing:

General PHP section

memory_limit = 256M
max_execution_time = 120
post_max_size = 8M
upload_max_filesize = 8M
max_input_vars = 20480
post_max_size = 64M

Suhosin section

suhosin.post.max_array_index_length = 1024
suhosin.post.max_totalname_length = 65535
suhosin.post.max_vars = 2048
suhosin.post.max_value_length = 1000000
suhosin.post.max_name_length = 256
suhosin.post.max_array_depth = 1000
suhosin.request.max_array_index_length = 1024
suhosin.request.max_totalname_length = 65535
suhosin.request.max_vars = 2048
suhosin.request.max_value_length = 1000000
suhosin.request.max_varname_length = 256
suhosin.request.max_array_depth = 1000

After saving you will need to restart the server for the changes to take effect. See https://www.hardened-php.net/suhosin/configuration.html for more information on Suhosin settings.

In shared hosting environments it may not be possible to edit php.ini, in which case you may be able to set the suhosin settings via .htaccess
It is still recommended however to consult your hosting providers documentation, or raise a ticket with them for assistance.

1) Please be sure that you have correctly configured "Content of booking fields data" form at the Booking > Settings > Form page.
For example, if you are having in the booking form configuration like this:

Last Name (required): [text* secondname] 

so then at the "Content of booking fields data" form you need to have configuration like this:
Last Name: [secondname]

Please use shortcode generator at the right side of the Booking > Settings > Form page for the fast and correct creation of booking form fields.

2) Also in some old premium versions of Booking Calendar together with latest update of WordPress possible issue that all entering fields in booking form are blank.
In this case you need to update your version of booking calendar to latest update or rollback your WordPress version.

You can request the new update of Booking Calendar on this page.

After installing update, please make fully NEW bookings to test that booking details is saving correctly.
Kind Regards.

If you are using the booking calendar free version
Try to open the login dialog and retry the password. Then recheck what the email address is used in this email. If you will see the "Wordpress title", so then its somewhere in the settings of WordPress.

Try to open the wp_options table in your DB (using the phpMyAdmin tool or some other DB tool),

Find the option with name "admin_email" and recheck that the email for this field do not have the "WordPress" title.

If you are using the paid version of Booking Calendar, please check this:
Booking Calendar use the standard "WordPress" wp_mail function for sending of the emails, which possibly can be overridden by the other plugins or theme.

Firstly please open the Booking > Settings > Emails page and recheck that you correctly configured the emails in fields "From". that there was no any "WordPress titles". Test it.

Then please try to deactivate one by obe all other active plugins and test if its help or not, may be some other active plugin is override the wp_mail function and thats why you are having that "WordPress" title in the email template. try the same with theme.

For any versions:
Also please open your contact book at youe email account and try to delete that email contact, may be this contact already have the "WordPress" title saved in your contact book at your email account, and thats why you have that "WordPress" title in the emails.

If you try to edit additional cost at the Booking > Resources > Advanced cost page and during saving, all your changes removed back to default values "100%", then please check these steps:

1) Please be sure, if you are using custom booking forms, that the length of custom booking form name not longer than 30 symbols. If its longer, then you need to recreate your custom booking forms.
For doing that, please open the Booking > Settings > Fields page. Select your custom booking form.
Then copy content of "booking form" and "content of booking fields data" form to some TXT file.
Click on "Delete" button in the toolbar to delete this custom form.
Then create new custom form, where name must be not longer than 30 symbols. Paste in the forms your saved data and save changes.
If you was inserting into the posts or pages, booking shortcodes with previous custom form, you need to reinsert them.
Now you can test it.

2) Please be sure that you do not use in the names and values of checkboxes and selectboxes in your booking form some non standard symbols, like umlauts, or % or ' ,etc...
That's why please open the Booking > Settings > Fields page and for the each booking form (if you are having several custom booking forms), please recheck (re-create) shortcodes by using only standard symbols in the names and values.

Plugins

WP Rocket - To exclude the Booking Calendar scripts from Delay JavaScript Execution check info here.
Really Simple SSL - can generate issue of incorrect response from the Stripe payment system back to customer website, when using Live payment mode.

Modern Events Calendar - can generate Server error 500, during submitting booking in Booking Calendar.

WP iCal Availability Free - can generate issue with selected dates of setting to them some incorrect time-zone.

Gravity Forms [Tested in version 2.2.5, but this issue can exist in other versions of Gravity Forms]

Fixed conflict since update of Booking Calendar 8.1.1

Conflict paid versions of Booking Calendar with "Gravity Forms" plugin, if in "Gravity Forms" plugin was used "masked input" field(s).
Because of this conflict is generating JavaScript error and as reason of this, Gravity form is not showing and also calendar in Booking Calendar is not showing, as well.
Since update 8.1.1, Booking Calendar will not load masked input script for times fields, if was loaded masked input script in Gravity form. Its means that masked input for start/end times text fields, will be used as standard text inputs.

If you are using older versions of Booking Calendar, you can make this fix to resolve this issue.
Please open this file ../{Booking Calendar Folder}/inc/_ps/personal.php
( you can check how to edit files in WordPress menu in this article )
then find this code:

wp_enqueue_script( 'wpbc-meio-mask', WPBC_PLUGIN_URL . '/inc/js/jquery.meio.mask.min'.((WP_BK_MIN)?'.min':'').'.js', array( 'wpbc-global-vars' ), '1.0');

and replace it to this code (comment that line):
// wp_enqueue_script( 'wpbc-meio-mask', WPBC_PLUGIN_URL . '/inc/js/jquery.meio.mask.min'.((WP_BK_MIN)?'.min':'').'.js', array( 'wpbc-global-vars' ), '1.0');

advanced-custom-fields [Version 4.1.4]

This plugin can be a reason of not possibility to insert the booking shortcode into the post or page by cliking on "Ok" button in the popup configuration dialog. Please read more how to insert and configure the booking shortcode into the post or page here

So please deactivate this plugin, if you want to insert the booking shortcode into the post or page using the popup configuration dialog or you can insert the booking shortcode manually. Please read how manually to configure Booking Calendar shortcodes here

html5-jquery-audio-player [Version 2.1]

Please check about the reason of issue here
Fix:
Open file: ../html5-jquery-audio-player/index.php
Find this code:
    wp_enqueue_script('jquery');
    wp_deregister_script( 'hmp-jquery' );
    wp_register_script( 'hmp-jquery', "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js");

and replace it to this code:
//    wp_enqueue_script('jquery');
//    wp_deregister_script( 'hmp-jquery' );
//    wp_register_script( 'hmp-jquery', "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js");

Comprehensive Google Map Plugin [Version 7.0.31]

Issue is exist, when mouse over specific buttons in the booking admin panel.
This issue is fixed in the Booking Calendar since update 4.2.
For the older versions please check this fix.
Fix:
Open file: ../booking/lib/wpdev-booking-class.php
1) Find this code:
        add_action( 'init', array(&$this,'add_custom_buttons') );
        add_action( 'admin_head', array(&$this,'insert_wpdev_button'));

and replace it to this code:
        add_action( 'init', array(&$this,'add_custom_buttons') );
        add_action( 'admin_head', array(&$this,'insert_wpdev_button'));
        // Remove the scripts, which generated conflicts
        add_action('admin_init', array(&$this, 'wpdevbk_remove_conflict_scripts'), 999);

2) Then find this code:

    // add hook for printing scripts only at this plugin page
    function on_add_admin_js_files() {

and replace it to this code:
    // Deregister scripts, which  is generate conflicts - only at the Booking Admin  menu pages
    function wpdevbk_remove_conflict_scripts(){
        if (strpos($_SERVER['REQUEST_URI'], 'wpdev-booking.phpwpdev-booking') !== false) {
            wp_dequeue_script( 'cgmp-jquery-tools-tooltip' );
        }
    }
    // add hook for printing scripts only at this plugin page
    function on_add_admin_js_files() {

Themes

 

Other questions relative to Booking Calendar

No, you do not need to make update from WordPress directory, because then you will use Booking Calendar Free version.
We will send to you update(s) of your Booking Calendar version (if these update(s) are ready) by email directly, after you are request update at this page.

You can check according new updates at this page.

1. Where all bookings details are saved?

Please note, Booking Calendar plugin saving all booking details at the your WordPress database at your server(s). Its does not transfer your booking details to our servers and does not store such info about booking details at our server(s).
Here is list of all database tables of Booking Calendar that is storing info about the booking details:

    wp_booking
    wp_bookingdates
    wp_bookingtypes    (available in paid versions)
    wp_booking_coupons (available in  Booking Calendar Business Large or higher version)
    wp_booking_seasons (available in  Booking Calendar Business Medium or higher versions )
    wp_booking_types_meta (available in  Booking Calendar Business Medium or higher versions )

Some info is saving into the wp_options table, but such records relative only to settings, and not the booking details.

2. Additional steps

Its means that your organization need to check and audit your website and booking details, what you store about bookings and apply additional steps to be compliant with GDPR data laws or some other data protection or saving laws. Its your obligatory to be complaint with any law that apply to you depend from your country or saving data.

To be compliant with GDPR data laws you need to check info about this law, because its about what data you are saving during booking process, how your visitor can access this data and how to erase this data, etc...
Check useful link here: http://www.wired.co.uk/article/what-is-gdpr-uk-eu-legislation-compliance-summary-fines-2018
And check this 12 steps prepare guide for General
Data Protection Regulation https://ico.org.uk/media/for-organisations/documents/1624219/preparing-for-the-gdpr-12-steps.pdf
Probably you will be need to check some additional relative info.

The primary details, of what exactly fields about persons you are saving you can check at the Booking > Settings > Form page. Basically its your booking form fields.

3. Adding required checkbox to the booking form, to accept your terms

You can add the "required checkbox" to your booking form at the Booking > Settings > Form page, to accept your terms and conditions and your privacy policy. Its supporting in all versions of Booking Calendar (including Booking Calendar Free version).
Watch this video guide about editing booking form fields in the paid versions of Booking Calendar.

4. List all past bookings and cancel specific bookings (available in paid versions)

In the paid versions of Booking Calendar you can use the ability to list all past bookings of user. So visitor who made the booking, can view all own past bookings (in timeline view, similar to this this example, but relative only to specific visitor).

Also visitor can cancel (move them to trash - its means that you still will require to make complete deleting of them (bookings from trash) at the Booking Listing page, after this request) own pending bookings. Please watch more about this in this video guide.

Explore Historical Resources of Booking Calendar on legacy FAQ page.