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.

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).
Additionally, beside this purchase for getting latest update you can activate the optional subscription with discounted cost.


Optional subscription of getting updates .
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. 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.

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

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.

1) Open the WordPress Plugins menu page at your admin panel of your site. You have to see at the bottom of the Booking Calendar the line about he new version is available.
2) Click on update link and wait until the plugin is downloaded, installed and reactivated.
3) You are need to wait until the message will show that the plugins is reactivated successfully. It's important.
4) If you are by some reason will get the some error messages, please make the reactivation process:
- open firstly the General Booking Settings menu page, and at the right side of the page recheck that this option "Delete booking data during uninstall" is turned Off (unchecked), otherwise all your booking data during deactivation will be deleted;
- open the WordPress Plugins menu page and click on "Deactivate" link of Booking Calendar. Wait for the message "Plugin is deactivated successfully". It's important.
- open the WordPress Plugins menu page and click on "Activate" link of Booking Calendar. Wait for the message "Plugin is Activated successfully". It's important.
Please clear the browser cache, because update can have a new updated CSS or JS files.
Now you can use your updated version.

1) If you are use the paid version of Booking Calendar, do not make update from the WordPress directory, otherwise you will get the free version.

2) You can check if the new version is available and what changes or new features in the new version at this page

3) You can request the free updates, of your purchased version (if the updates are ready) during 6 months, after purchase of your version. After this period, if you want to prolong the getting updates for the next 6 months, it's will cost the 50% from the original cost of your version of Booking Calendar. You can request the new update of Booking Calendar on this page.

4) Update process.
After you have received the archive with updated version of plugin, follow these steps:
Tip We recommend to make backup of your DataBase and Booking Calendar folder, before making backup, in this case, you will be able to rollback to previous versions and data in any time.
Tip Please note, during update process all plugin files are replacing to new. Its means that if you have edited any source files of plugin (in plugin folder), then you will be need to make this customization again after plugin update

  • Open General Booking Settings menu page of Booking Calendar admin panel, and at the right side of the page recheck that this option "Delete booking data during uninstall" is turned Off (unchecked), otherwise all your booking data and settings options during deactivation will be deleted;
  • Open the WordPress Plugins menu page and click on "Deactivate" link of Booking Calendar. Wait for the message "Plugin is deactivated successfully".
  • Click on "Delete" link under Booking calendar and wait until the plugin is deleted.
  • Open WordPress Plugins menu page, then select the "Add New" plugin sub menu and then click on "Upload Plugin" button at top of page. Click on browse button in upload form and select the booking zip archive, which you have received. Click on upload button and wait until the plugin is 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.
  • Open WordPress Plugins menu page and click on "Activate" link under new Booking Calendar plugin version.
    Wait for the message "Plugin is activated successfully".

Please clear the browser cache, before using new update.

1) When you made the purchase upgrade of Booking Calendar paid version, you have to receive the link for downloading the paid version of Booking Calendar. Please download this archive.

After you have received the archive with updated version of plugin, follow these steps:
Tip We recommend to make backup of your DataBase and Booking Calendar folder, before making backup, in this case, you will be able to rollback to previous versions and data in any time.
Tip Please note, during update process all plugin files are replacing to new. Its means that if you have edited any source files of plugin (in plugin folder), then you will be need to make this customization again after plugin update

2) Open General Booking Settings menu page of Booking Calendar admin panel, and at the right side of the page, recheck that this option: "Delete booking data during uninstall" is turned Off (unchecked), otherwise all your booking data during deactivation will be deleted.

3) Open the WordPress Plugins menu page and click on "Deactivate" link of Booking Calendar (your previous version). Wait for the message "Plugin is deactivated successfully".

4) Click on "Delete" link of Booking calendar and wait until the plugin is deleted.

5) Open WordPress Plugins menu page, then select the "Add New" plugin sub menu and then click on "Upload Plugin" button at top of page. Click on browse button in upload form and select the booking zip archive, which you have received. Click on upload button and wait until the plugin is 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.

