Multiple Bookings Mode

This feature is in final beta stages, already available in Pro. The documentation on this page is consistent with the Pro Version 2.3.7 onwards.


Please take a look at our MB Mode Demo Site for an example of how this feature will work from the customer point of view.

It is now also possible to enable ‘Multiple Bookings Mode’, which essentially turns your event bookings flow into one similar to a shopping cart. At this point, users will be able to book many events in one go and pay once for all of them.

How it Works (What’s different)

The flow will generally work like this:

  1. User chooses an event to book
  2. User fills out attendee information and any booking-specific information in your custom form.
    • Any custom forms you use for events at this point will be stripped of user fields, these fields are only used on the checkout page and will apply to all bookings.
  3. User submits booking, booking gets added to a cart.
  4. If you have added a booking cart widget to your sidebar, this should automatically be updated and would look similar to this:
  1. User can repeat steps 1-4 multiple times.
  2. When a user is ready to pay, they proceed to the checkout to review and finalize their bookings, where they will see a total price to be paid.
  1. Users will be able to enter a coupon code at this point to apply a discount
  2. User enters information requested by your checkout custom booking form, minimum requirement is an email.
  3. User selects payment method and proceeds with payment the same way as with a normal single booking.

Booking Emails

Multiple Bookings will work much the same way as a single booking, with some subtle differences. When automated emails are sent to the users and admins, one single email will be sent for all the bookings to the site administrators  rather than one email per single booking, which can contain some new summarizing placeholders.

In these emails, single event placeholders e.g. dates, event name, etc. will not work as expected, since the booking can contain one or more event.

You do have the option to additionally send individual emails for every event (instructions on setting up emails are further down), which will go out to the event owner.

Managing Multiple Bookings

When viewing the admin area, you will still see individual bookings as you would in normal booking mode. You can still manage bookings independently from each other as usual such as changing status, resending emails, modifying information etc.  When doing so, the normal single event booking emails would be sent to users (if applicable).

You will also be able to manage them altogether in a separate Multiple Bookings admin window. You should see a warning when viewing/editing a single booking with a link to the master booking. Here you can view all the bookings made at once, add notes and payments for this booking, as well as modify their status in bulk, which would result in the Multiple Booking email being sent to the person who booked rather than individual booking emails.



When you turn on Multiple Bookings Mode, all coupons immediately become site-wide coupons, meaning they are available to any booking being made. Additionally, coupon discounts are not applied to individual events but to the booking as a whole.

Caveats & Limitations

This feature makes some significant changes to how bookings are made. There are some inevitable changes to how bookings work and should be considered when you’re deciding whether or not to use this feature:

Booking Confirmation Emails

One booking confirmation email is sent for all events booked, therefore you cannot make use of single event placeholders (even if there is only one event booked). The new summarizing placeholders available to you must be used instead. The only times single event booking emails are sent is if you manually alter the booking status of that single event booking and also choose to send the relevant confirmation email when doing so.

Events belonging to different users

Since people can book many events at once if you allow multiple users to submit events with bookings enabled, it is highly likely that at one point someone will book two events belonging to different users.

Unless they have the manage_others_bookings capability, they will not be able to view information submitted on the checkout page form. They will still be able to view any user fields you created in our form editor.


#_BOOKINGBUTTON functionality doesn’t change, it still registers a single event/ticket booking.

Enabling/Setting Up

Once you have installed and set up Events Manager and Events Manager Pro, you can proceed with these additional steps to enable Multiple Bookings Mode.

Create Pages

You need to create two normal WordPress pages, which you can name whatever you want, but will serve the purposes of:

  • Checkout – Where users will view their bookings, fill out relevant user information (if not logged in) and then proceed with a selected payment method.
  • Cart – Users can view their booking information and proceed to the checkout.

Create a custom checkout form

The checkout page can contain a unique custom booking form, which will be used to obtain any user information (minimum being an email, like with a single booking), as well as any additional information you may want to obtain for the booking as a whole.

If you don’t want to reuse a form you already have, or to make sure you clearly distinguish forms from each other, create a new custom booking form.

Enable Multiple Bookings

To enable this feature, you need to enable this from your dashboard – WP Admin > Events > Settings > Bookings (Tab) > Multiple Bookings Mode


When you select ‘yes’ to enable this feature, you will be able to assign the Cart and Checkout pages you created earlier, as well as the checkout custom form you’d like to use.

