Description
Events Manager is a full-featured event calendar, bookings and registration management plugin for WordPress based on the principles of flexibility, reliability and powerful features!
Main Features
- Beautiful calendars, search pages, lists, grids and booking forms to enhance your site events.
- Easy event registration (single day with start/end times)
- Recurring and long (multi-day) event registration
- Bookings Management (including approval/rejections, export CVS, and more!)
- Multiple Tickets
- Fully-featured graph and statistics including bar/line/pie with comparison and stacking
- MultiSite Event Support
- Cross-Network Event Sharing – show your events and booking fromss on other subsites or main site
- Network-wide Global Booking Management
- BuddyPress and BuddyBoss Support
- Create modular (independent) event subsites or inter-networked events
- Multiple Location Types
- Physical Locations
- Online Events (URLs)
- Zoom Webinars/Meetings Integration
- BuddyPress & BuddyBoss Support
- Submit Events
- Group Events
- Personal Events
- Activity Stream
- more on the way
- Guest/Member Event submissions
- Assign event locations and view events by location
- Event categories
- Easily create custom event attributes (e.g. dress code)
- Google Maps (see our API usage recommendations)
- Advanced permissions – restrict user management of events and locations.
- Widgets for Events, Locations and Calendars
- Fine grained control of how every aspect of your events are shown on your site, easily modify templates from the settings pages and template files
- iCal Feed (single and all events)
- Add to Google Calendar buttons
- RSS Feeds
- Compatible with SEO plugins
- Timezone Support – create events in different timezones
- Plenty of template tags and shortcodes for use in your posts and pages
- Actively maintained and supported
- Lots of documentation and tutorials
- And much more!
Data Privacy and GDPR Compliance
We provide the tools to help you be GDPR compliant, including:
- export/erasure of data via the WordPress Privacy Tools, including booking, event and location data
- consent checkboxes on our booking, event and location forms on the frontend
- settings to control what can be exported/erased as well as where/when to place consent requests
- sample text for your site privacy policy describing what Events Manager does with personal data
Premium Features
We have a premium Pro add-on for Events Manager which not only demonstrates the flexibility of Events Manager, but also adds some important features including but not limited to:
- WooCommerce integration (sold separately)
- PayPal, Stripe, Authorize.net and Offline Payments
- Custom booking forms
- Individual Attendee custom forms
- Upload fields for bookings, attendees and users
- Printable Invoices and Tickets
- Send PDF tickets/invoices by email automatically
- Check In/Out
- QR Scanning
- Manage bookings on your phone
- Check In/Out users
- Waitlists
- Automation – ultimate flexibility in automation!
- Triggers:
- X time before/after events start
- When a booking status changes
- When a booking was booked x time ago
- Actions
- Send Webhook (Zapier, MS Automation and many other services)
- Send Email
- Send WhatsApp, SMS, Telegram notifications
- WhatsApp, SMS, Telegram integration and interactive flows
- Coupon Codes
- Custom booking email per event and gateway
- Faster support via private Pro forums
For more information or to go pro, visit our plugin website.
Additional Plugin Integrations
Whilst there’s many third party integrations with our own plugin, here’s some we’ve integrated ourselves!
- Included in Events Manager (automatic integration)
- Additional Add-Ons
7.0.1
- Added recurring events functionality, which now hosts one page for all events of that recurrence type.
- Added recurrence booking form picker including a calendar and dropdown selection.
- Added support for true timezone-relative calendar and recurrence selection listings via the
calendar_timezone
attribute. - Added support for searching in timezone-relative scopes for events using the
timezone_scope
attribute. - Added admin support for viewing bookings belonging to recurring events.
- Added conversion features to transfer repeated (previously called “recurring”) events into recurring events.
- Added 302 redirection functionality for converted repeated > recurring events.
- Moved booking form JS into externally and dynamically loaded JS file.
- Added month skipping navigation in calendars allowing skipping months with no events.
- Added multiple calendar UI display tweaks/fixes to eventful and today months.
- Fixed blank calendar dates showing display dates.
- Added different calendar header option via the
calendar_header
attribute. - Added
setStartOfMonth()
andsetEndOfMonth()
toEM_DateTime
. - Added timezone display options in
EM_DateTime::getDate()
andgetDateTime()
functions. - Changed selectize JS to dispatch a
CustomEvent
object from parent element withdetail
containing selectize objects. - Post ID is now optional for events.
- Fixed loading order of translated string assignments so they occur after init, while hard-coding potentially required strings during previously translated actions/filters.
- Updated readme “tested up to”.
- Namespaced Selectize and the
.selectize()
functions toEM_Selectize
and.em_selectize()
respectively to avoid collisions with other plugins. - Fixed phone input button styling clashes in manual bookings and potentially other pages.
- Moved
EM_Scripts_and_Styles
out ofevents-manager.php
into its own class. - Added
EM\Scripts_and_Styles::add_js_var()
allowing for footer localization. - Added
em_wp_localize_script_footer
allowing plugins to override EM localized script vars. - Added a catch exception in
EM_DateTime::modify()
. - Renamed some PHP variables in overriding methods (minor).
- Added multi-layer recurrence patterns including exclusions so events can have multiple recurrence patterns.
- Added
event_type
field allowing for recurrences, repeated, and recurring event types. - Changed recurring event saving logic to prevent deletion unless explicitly rescheduled or removed.
- Added cancellation/deletion options for recurrences not included in newly rescheduled patterns.
- Improved event update logic so that only new recurrences are added during rescheduling.
- Changed vocabulary from “recurring events” to “repeating events” for clarity and future compatibility.
- Updated ticket logic to support recurrence/override patterns while maintaining parent-child relationships.
- Added
Recurring_Sets
andRecurring_Set
objects to handle recurrence data. - Rewritten recurring event logic for greater flexibility and future extensibility.
- Added
EM_Ticket::get()
for cache-friendly ticket retrieval. - Added
EM_DateTimeZone::getCity()
. - Deprecated
recurrence_
fields inevents
table. - Added
em_event_recurrences
table. - Changed ticket deletion so it requires an event save.
- Added nonce safeguards for disabling RSVP/bookings, deleting recurrences, and rescheduling tickets.
- Added
em_datepicker_format()
function to output datepicker format. - Fixed uploader validation issues in JS and PHP caused by blank default extensions settings for event/location image uploads.
- Added non-escape option to allow HTML sub-values in attendees mulitple column data views on bookings table.
- Removed JS requirement for asset selectors to be wrapped by
em
in dynamic asset loading. - Improved dynamic asset loading by pre-loading asset groups before firing
onload
events. - Improved booking form JS by encapsulating container scopes within functions and events rather than scoping at the document level.
- Fixed phone input field JS error.
- Fixed missing uploader field minified CSS files.
- Fixed calendars showing the wrong month when there’s a long event starting in an earlier month.
- Fixed ticket caching issue when saving events, which caused the event editor/page to show outdated ticket data such as prices.
- Added
EM_Event->just_disabled_rsvp
to detect RSVP being disabled during an event save process.
6.6.4.4
- Re-added cancellation checks before processing a booking, previously added in 6.6.4.2 and removed in .3 due to urgent validation reports.
- Fixed image validation issues introduced in 6.6.4.2
6.6.4.3
- Fixed bug in 6.4.4.2 showing events as cancelled when attempting to make a booking
6.6.4.2
- Fixed map display issues when using empty
[locations_map]
and[events_map]
shortcode. - Fixed improper loading of default permitted upload extensions which can cause fatal errors in Pro form builder.
- Fixed grouped events list pagination breaking due to incorrect AJAX action command.
- Fixed category searches not persisting between AJAX reloads.
- Fixed and removed ability to book an event in the trash, reported by Revan Arifio via PatchStack.
- Fixed breaking change in BuddyBoss groups due to updated function use for BuddyPress integration.
6.6.4.1
- Changed
EM_Mailer
so thatsend()
can be called statically and non-statically to avoid legacy errors. - Removed redundant
EM_Booking->process_meta()
function already inEM_Object
. - Fixed booking meta processing issues omitting certain field keys with special non-alphanumeric characters.
- Fixed potential PHP fatal error when exporting CSV reports.
- Fixed image size validation issues in visual uploader.
- Fixed PHP notice when validation fails for phone numbers during booking user initial registration.
- Tweaked UI visuals to improve sizing and compatibility.
- Fixed issue where undo upload deletion options were not appearing.
- Fixed uploader booking admin views loading uploaded files twice for preview in editor/viewer modes.
- Improved
EM_Ticket_Booking->update_meta()
so it deletes array keys that aren’t defined anymore. - Improved
EM_Booking->update_meta()
so a third parameter$subkey
restricts deletion to a specific key in a meta group. - Added further encapsulation of data in uploader to avoid dependence on
$_REQUEST
data and allowing for multi-dimensional layers of a booking (such as a multi-booking upload).
6.6.4
- Fixed security vulnerability allowing SQL injection responsibly disclosed by mikemyers via WordFence Security Services.
- Added
em_bookings_table_display_hidden_input
hook to bookings table. - Fixed missing bookings for person/user view of bookings.
- Added possibility for multiple person search in bookings, allowing viewing of bookings from more than one user programmatically.
- Updated plugin header with license and updated copyright year.
- Added HTML props to booking editor view allowing access to booking sections by ticket ID via JS.
- Fixed PHP notices with interfering plugins via
the_content
. - Fixed PHP fatal error when installing/upgrading in WP versions < 6.1.
- Fixed PHP fatal error due to plugin conflict invoking
parse_query
in different ways. - Fixed translation issue in calendar modal title not using localized domain.
- Fixed missing div in
templates/forms/event-editor.php
. - Changed
maps-global.php
to store map JSON data as anapplication/json
script element rather than a regular div to improve SEO and coding standards. - Migrated partial use of jQuery in
maps.js
(minor). - Fixed
not_all_day
conditional placeholder showing same result asall_day
. - Fixed EM taking over ‘scheduled’ posts view for any CPT type and showing all posts instead.
- Fixed BuddyPress group nav links generating PHP error due to deprecated function.
- Fixed events BuddyPress group link not showing in groups nav bar since a recent EM update.
- Fixed calendar advanced search disappearing when filters are chosen and first search is initiated.
- Fixed taxonomy single term pages showing up blank on some themes when overriding formatting is enabled.
- Changed
EM_Taxonomy_Frontend
to use static binding. - Fixed duplicate map placeholders showing in AJAX calls when searching.
- Fixed non-AJAX pagination persistence issues when coupled with search form.
- Added
has_search
support toevents_list
,events_map
,events_list_grouped
,locations_map
,locations_list
shortcodes allowing for search forms to be added above. - Optimized code by removing redundant/duplicate code fragments and centralized shortcode and list generation using
em_output_events_view()
andem_output_locations_view()
. - Fixed maps JS display bug after an AJAX search.
- Fixed search form JS issues when searching with non-AJAX mode.
- Fixed minor attendee form aesthetic issues in booking editor.
- Fixed consent functionality preventing event submission forms from going through.
- Fixed phone number field setting saving issues for restricting countries.
- Added support for
EM_Object->add_error()
forEM_Exceptions
. - Implemented new uploader UI and further integration with FilePond by pqina.
- Completely revamped uploading API via
EM\Uploads\Uploader
andEM\Uploads\API
classes. - Added
update_meta
function for updating individualEM_Ticket_Booking
object meta items. - Added
em_ticket_booking_save
filter forEM_Ticket_Booking
object. - Added new JS/CSS loading module which loads individual assets only when needed via JS.
- Fixed countries list inconsistency if adding blank files consecutively followed by another call without adding blanks.
6.6.3
- Fixed JS error preventing full bookings table admin AJAX functionality in certain languages such as French.
- Fixed SQL ordering issues causing empty attendee and ticket views in bookings admin area.
- Added ‘booking’ array arg to em_bookings_table_get_booking_allowed_actions filter.
- Fixed WPML error when duplicating an event.
6.6.2
- Added aria-label to ticket selection.
- Disabled phone module for PHP versions 8.0 due to compatibility issues.
- Fixed consent not passing validation if marked required yet checked.
- Fixed ordering issues in booking admin tables, including the inability to order booking fields in a ticket view.
- Fixed general orderby failing to apply if passed with an ASC or DESC definition.
- Fixed status filtering issues in booking admin tables.
- Changed some PHP array declarations to bracket shortform.
6.6.1
- fixed some initial phone number display issues overlapping country selectors on front-end
- fixed fatal error in settings page
6.6
- Added communications consent. Ask or require users to consent to being contacted, with history of last acceptance or revocation accross all bookings/user (if admin has caps)
- Added international phone number input field and validation, see the Phone Numbers section on Settings > General
- Fixed bookings not showing in bookings table when in Multisite Global Mode
- Fixed scope filter saving issues in booking/event-booking admin tables
- Changed default scope to ‘future’ for booking/event-booking admin tables
- Transitioned known booking meta keys from legacy to new format for storage, with plans to phase out support for previous format of x… for arrays, opting for _x|… instead (‘registration’, ‘attendees’, ‘coupon’, ‘booking’, ‘zoom’, ‘test’, ‘discounts’, ‘surcharges’)
- Updated countries list to include more translations, file-separated storage for optimal loading, and extra missing countries – Kosovans, we’ve migrated the KV country code to the more recognized XK code including migrating previous location data
- Moved admin-settings.js into external included file rather than inline.
- Transitioned phone numbers into real feature.
- Added example real-time input in settings.
- Added
EM_Booking->get_meta()
,EM_Booking->update_user_meta()
, andEM_Booking->get_user_meta()
. - Added
em_bookings_get_sql_orderby_joins
filter for custom ordering options. - Added
EM_DateTime::create()
for chaining quick dates. - Added
em_person_display_summary_bottom
action. - Updated intlTelInput to 23.0.8.
- Fixed selectize.js not allowing custom data- properties in non-multiple selectize dropdowns.
- Fixed JS modal.remove() JS error in list tables introduced in dev versions.
- Moved all JS UI setups (datepicker, time, tippy, phone, selectize) into
em_setup_ui_elements()
for easy reloading in containers. - Added
em_nouser_booking_details_modified
action. - Moved data privacy/consent into own classes folder with parent/child structure and standardized functionality between privacy/comms consent.
- Transitioned known booking meta keys into newer piped format to break up arrays rather than underscores including (registration, attendees, coupon, booking, zoom, test, discounts, surcharges).
- Fixed some display issues on view person bookings admin page.
- Fixed PHP warnings on empty graphs in booking dashboards.
- Fixed empty graph data when viewing booking data as event admins without manage_others_bookings capabilities.
- Added more WP_Screen compatibility on front-end in case other plugins load template.php but not WP_Class which results in a fatal error.
- Fixed backend events with bookings admin tables linking to front-end.
- Fixed …
Screenshots
Innovative responsive calendar with rings to show eventful dates, colored by category, clickable to expand more event information. Completely customizable event widgets/blocks and shortcodes. Beautiful event pages which can be completely customized via our settings page. Share your events to popular calendar clients. Display information about your location in widgets, blocks and shortcodes too. Full-featured statistics and insights into your ticket sales via multiple graph types, including comparison and stacking. Easily skip to the future with our new calendar navigation and search filters. Easy-to-use search filters, whether on the phone or desktop. Search for events and locations within a search radius using Google geo searches. Intuitive search UI for your visitors. QUickly switch between search views. View your events on a Google Map, filter with searches. Multiple calendar styles, fully responsive according to the width of the calendar. Responsivve way for mini-calendar to intuitively show dates with many events within a quick glance. Responsive lists that adapt to the size of its containing content. Clean forms for submitting and managing events, as well as booking events for users. Dashboard graph widget for quick review of your event bookings with tons of meaningful data views. Grid view for displaying your upcoming events at a glance
Installation
Events Manager works like any standard WordPress plugin, and requires little configuration to start managing events. If you get stuck, visit the our documentation and support forums.
Whenever installing or upgrading any plugin, or even WordPress itself, it is always recommended you back up your database first!
Installing
- If installing, go to Plugins > Add New in the admin area, and search for events manager.
- Click install, once installed, activate and you’re done!
Once installed, you can start adding events straight away, although you may want to visit the plugin site documentation and learn how to unleash the full power of Events Manager.
Upgrading
- When upgrading, visit the plugins page in your admin area, scroll down to events manager and click upgrade.
- WordPress will help you upgrade automatically.
Upgrading from version 4 to 5
Please read these instructions.
FAQ
See our FAQ page for helps with Events Manager – Calendar, Bookings, Tickets, and more!
Reviews
Contributors & Developers
“Events Manager – Calendar, Bookings, Tickets, and more!” is open source software. The following people have contributed to this plugin.
Contributors“Events Manager – Calendar, Bookings, Tickets, and more!” has been translated into 30 locales. Thank you to the translators for their contributions.
Translate “Events Manager – Calendar, Bookings, Tickets, and more!” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.