6) Open the WordPress Plugins menu page and click on "Activate" link.
Wait for the message "Plugin is activated successfully".

Please clear the browser cache, before using new update.

1) When you made the purchase of Booking Calendar paid version, you have to receive the link for downloading the paid version of Booking Calendar. Please download this archive.

After you have received the archive with updated version of plugin, follow these steps:
Tip We recommend to make backup of your DataBase and Booking Calendar folder, before making backup, in this case, you will be able to rollback to previous versions and data in any time.
Tip Please note, during update process all plugin files are replacing to new. Its means that if you have edited any source files of plugin (in plugin folder), then you will be need to make this customization again after plugin update

2) Open the General Booking Settings menu page of Booking Calendar admin panel, and at the right side of the page recheck that this option "Delete booking data during uninstall" is turned Off (unchecked), otherwise all your booking data during deactivation will be deleted.

3) Open the WordPress Plugins menu page and click on "Deactivate" link of Booking Calendar (free version). Wait for the message "Plugin is deactivated successfully". It's important.

4) Click on "Delete" link of Booking calendar and wait until the plugin is deleted.

5) Open WordPress Plugins menu page, then select the "Add New" plugin sub menu and then click on "Upload Plugin" button at top of page. Click on browse button in upload form and select the booking zip archive, which you have received. Click on upload button and wait until the plugin is 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.

6) Open the WordPress Plugins menu page and click on "Activate" link.
Wait for the message "Plugin is activated successfully".

Please clear the browser cache, before using new update.

What's Next?
Please read the general instruction about usage of paid versions of Booking Calendar.

You can create the different booking resources, unique calendars - your properties or services at the Booking > Resources page. And then you be able to insert booking shortcode (booking form or availability calendar) for for specific booking resource (your properties or service) into the post or page.

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.

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.

 

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.

1) You need to create the booking resources for the each of your properties or services on the Booking > Resources page.
You can read more info about the booking resources and how to configure them on this page.

2) Then you be able to insert the booking form for the specific resource (your property or service, which need to be booked) into the any posts or pages. You can check how to insert and configure booking shortcode into the posts or pages here. Also check how manually to configure Booking Calendar shortcodes here.

3) Finally you can reconfigure settings, form fields and email templates, if you need the different options, on the Booking > Settings pages.

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

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. 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.

4. 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.

5. 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.

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.
noresultstitle
showing text, if nothing found.
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)

 

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.

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.

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.

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.

 

Configuration of Booking Calendar

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.

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.

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']

If you want to display the search form and its results on the same page, even before users start searching, follow these easy steps:

1) If your page URL looks like this: https://your-server.com/search/availability/, just copy and paste the following codes into your page:

[bookingsearch searchresults='/search/availability/' searchresultstitle='{searchresults} Result(s) Found' noresultstitle='Nothing Found']
[bookingsearchresults]

Make sure to replace searchresults='/search/availability/' with the relative path to your page.

2) Also, go to Booking > Settings > Search page in the Advanced section and turn on the "Disable days selection" option. This prevents date selection if a user clicks on a search result right after the page loads without searching. This ensures no dates are pre-selected when a user hasn't started a search.

Following these steps will help you display default search results and the form before users even start searching.

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.

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.

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.

Inserting booking form/availability calendar into the post or page
Adding booking form into page with new Gutenberg editor
(Available since update 8.4)

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 select your  booking resource (in the paid versions only) and configure other options, like number of visible month of calendar, inserting the booking form with calendar or just availability calendar 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. 

 Booking Calendar Personal and higher versions.
In the paid versions of Booking Calendar  (Personal, Business Small/Medium/Large, Multiuser), you will be able to select, in the popup configuration dialog additional parameter(s), like booking resource (your different properties, like rooms or services). It's mean that each booking calendar in the booking form, will have identification for the the specific booking resource. And you can make the different bookings for the same dates but in these