You will also see some options to specific certain lines of text, such as a message that is shown when a booking is added to the cart, or of no bookings have been added yet.

At this point, you need to save your settings to enable further Multiple Bookings settings to appear.

Configure Emails

Once enabled, you can configure a new set of email templates which are sent instead of individual booking templates when dealing with a Multiple Booking. You can find this in WP Admin > Events > Settings > Emails (Tab) > Multiple Booking Email Templates.


There will already be some preconfigured templates for you to start with, but you can edit these to your specific needs. The types of email templates that you can modify are the same types you can modify for single bookings, which are still available in the same tab under Booking Email Templates

Widget and Shortcode

When enabled, you will have a new widget and shortcode available to you for displaying the cart contents. When bookings are added to the cart, this widget is automatically updated without the need for a page refresh.


The Widget is called ‘Event Bookings Cart’, which contains some custom settings:

  • List Item Format – the format for listing each event booked, which can contain any booking placeholders, if not supplied a default will be used, if blank, no events will be listed.
  • Loading Text – When an event is booked, this text will be shown whilst the cart contents are refreshed
  • No Bookings Text – shown if no bookings have been made yet

You can also use this in shortcode form, called [em_cart_contents] and can also contain these arguments:

  • format – the format for listing each event booked, which can contain any booking placeholders, if not supplied a default will be used, if blank, no events will be listed.
  • cart_text – the text link which points to the cart page
  • checkout_text- the text link which points to the checkout page
  • no_bookings_text – shown if no bookings have been made yet
  • loading_text – when an event is booked, this text will be shown whilst the cart contents are refreshed


When using placeholder formats (e.g. in a confirmation email) to display information about a multiple booking, you are displaying information about a group of individual bookings. Due to this, certain placeholders available in single booking formats will not provide useful information as it is limited to showing a single piece of information, for example:

  • Any event, location, category placeholders such as #_EVENTNAME, #_LOCATIONNAME, etc.
  • Any booking placeholders referring to specific ticket information, such as _BOOKINGTICKETNAME

However, any placeholders specific to bookings, such as #_BOOKINGSPACES, #_BOOKINGPRICE, etc. will be available and will contain the total sum, such as total price and spaces in these cases.

These new placeholders can be used in your new email templates to show information about the individual event bookings.

  • #_BOOKINGTICKETS – Shows a list of all tickets booked.
  • #_BOOKINGSUMMARY – Shows a list of all events booked, broken down by ticket type and price/spaces
  • #_BOOKINGATTENDEES – Shows a list of attendee information filled per event and by ticket type

Developers & Custom Gateways

We’ve tried to make this new move as painless as possible, however, it is inevitable that some changes have to be made to custom Gateways, just like we had to make some small changes to the gateways included in Pro.

By default, your gateway will not be available for usage once Multiple Booking Mode is enabled. This is a safety feature so that things don’t work unexpectedly. To enable your gateway for activation, you simply have to add this property to your extending gateway class:

var $supports_multiple_bookings = true;

Before you do that though, there’s two things you should be aware of:

  • In PayPal, the only change we had to make along with the above is change any instantiation of an EM_Booking object (in our case, one line) like so:
$EM_Booking = new EM_Booking($id);  //change this to:
$EM_Booking = em_get_booking($id); //done, now you will get either a EM_Booking or EM_Multiple_Booking object!
  • If you are hooking into specific booking filters, particularly em_booking_get_post, em_booking_validate, and em_booking_save you should check what mode you’re in and use the variations of these filters, which are em_multiple_booking_get_post, em_multiple_booking_validate and em_multiple_booking_save respectively. Here’s what we did in our gateway:
if( get_option('dbem_multiple_bookings') ){
    	add_filter('em_multiple_booking_save', array(&$this, 'em_booking_save'),2,2);
	add_filter('em_booking_save', array(&$this, 'em_booking_save'),2,2);

In a nutshell, a multiple booking is an extended class of the original EM_Booking class, but is now called EM_Multiple_Booking, which overrides certain parent functions to provide the extra functionality needed. You can check your booking object when using the new em_get_booking() function to see if the result is a EM_Multiple_Booking class like so:

if( get_class($EM_Booking) == 'EM_Multiple_Booking' ){
  //This is a Multiple Booking object