Video made with v1.1.1. Booking Activities is constantly evolving.
Main features
★ = Unique feature only Booking Activities has.
Editor
★ WYSIWYG: Visually build your plannings
★ Drag and drop events directly on the calendar
★ Group your events to easily sell bundles, subscriptions, seminars, or events spreading on several days
Create repeated events (with desired frequency and exceptions dates)
Unlimited calendars, activities, events and bookings.
Permission management system: your managers manage only their own calendars and reservations. E.g.: You can set up Booking Activities for a marketplace(Booking Activities can only be managed from the backend).
Booking forms
Fully customizable forms in a WYSIWYG editor
Shortcodes to display reservation forms or simple calendars
★ Display events from multiple schedules and activities at once
★ One-click booking: just pick the desired event(s) on the calendar and click on “Book”!
Custom action when you submit the form or when you click an event: make a reservation, ★ add a product to cart, redirect to a URL
Pick multiple events and book them all at once / ★ add them all to cart at once
★ Seamless login / registration: embedded in the form and processed with the reservation. You can also book without account, or display a login form only with a shortcode.
100% responsive: looks great on mobiles, tablets and computers.
★ Set any custom fields and any booking metadata thanks to Advanced Forms add-on
Online payments with WooCommerce
Calendars are automatically integrated to WooCommerce product pages
★ Attach multiple calendars and activities to one WC product
★ Cart expiration system: bookings in the shopping cart are temporary
Auto-validation when payment is completed
★ WooCommerce order status and its bookings status are smartly bound
★ Automatic refunds by WC coupon or via the gateway (if allowed)
Manage reservations
Find all your bookings at a glance on a calendar and in a list. Use dynamic filters, sorting, and custom columns
Drag and drop to edit. Click to book. Works both with a shortcode and WooCommerce.
WYSIWYG calendar editor. Simply drag and drop events. Click on events for additional settings (availability, repetition...).
Create daily, weekly or monthly repeated events. You can add exception dates to the repetition.
Grouping your events is simple: just select multiple events and click on 'Add a group'. Or select an existing group and start editing it right away.
Create and customize your booking form. You can combine events and settings of multiple schedules. You can make each form unique.
Use a shortcode to display a booking form (or a calendar alone). Your customers can log in or register as they book, they can also book without account.
When a customer clicks on a grouped event, the whole group is selected. If the event is part of several groups, the customer has to choose one from a dialog.
There is also an option to allow your customers to pick multiple events of their choice at once.
Easily bind a reservation form to a WooCommerce product. You can set a different event calendar to each variation.
A reservation form appears automatically on desired WooCommerce product pages.
WooCommerce cart expiration system: when time is up, bookings are cancelled and cart emptied. You can also disable it.
Your bookings are displayed on a calendar, when you mouseover an event, and in a list that you can filter, sort and customize. Manage your bookings: change state (cancel, validate), reschedule, refund...
Synchronize your bookings and display them in your Google Calendar events' description
Customers also have their booking list and calendar thanks to a shortcode. They can cancel, reschedule or ask a refund by their own (if you allow them).
Your customers can manage their bookings from their WooCommerce orders as well.
Orders status are bound to their bookings status. If bookings are cancelled / booked / refunded, so do the order (and vice-versa).
Email notifications are automatically sent to the customer or the administrator when they need to be informed of a change.
Make your emails look just like you want thanks to the HTML editor and special tags. You can also choose to deactivate a notification.
I am not an activity provider, can this plugin still meet my needs?
Yes of course. It is basically a reservation system based on event scheduling. In other words, you build your event calendar and allow them to be booked. You can find another purposes to it.
To know if it actually meets your needs, simply try it, it’s free.
If you are on a hurry, you can just check the demo website.
Or read the full features description if you are looking for something in particular.
Create and fill your first calendar
Create your first calendar
Go to Booking Activities / Calendar Editor page
Click on the big ‘+’ button
Set a title
In the “Editor” tab, you can set your working hours
Click on the dialog OK button, the calendar is loading!
Create your first activity
Click on the ‘+’ button in the ‘Activities’ area
Set a title, an availability, a color and a duration
Click on the dialog OK button, the activity is added to the list!
Create your first event
Drag an activity from the list and drop it on the calendar
Drag and drop the event to move it
Mouseover the event and click on its settings wheel to edit its properties
Congrats! You have created your first event schedule
Display a reservation form
Make sure to have at least one calendar, one activity and one event at a future date
Go to Booking Activities / Booking forms page
Select the desired form or create a new one
Click on the setting gear on the “Calendar” field to set the calendar(s) to display (and many other settings)
Copy the shortcode given in the “How to integrate this form” area (it looks like [bookingactivities_form form=""])
Past this shortcode in any post or page you like
Go on this post / page frontend, the booking form appears!
/!\ Reservation forms displayed via shortcode are not bound to WooCommerce at all. If you want to bind a WC product to a calendar, check “Use it with WooCommerce” in this FAQ.
Display the calendar only
Make sure to have at least one calendar, one activity and one event at a future date
Go to Booking Activities / Booking forms page
Select the desired form or create a new one
Keep the “Calendar” field and remove all the others (like “Login/Register”, “Quantity” and “Submit” fields)
Copy the shortcode given in the “How to integrate this form” area (it looks like [bookingactivities_form form=""])
Past this shortcode in any post or page you like
Go on this post / page frontend, the calendar appears alone!
Display user’s booking list
Make sure the user has bookings and they are logged in, otherwise it will not show anything
Past this shortcode in any post or page you like: [bookingactivities_list]
Go on this post / page frontend, the booking list appears!
Depending on BA settings and bookings dates, actions like cancel or reschedule may appear. Try them!
Use it with WooCommerce
Make sure to have at least one booking form with one event available at a future date You also need to activate WooCommerce and create one product
Go to Products / Your Product
In ‘Product data’ area, check ‘Activity’, a new ‘Activity’ tab appears
In ‘Activity’ tab, bind the desired booking form to the product
Go on this product page on the frontend, a booking form appears!
For Variable Products, you need to check the ‘Activity’ checkbox and set a calendar and an activity for each variation.
Does this plugin accept reservation online payments?
Yes, you can accept payments for bookings through WooCommerce. Booking Activities is perfectly integrated to WooCommerce:
Booking forms will appear automatically on product pages
A cart expiration system is implemented to make sure that bookings in the shopping basket won’t stay in the basket forever, taking the place of someone else
Bookings are automatically validated when the payment is received, or cancelled if not
If you change order quantity or state, so do the bookings, and vice versa
Should I accept payments for bookings?
Here is a pros and cons analysis:
PROS:
Customers are engaged, if they book, they come.
Saves time: customers have already paid.
Customers can come without money, they can offer the activity to a relative
Automatic cashing, billing, accounting and stats
CONS:
May discourage customers, depending on the type of activity you provide and your target
Takes more time for customers, and more diffult process, higher cart abandonment rate
You will have to do much more development, administrative and legal procedures, and you will have more expenses (bank commission, maintenance …)
We recommend to accept online payments since it’s a great way to automate your business management and make it grow.
Events are not “Booked” after booking form submission, they are “Pending”, why?
Don’t worry, the reservation is well registered. Now, it is up to you to turn it to “Booked” right away or when your customer comes, or when your customer gives you the money…
But you can just turn the default booking status to “Booked” in Booking Activities settings.
Note that if you use WooCommerce and online payments, booking status turn automatically to “Booked” if the payment is complete, or “Cancelled” if not.
Cart expires but events are still booked
A bot cleans expired bookings hourly. So just wait up to 1 hour.
Usually, users are still on your website when their bookings expire, if so, they are immediatly removed.
Else, they will be cancelled later, with the others in that case.
My events appear to be booked, but no bookings appear in the list
Temporary bookings (such as In cart events) take active slots but may not appear in the booking list.
Go to the “Bookings” page, under the “States” filter select “Delivered”, “Booked”, “Pending” and “In cart”.
Then, just click on “Apply Filters”. Now you can see all kind of active bookings.
Cancelled bookings disapeared from the list, I need to see them!
Go to the “Bookings” page. Under the “States” filter, select all the available status.
Click on “Apply Filters” and then you will be able to see inactive bookings (cancelled, expired, removed, refunded, refund requested).
Email notifications are not sent
If you enabled “Asynchronous email” option in Booking Activities settings (“Notifications” tab), emails will be sent the next time someone (anyone) loads any page of your website.
Then, you only need to refresh or visit any page of your website and then check your inbox.
If you disable “Asynchronous email” option, then the loading will last until the email is actually sent.
Fix – Apply bookacti_product_is_activity and bookacti_product_booking_form_id hooks to cached values
1.18.7 – 2026/08/28
Tweak – Booking forms bound to WooCommerce products can no longer be used for direct booking (with their shortcode). You need to change its form action, or to create a separate booking form.
Fix – Regression where wrong booking form was loaded on product page with persistent object cache
Tweak – Keep form values after being redirected to log in page, when trying to make a booking without account with an email already associated with an account
Fix – Backend booking calendar was no longer restricted to Date filter after changing another filter
Fix – Backend booking list rows may not expand on small screens
Fix – Backend reschedule calendar may be restricted to the original form display period
Dev – Migrate notifications data from wp_options to wp_bookacti_notitfications and wp_bookacti_notitfication_channels tables
Dev – Refactor most functions and hooks related to notifications, and their parameters
Dev – Add database index on “active” columns to improve performances
1.17.1 – 2026/03/30
Tweak – Replace booking calendar settings icon with button in Bookings page
Fix – Missing JS dependency for global-function.min.js
Fix – Grouped events may appear as available in reschedule booking form
Fix – Bookings calendar was not restricted by date on page load when date filters was passed via URL parameters
Dev – Add custom_dataset and context booking system attributes to allow third party to override booking system data processing
Dev – Allow both date and datetime format for availability_period and display_period booking system attributes
Dev – Allow backend booking calendar to be filtered by end_from, created_from, end_to, created_to iinstead of from and to via URL parameters
Dev – Add bookacti_select2_option_data JS hook
Dev – Refactor parameters of bookacti_events_booking_lists hook
Dev – Refactor parameters of bookacti_event_booking_list_displayed JS hook
Dev – Add bookacti_booking_system_tooltip_booking_list_filters PHP hook
Feature – Add an option to display events out of the availability period as unavailable instead of not retrieving them at all (in form calendar settings)
Feature – Add an option to select the first available event by default (in form calendar settings)
Feature – Add an option to hide calendar if an event is automatically preselected (in form calendar settings)
Feature – Add an option to set days off globally (in Booking Activities settings)
Feature – Add an option to prevent booking events taking place partly on days off (in Booking Activities settings)
Tweak – Display started (groups of) events if they are bookable without having to turn ON Past Events (in form calendar settings)
Tweak – Make “At the latest” option compatible with “Display past events” and “Make past events bookable” options (in form calendar settings)
Tweak – Make “Booked only” and “Groups only” filters compatible together (in form calendar settings)
Fix – Grouped events could be booked individually if group has started and Group category was set to “All”
Dev – Separate the availability period from the display period: the former corresponds to the period during which events can be booked, the latter to the period during which they are displayed
Dev – Refactor parameters of bookacti_fetch_events_of_group_of_events_occurrences function and bookacti_get_grouped_events hook
Dev – Replace bookacti_booking_system_grouped_events_filters, bookacti_booking_system_booked_events_filters and bookacti_booking_system_events_filters hooks with bookacti_booking_system_event_filters
Dev – bookacti_encrypt and bookacti_decrypt functions now return an empty string in case of failure
Dev – Parameters of these functions have changed: bookacti_get_template_data, bookacti_get_templates_data, bookacti_get_mixed_template_data and bookacti_format_template_data