Booking Calendar Business Medium/Large versions
In additional at the Business Medium/Large versions of the Booking calendar, you can select the different booking forms (you can customize the different booking forms at these versions at the Booking > Settings > Fields page).

Terms: Personal, Business Small, Business Medium, Business Large, MultiUser, insert booking shortcode, insert booking form into post or page. 

How to add Booking Calendar in Gutenberg editor in Classic (old) way?

  1. Click on "+" Plus button to add new block.
  2. Select Formatting section and click on "Classic" block, or simply enter "Classic" in Search field. New "Classic" block will be added to the page.
  3. Click on "Booking Calendar" icon in "Classic" toolbar.
  4. Configure Booking Calendar parameters in popup dialog and click Insert button. Publish / Save the page.

Add Booking Calendar in Gutenberg editor in Classic (old) way

Inserting the booking form/calendar in sidebar widgets.

Please open the WordPress admin menu page: Appearance > Widgets configuration.  Add the Booking Calendar widget to the one of your sidebars and configure the parameters, like a booking resource (in the paid versions only), number of visible month of calendar, inserting the booking form with calendar or just availability calendar etc...

Terms: Personal, Business Small, Business Medium, Business Large, MultiUser, widget, booking calendar widget.

Inserting the booking form/calendar into any other place of your site
You can insert the booking form or calendar into the any other place of your site by editing the PHP code of your theme files and insting the special code for that. Please read more detail about how to do this in the FAQ.

Terms: Personal, Business Small, Business Medium, Business Large, MultiUser, inserting booking calendar in any pace of your site.

How to add Booking Calendar in Gutenberg editor in Classic (old) way?

  1. Click on "+" Plus button to add new block.
  2. Select Formatting section and click on "Classic" block, or simply enter "Classic" in Search field. New "Classic" block will be added to the page.
  3. Click on "Booking Calendar" icon in "Classic" toolbar.
  4. Configure Booking Calendar parameters in popup dialog and click Insert button. Publish / Save the page.

Add Booking Calendar in Gutenberg editor in Classic (old) way

Add Booking Calendar Blocks in Gutenberg editor in "native" mode.
(available since update 8.4 of Booking Calendar)

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).

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.

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.

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.

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.

This instruction apply only to updates 8.6 or newer in Booking Calendar Business Small or higher versions.

You can use in the booking form at the Booking > Settings > Form page this shortcode for ability to select payment method that will be showing after booking process:

<p>Select payment method:<br/>
  [select payment-method "All payment methods@@" "Stripe@@stripe_v3" "PayPal@@paypal" "Authorize.Net@@authorizenet" "Sage Pay@@sage" "Bank Transfer@@bank_transfer" "Pay in Cash@@pay_cash" "iPay88@@ipay88" "iDEAL@@ideal"]
</p>

Of course, you can remove from the above shortcode, the payment systems, that you have not activated at the Booking > Settings > Payment page, and use only active payment forms, similar to this:

<p>Select payment method:<br/>
  [select payment-method "All payment methods@@" "Stripe@@stripe_v3" "PayPal@@paypal"]
</p>

P.S. This solution was suggested by "Dan Brown". Thank you.

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.

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 Booking > Resources > Advanced cost 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.

 

Customization of Booking Calendar

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.

If you need to show the description and the images in the search results like in this search availability demo.

Then the text  in search  results is getting from "Excerpt” section  of  post,  where you have inserted the booking form 
and the image - its "Favorite image" of this post.

In search  result form  at the Booking > Settings > Search page you will be need to  use these shortcodes:

[booking_featured_image] - featured image, taken from the featured image associated with the post,
[booking_info] - booking info, taken from the  excerpt associated with the post

In case if you are using pages with booking forms and not the posts.
You need to install  some other plugins,  like "page-excerpt" plugin, which will  add the excerpt section to the pages,  as well.
The "Featured Image" by  default is supporting in Pages,  as well. But this functionality  must  support by your theme.
So please contact  support of your theme,  about  adding ability to  use "Featured Images" in your pages.

Deprecated for Update 9.8 or newer

1) Simple way of tracking after redirection to the "Thank you" page.
In case, if you do not have showing "Payment form(s)" after submission of the bookings (in paid versions of Booking Calendar), and you have defined the "Redirection to the "Thank you" page (instead o showing "Thank you" message) at the Booking > Settings General page in Form section, so then simplest way to add your "tracking code" (like Google Adwords code) inside of your "Thank you" page. Please open your "thank you" page for editing, switch to the "Text view mode" of your content editor (html view mode) and insert your Tracking code, which was provided by Google Adwords or some other tracking service.

2) Other more flexible way of tracking booking form submission is adding code in your functions.php file of your theme.
Firs of all please update your version of Booking Calendar to the update 8.6 or newer. You can request the new update of paid versions of Booking Calendar on this page.

After this add inside of the functions.php file of your theme code similar to this,
(you can check how to edit files in WordPress menu in this article):

function my_booking_tracking( $params ){
   ?><!-- Google Code for Booking Conversion Page -->
   <script type="text/javascript">
    /* Insert bellow your Google Tracking Code  */
   </script><?php
}
add_action( 'wpbc_track_new_booking', 'my_booking_tracking' );

Kind Regards.

Its possible to configure to show only one payment system after booking process, if visitor selected payment system in booking form.
Example of configuration selectbox in the booking form at the Booking > Settings > Form page:

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

Available only  in latest updates of Booking Calendar 8.5.2 or newer.

After visitor selected specific payment system in the booking form, only this payment form will be showing after submit of booking. Its also can be useful in the Booking Calendar Business Medium or higher versions, for setting additional "Payment system fee" (commission) at the Booking > Resources > Advanced cost page.
Check more about this feature here. Watch it in this video guide.

If you are using change over days functionality - half day bookings but for some specific booking resource you need to have timeslots or full day bookings, then its possible to make such small customization.
To have change over days functionality only at the specific page(s).

Please open this file ../wp-content/plugins/{Booking Calendar Folder}/inc/_bs/biz_s.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:

$exception_pages = array( '/page-no-change-over/' );

and replace it to this code:

$exception_pages = array( '/timesslosts/' );

So in this case, system will not apply change over days to this page.
Its means that you page with time-slots have to look like this: https://server.com/timesslots/

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.

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.

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 ) {

You can use the code like this for opening your booking form in popup (modal window):

<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="btn button">Booking form in popup window</a>
<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">[booking type=1]</div>
            </div>
        </div>
    </div>
</div>
<style type="text/css"> .wpdevelop .modal { overflow-y: scroll; } </style>

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.9.1/

Probably additionally you will be need to customize some CSS classes and CSS styles relative to your actual theme.


In Booking Calendar version 9.0 or older:

<a href="javascript:void(0)" onclick="javascript:jQuery('.bookingFormModal').modal('show');" class="btn button">Booking form in popup window</a> <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"> [booking type=1]</div>
			</div>
		</div>
	</div>
</div>
<style type="text/css"> .wpdevelop .modal { overflow-y: scroll; } </style>

where [booking type=1] - shortcode for your booking form.
Probably additionally you will be need to customize some CSS classes and CSS styles relative to your actual theme.


In Booking Calendar version 7.0 or older:

<a class="btn button">Booking form in popup window</a>
<div class="wpdevbk">
	<div class="modal bookingFormModal" style="display: none; width: 700px !important; height: 1000px !important;">
		<div class="modal-header">
			<a class="close" data-dismiss="modal">& #10006;</a>
			<h3 style="margin-top: -27px;">Booking Form</h3>
		</div>
		<div class="modal-body">[booking type=4 nummonths=2]</div>
	</div>
</div>

where [booking type=4 nummonths=2] - shortcode for your booking form.
Probably additionally you will be need to customize some CSS classes and CSS styles relative to your actual theme.

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.

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>

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...

In the search availability form possible to use additional parameters for searching. For example searching by specific location or some other attributes.

How to configure it?

"Custom fields".
You can use the "custom fields" in the posts or pages, were you inserted shortcode for booking form.

One general rule for the "custom fields" - each custom field must start from "booking_" term.

For example, if you wan to search by City, then you need to make this configuration:

1) In the search form (at the Booking > Settings > Search page), you can use this selectbox configuration:

<label>City:</label>
<select id="booking_city" name="booking_city">
   <option value="">Any</option>
   <option value="Salernes">Salernes</option>
   <option value="Barjols">Barjols</option>
   <option value="Lorgues">Lorgues</option>
</select>

2) Then at the post or page, where you inserted booking form, you need to add new "custom field" with name "booking_city" and value (for example): "Lorgues".

In the same way you can add new additional parameter(s).
For example:

<label>Pool:</label>
<select id="booking_pool" name="booking_pool">
 <option value="">Any</option>
 <option value="1">Yes</option>
 <option value="0">No</option>
</select>

And of course in the page or post you need to create custom field: "booking_pool" with value "1" or "0"

General rules.

If you are having additional parameters, like this
- property_ab (this is some parameter)
- property_ac (number of beds)
- property_ad (square meters)
- ... etc...

you need to have parameters in format, where names of the custom fields starts from "booking_" terms:

- booking_property_ab (this is some parameter)
- booking_property_ac (number of beds)
- booking_property_ad (square meters)

Then inside of the search form you can have this selections:

    Number of beds:
    <select id="booking_property_ac" name="booking_property_ac">
    <option value="1">1</option>
    <option value="2">2</option>
    </select>

And for the posts or pages you can use custom fields with names "booking_property_XX", where XX = {ab | ac | ad}.

In case if you do not see the custom fields in your page, please follow this instruction for enabling custom fields in WordPress Gutenberg editor.

Tags
You can use "tags" in the posts or pages, where you are inserted the booking form for the specific booking resource.
In the search form you are need to use this keyword:

[search_tag] - search inside of posts/pages, which are have this tag.

Please note, its text field, so your visitors need manually to enter the tag for the searching.

Trick
Its also possible to customize this element as selectbox instead of the text field. You will be need to replace the [search_tag] shortcode to this HTML element:

<select id="booking_search_tag" name="tag">
<option value="">Any</option>
<option value="room">Room</option>
<option value="apartment">Apartment</option>
</select>

where "<option value="room">Room</option>" - list of options to select; "room" its value of the tag, and "Room" - its label, which is showing for the visitors....

Please click at the "Reset cache" button at the bottom of the Booking > Settings > Search page, after you are finish configuration, before making tests at the client side. You can check this troubleshooting instruction, if you do not see search results: https://wpbookingcalendar.com/faq/no-search-results/

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. For inserting JavaScript code into your page, you need to do this:
- In the Classic Editor, switch from "Visual" mode to "Text" mode by clicking the "Text" tab at the top right of the post content form.
- In the Block Editor, 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.


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] );


Deprecated. Legacy Customization for versions 4.2 to 9.7.7.

Please note, for do not have any conflicts, please use this customization, when you are insert into the post or page only single booking form. Its mean you are not insert the other booking shortcode into this page and do not have any booking widgets at this page.

Activating Single day selection mode.
Please use this code, for activating that type of days selection for the current booking form, if by default you are using the other type of days selections at the General Booking Settings page:

<script type="text/javascript">
   bk_days_selection_mode = 'single';
</script>
[booking type=1 form_type='standard' nummonths=1]


Activating Multiple days selection mode.
Please use this code, for activating that type of days selection for the current booking form, if by default you are using the other type of days selections at the General Booking Settings page:

<script type="text/javascript">
   bk_days_selection_mode = 'multiple';
</script>
[booking type=1 form_type='standard' nummonths=1]


Activating Range days selection as a FIXED number of days with 1 mouse click.
Please use this code, for activating that type of days selection for the current booking form, if by default you are using the other type of days selections at the General Booking Settings page:

<script type="text/javascript">
   bk_days_selection_mode    = 'fixed';
   bk_1click_mode_days_num   = 7;    // Number of days selection with 1 mouse click
   bk_1click_mode_days_start = [-1]; // { -1 - Any | 0 - Su,  1 - Mo,  2 - Tu, 3 - We, 4 - Th, 5 - Fr, 6 - Sat }
</script>
[booking type=1 form_type='standard' nummonths=1]

In this example we are used 2 new variables: bk_1click_mode_days_num and bk_1click_mode_days_start.

bk_1click_mode_days_num - its number of days selection with 1 mouse click. You can assign number of days selections to this variable. For example for having 5 days selections, please use this code:

bk_1click_mode_days_num   = 5;

bk_1click_mode_days_start - its array, where we can specify the start day of the range days selection.
If we are need to set the start day of range selection as any day of week, please use this code:

bk_1click_mode_days_start   = [-1];

If we are need to set the specific start day of week selections or multiple days of week as start day for the range selections, please assign these values:
0 - Sunday,
1 - Monday,
2 - Tuesday,
3 - Wednesday,
4 - Thursday,
5 - Friday,
6 - Saturday.
So if you are need to set the start day of range selection as Saturday, please use this code:
bk_1click_mode_days_start   = [6];

If you are need to set the start day of range selections as Monday and Friday, please use this code:
bk_1click_mode_days_start   = [1,5];

This code

bk_1click_mode_days_start   = [-1];

and this code:
bk_1click_mode_days_start   = [0,1,2,3,4,5,6];

is equivalent.


Activating Range days selection as a DYNAMIC range of days with 2 mouse clicks.
Please use this code, for activating that type of days selection for the current booking form, if by default you are using the other type of days selections at the General Booking Settings page:

<script type="text/javascript">
   bk_days_selection_mode    = 'dynamic';
   bk_2clicks_mode_days_min       = 1;    // Min. Number of days selection with 2 mouse clicks
   bk_2clicks_mode_days_max       = 10;   // Max. Number of days selection with 2 mouse clicks
   bk_2clicks_mode_days_specific  = [];   // Example [5,7]
   bk_2clicks_mode_days_start     = [-1]; // { -1 - Any | 0 - Su,  1 - Mo,  2 - Tu, 3 - We, 4 - Th, 5 - Fr, 6 - Sat }
</script>
[booking type=1 form_type='standard' nummonths=1]

In this example we are used 4 new variables: bk_2clicks_mode_days_min, bk_2clicks_mode_days_max, bk_2clicks_mode_days_specific and bk_2clicks_mode_days_start.

bk_2clicks_mode_days_min - Minimum number of days selection with 2 mouse clicks. You can assign number of days selections to this variable. For example for having minimum 7 days selections, please use this code:

bk_2clicks_mode_days_min   = 7;

bk_2clicks_mode_days_max - Maximum number of days selection with 2 mouse clicks. You can assign specific number of days selections to this variable. For example for having maximum 14 days selections, please use this code:

bk_2clicks_mode_days_max   = 14;

bk_2clicks_mode_days_specific - its array, where we can specify that is possible to select only specific number of days selection.
For having possibility to select any number of days, please use this code:

bk_2clicks_mode_days_specific   = [];

For having possibility to select only weeks - 7 days, 14 days, 21 days... please use this code:
bk_2clicks_mode_days_specific = [7];

For having possibility to select only - 5, 7, 10, 14, 20, 21 days... please use this code:
bk_2clicks_mode_days_specific = [5,7];

bk_2clicks_mode_days_start - its array, where we can specify the start day of the range days selection.
If we are need to set the start day of range selection as any day of week, please use this code:

bk_2clicks_mode_days_start   = [-1];

If we are need to set the specific start day of week selections or multiple days of week as start day for the range selections, please assign these values:
0 - Sunday,
1 - Monday,
2 - Tuesday,
3 - Wednesday,
4 - Thursday,
5 - Friday,
6 - Saturday.
So if you are need to set the start day of range selection as Saturday, please use this code:
bk_2clicks_mode_days_start   = [6];

If you are need to set the start day of range selections as Monday and Friday, please use this code:
bk_2clicks_mode_days_start   = [1,5];

This code

bk_2clicks_mode_days_start   = [-1];

and this code:
bk_2clicks_mode_days_start   = [0,1,2,3,4,5,6];

is equivalent.

 
 

CSS customization of plugin

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

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:

German 100% [ 2151 / 2151 ], fuzzy 0, not translated 0
Hungarian 100% [ 2146 / 2146 ], fuzzy 0, not translated 0
French (France) 99.15% [ 2105 / 2123 ], fuzzy 17, not translated 1
Greek 89.22% [ 1878 / 2105 ], fuzzy 140, not translated 87
Turkish 88.03% [ 1853 / 2105 ], fuzzy 158, not translated 94
Portuguese (Brazil) 86.8% [ 1835 / 2114 ], fuzzy 177, not translated 102
Italian 85.7% [ 1804 / 2105 ], fuzzy 49, not translated 252
Romanian 79.57% [ 1675 / 2105 ], fuzzy 273, not translated 157
Arabic 79.24% [ 1668 / 2105 ], fuzzy 279, not translated 158
Finnish 79.1% [ 1665 / 2105 ], fuzzy 285, not translated 155
Spanish (Mexico) 79% [ 1663 / 2105 ], fuzzy 289, not translated 153
Dutch 78.62% [ 1662 / 2114 ], fuzzy 303, not translated 149
Swedish 78.48% [ 1652 / 2105 ], fuzzy 290, not translated 163
Spanish (Spain) 78.38% [ 1650 / 2105 ], fuzzy 298, not translated 157
Norwegian (Bokmål) 78.05% [ 1643 / 2105 ], fuzzy 301, not translated 161
Polish 77.81% [ 1638 / 2105 ], fuzzy 300, not translated 167
Slovenian 77.01% [ 1621 / 2105 ], fuzzy 311, not translated 173
Danish 73.25% [ 1542 / 2105 ], fuzzy 362, not translated 201
Bulgarian 73.21% [ 1541 / 2105 ], fuzzy 357, not translated 207
Chinese (Taiwan) 71.5% [ 1505 / 2105 ], fuzzy 409, not translated 191
Russian 69.91% [ 1478 / 2114 ], fuzzy 408, not translated 228
Portuguese (Portugal) 69.55% [ 1464 / 2105 ], fuzzy 411, not translated 230
Galician 69.45% [ 1462 / 2105 ], fuzzy 418, not translated 225
Thai 69.36% [ 1460 / 2105 ], fuzzy 409, not translated 236
Hebrew 67.22% [ 1415 / 2105 ], fuzzy 417, not translated 273
Chinese (China) 66.6% [ 1402 / 2105 ], fuzzy 422, not translated 281
Ukrainian 66.37% [ 1403 / 2114 ], fuzzy 434, not translated 277
Croatian 57.01% [ 1200 / 2105 ], fuzzy 409, not translated 496
Slovak 56.96% [ 1199 / 2105 ], fuzzy 412, not translated 494
Czech 56.91% [ 1198 / 2105 ], fuzzy 409, not translated 498
Catalan 56.77% [ 1195 / 2105 ], fuzzy 413, not translated 497

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.

  1. Before making translation of wordpress plugin, you need to have Poedit program. You can download it from here. Its completly free.

    You can download the original translations files from here.

  2. Start Poedit program.
  3. Select File -> New catalog from POT file from menu and select POT file for translation usually its inside of languages folder.
  4. Type description of your translation.
  5. Enter The name of PO file.
    Name of file consist from 2 parts:
    1st part its the filename of the plugin (in our situation its "booking"),
    2nd part its the Locale (for Spanish translation: "es_ES").
    So we will have name "booking-es_ES.po".
  6. Save file to the "languages" folder of plugin.
  7. Make translation.
  8. If you find in translation "%s" symbol you should leave it at the same place as at original translation line.
  9. Please be sure that you do not set specific translation line as "Fuzzy". You can check it at the "Edit menu" - "Translation is fuzzy" (Ctrl + U)
  10. Save file after translation.
  11. If you make translation, you can send this translation files (*.po, *.mo) to info@wpbookingcalendar.com and we will add them to the next release of plugin. Thank you.

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..

 
 

Troubleshooting

  1. Check SPAM / JUNK folder in your mail system.
  2. 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.
  3. 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.

  4. 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).
  5. 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.
  6. 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.
  7. 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/ )

  8. 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'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. 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.

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.

  1. If you encounter a 404 error, 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.
  2. 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.
  3. 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.
  4. 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.

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.

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:

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

or this:
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.

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).

  1. Check Cache Plugins: Start by examining your cache plugins, such as "WP Super Cache" or "W3 Total Cache."
    If you're using any of these plugins, consider turning them off or ensuring they don't cache pages with booking forms.
    You can achieve this by adding an exception to the pages with booking forms, search forms, or search results.
    This step helps prevent caching-related problems.
  2. Review Shortcode Placement:
    Double-check where you've placed booking forms using the shortcode for booking form: [booking ...].
    Ensure that you've inserted these shortcodes into the content of posts or pages rather than in sidebars or widgets.
    Make sure you're using the correct shortcodes for either the (main) parent resource (the one with capacity) or single booking resources (where capacity = 1).
    If you've mistakenly used shortcodes for child resources, the associated bookings won't appear in search results.
    For detailed instructions on setting up booking resources, refer to this guide
    and explore the concept of capacity here.
  3. Clear Cache (Mandatory): Navigate to "Booking > Settings > Search" and click "Clear cache".
    This step is crucial. You should see the number of pages with booking forms.
    If you don't find any discovered pages with booking forms, it signals a configuration issue in the previous steps.
  4. Check Search Availability: Reassess how the search availability feature functions,
    taking into account different parameter settings.
    Learn more about this process here.

After completing these steps, proceed to test the search form on your website's front end.

You may also find it helpful to explore adding additional parameters to your search form.
Discover more about this feature here.

If you are having this error at the page: "Request do not pass security check! Please refresh the page and try one more time."
then this error is appearing, when NONCE field in booking form was not updates, and there some old value.

Nonce field its hidden field in your booking form with unique value, its required for the prevent of the remote (CSRF/XSRF) attacks to the booking form at your website. Its standard practice for all forms in WordPress.

The only reason why it’s can be, because of some cache issue.

1) Usually its because of cache issue at your server, because of Cache plugin, or because of some cache system/software/tool directly at your server.

Please recheck for the any cache plugins, like "WP Super Cache" or "W3 Total Cache". If you are using someone, please deactivate it or add the exception to the page with booking form for do not cache this page(s).

2) If you still will have an issue so then please try to deactivate one by one all your active plugins at the WordPress > Plugins menu and make testing after each plugin deactivation. If its not help, please deactivate all your plugins and active the default WordPress theme. And then retest it again.

3) The other reason can be caching of the website directly at your server. In this case you need to contact support of your hosting and recheck about the any caching software or tool at your server.

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

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) Firstly recheck that you have correctly configured .ics feeds URLs for exporting.
Open Booking > Settings > Sync > "Export - .ics" page and be sure that there 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

2) Please be sure that you are having .htaccess file in your website root folder.

3) Recheck about the any conflicts with some other plugin or actual theme.
Please try to deactivate one by one all your active plugins at the WordPress > Plugins menu and make testing after each plugin deactivation. If its not help, please deactivate all your plugins and active the default WordPress theme. And then retest it again.

4) Finally 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.

P.S. 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 its 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/principala/wpbm.ics
this .ics feed generate dynamically from the php file.

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.

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.

1) This error can be at some servers of 1&1 hosting, or may be at some other ones.
For fixing this issue, please add this line to their .htaccess file:

AddType x-mapp-php5 .php

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.

3) 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.

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 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.