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
- 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
Screenshots
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 28 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.
Changelog
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 PHP notices on bookings admin tables.
- Fixed $location_fields fatal PHP errors when loading maps and location-dependent event search queries.
- Added option to exclude taxes from subtotal in booking summary pricing.
- Added
EM_Bookings
search bybooking_id
. - Fixed
EM_Booking->can_rsvp()
occasionally providing incorrect result if number types are strings, as well as check to make sure booking is approved. - Added requirements check class.
- Added
events_manager_plugin_loaded
action for loading any EM-dependent plugins early on inplugins_loaded
. - Improved consent options including better
EM_Person
consent checks and a default to consented option if user already active (in development). - Fixed rows setting not getting saved.
- Fixed summary issues showing empty summary section, fixed typo in new option from last commit (in development).
6.5.2
- Fixed fatal error on dashboard with Charts widget enabled.
- Fixed ‘array_key_exists’ fatal error (not reproduced) on bookings dashboard in limited cases – pending further confirmation to reproduce/fix potential underlying issue.
- Fixed JS issues preventing event links from being clicked on the ‘events with bookings’ list table.
- Minor CSS fixes showing button outlines when clicked.
- Fixed rare calendar issue preventing future months from showing events.
- Removed all unnecessary query string params aside from yr/mo in calendar navigation links.
- Fixed calendar search trigger not working when default search is set to inline mode.
- Fixed rare selectize JS issue not being initialized properly due to jQuery firing before DOMContentLoaded.
- Fixed settings/tags/taxonomies having white as default color as opposed to the settings page default and also defaulting to #80b538 avoiding white-on-white display issues.
- Added ordering to savable filtering options.
6.5.1
- Fixed hard-coded naming of bookings table for SQL query affecting list table searches on WP installs with custom DB prefixes.
- Fixed PHP warning on bookings list tables.
- Fixed some default settings not saving properly.
- Added
em_bookings_table_get_item_limits
filter to add/modify custom limits, applicable to other tables such asem_transactions_table_get_item_limits
. - Fixed status filter not working in bookings admin table.
- Fixed fatal PHP error when grouping events in shortcode (bug introduced in 6.5).
- Fixed “Ticket Spaces” column not ordered due to naming conflict with
ticket_spaces
db field name. - Changed “Ticket Spaces” column key from
ticket_spaces
toticket_booking_spaces
, the “Ticket Spaces” column index is now “Ticket Capacity”.
6.5
- Added multi-array support for EM_Bookings_Table::get_booking_actions() allowing for separate sections of actions
- Removed em-bookings-action and em-bookings-action-X classes from booking actions links in preference of data- attributes and an em-list-bookings-row-action
- Added sortable ticket columns to bookings admin tables
- Improved bookings table search input allowing more search options, including user name and email
- Fixed bug where em_bookings_get_sql_conditions filter is called twice in EM_Bookings_Table::get_sql_conditions()
- Changed minimum PHP requirement to 7.0 due to use of shortcut array syntax, null coalescing and ternary operators
- Added sanitization/decoding options for shortcode format content due to security implications.
- Fixed bug in calendar widget preventing saving/loading on widget area.
- Added calendar_size option to calendar widget.
- Fixed PHP warning when calendar_size is undefined.
- Added medium calendar size options to widget and settings ddms (in development).
- Added .em-loading and .em-working (wrapper) classes for more cross-theme compatibility when loading something via AJAX.
- Moved .em-warning into scss.
- Removed legacy search form CSS from events_manager.css.
- Updated and rewritten EM_List_Tables to provide base table functionality for other data tables, support front-end and advanced ordering/searching capabilities.
- Updated Bookings and Event with Bookings tables to unify front/back-end, added new views (tickets, attendees), sortable columns, responsiveness and much more.
- Unified/standardized exporting of list tables to support exporting for any EM_List_Table-extended tables.
- Added #_BOOKING_UUID placeholder.
- Added EM_Bookings::get(), EM_Ticket_Bookings::get() and EM_Tickets_Bookings::get() search functionality with advanced ordering capabilities.
- Added EM_Events::get_accepted_fields() for SQL ordering detection.
- Transitioned out of jQueryUI sortable for booking tables to a vanilla JS alternative – Sortable 1.15.2.
- Removed all outdated tables in events-manager/admin/bookings folder.
- Added booking dashboard charts support for front-end with option to specifically enable/disable in settings.
- Added default calendar size option.
- Fixed calendar JS errors when switching months.
- Added custom event for modal opens.
- Fixed tippy regeneration issues due to uncontained calls to tippy().
- Fixed tooltips referencing external elements via the data-content attribute not displaying that content accordingly.
- Fixed privacy nag issues when editing bookings already made in the past before enabling privacy settings.
6.4.10.2
- added default calendar size option to settings page
- fixed bug in calendar widget preventing saving/loading on widget area
- added calendar_size option to calendar widget
- fixed PHP warning when calendar_size is undefined
- added shortcode format options due to security implications, see our docs for more info.
6.4.10
- ‘fixed’ false positive Avast vulnerability alert on browsers, caused by the minified EM js file
- added option to include minified or non-minified JS/CSS files in Advanced Optimization settings, JS turned off by default due to above errors
- fixed taxonomy images size display issues in admin area if too large
- fixed taxonomy colors not seeming being saved due to caching issues (now clears color cache upon save)
- added calendar_month_nav and calendar_nav args for calendars
- added future events only option for calendar widget
6.4.9
- changed escaping of HTML so that admins with unflitered_html cap can submit anything to settings or alternatively allows if EM_UNFILTERED_HTML is defined true
- fixed bookings graph views not comparing previous periods in some filter combinations, showing only the first period
- Fixed vertical scrolling issues with multidropdown mode (headings) on advanced search modals.
- Fixed hidden advanced search modal blocking trigger buttons from re-displaying advanced search on mobile view.
- Fixed #_EVENTTIMES_LOCAL and #_EVENTDATES_LOCAL not working when supplied JS formatting unless placeholder supplied beforehand without formatting.
- Fixed #_BOOKINGBUTTON issues with cancellation clicks.
- Fixed PHP error with errant redirected permalink with sites using legacy permalink structures.
- Added missing_creds error to OAuth API EM_Exception.
- Removed id query param from calendar nav links to improve SEO and reduce server load.
- Added calendar_nav_nofollow parameter for shortcode, allowing nav links to be nofollow.
6.4.8
- fixed XSS vulnerability in shortcodes we recommend updating if you allow guest event submissions and shortcdoes (props to WordFence Security for responsible disclosure)
- fixed permalink clashes for location/taxonomy ical links getting overriden by general events if their permalinks path are within the events subdirectory
- improved location search parameters to accept comma-separated values for filtering by multiple towns,countries,states,postcodes and regions, including exclusions
- added format value to events_calendar shortcode, [event_tags] and [event_tag] shortcodes
- added EM_UNFILTERED_HTML constant, which does not apply wp_kses_post to settings if user has ‘unfiltered_html’ capability
- fixed calendar navigation issues when supplying a format argument,
- fixed calendar navigation not persisting when using some new options such as calendar_preview_mode_date,
- fixed calendar property calendar_dates_height ‘auto’ value being ignored,
- fixed calendar show_search being ignored and not showing search bar above calendars in shortcode/php calls,
- fixed display issues for selectize in wp admin area
- fixed #_EVENTTAGSLINE showing ‘no categories’ message if empty,
- added ‘missing’ #_EVENTOFFICE365LINK placeholder
- tweaked category/tag shortcode to use em_get_ functions instead of directly invoking class
- fixed some situations showing incorrect URLS on login redirect_to rather than current page reload
- added telephone field type to booking form phone input field (should default to text if not enabled)
- fixed extra line breaks in bookings table actions dropdown
- fixed typo translation domain in “my bookings” page button
- added mail filters em_mailer_send_parameters (for all email methods) and em_mailer_wp_mail (for wp_mail)
- fixed aesthetic display issues in admin for selectize by loading all partials into .wp-admin selector context
6.4.7.3
- fixed pagination issues in non-event lists where PAGE is double url-encoded
- fixed array to string conversion PHP warning in calendars
- changed default event templates to be in a page format rather than post
6.4.7.2
- fixed buddypress menu issue introduced in 6.4.7 by re-adding commented-out line
- fixed advanced search options not showing up in some inline setting combinations
- fixed ‘hidden’ feature in 6.4.7 for saved searches via cookies defaulting to enabled (can now be re-enabled in wp_options -> dbem_search_form_cookies)
- updated 6.4.7 changelog with some missing changes
- added selectize options to em_options_select() function
- alpha feature – added phone field options to settings page if EM_PHONE_INTL_ENABLED is enabled (validation and more options on the way)
- moved welcome notice option to EM_Admin_Notices
- removed timthumb admin notice (outdated)
- fixed minor security vulnerability allowing multisite blog admins to dismiss Events Manager network admin welcome notice (reported by PatchStack)
- fixed medium security vulnerability allowing unauthorized users to modify booking statuses (reported by WordFence Security)
- fixed medium security vulnerability allowing stored XSS to be submitted when adding an event (reported by WordFence Security Team)
6.4.7.1
- Fixed JS error preventing customizing columns in bookings admin table
6.4.7
- Fixed PHP warning on my-bookings page.
- Fixed ticket selection dropdown not showing max spaces if
EM_Bookings::$disable_restrictions
is enabled (such as for manual bookings). - Fixed export and view setting overlays not working for booking admins table front-end after filtering once or more.
- Fixed issues with category/tag selection in Firefox.
- Added responsive options to the search form, allowing search form fields to stack on smaller screen sizes and also choose which main search options are hidden.
- Fixed localized times via #_EVENTDATES_LOCAL not working in AJAX calls such as searches or pagination
- Fixed cache PHP error in taxonomy objects if accessing a blank taxonomy
- Fixed 2 vulnerabilities, reported by PatchStack and WordFence
- added alternative dropdown view/flow for multiple selections on search form options
- updated selectize.js to 0.15.2
- fixed JS error preventing admin booking column selection in 6.4.7
- fixed issues when clearing search criteria on search form
- added support for counting search criteria using custom fields in search form
- added multiple actions for search form templates
- fixed advanced trigger not showing in modal mode if hidden inline mode settings are set to hide trigger
- added escaping for cookie-set EM notices for security hardening
- added url escaping (security precaution) for pagination links
- made improvements to ical permalinks to account for more complex permalink structures (such as date-based),
- added em_ical_output_content_summary and em_ical_output_content_location filters
6.4.6.4
- Fixed issues with multiple bookings and anonymous bookings that could rewrite the user name of the account making the booking with the latest user information.
- Fixed setting
is_available
toEM_Ticket
not having any effect due to protected visibility, which can cause unpredictable behavior. - Fixed form
.em-ajax-form
not outputting the correct notice box on success. - Added JS for
em-cancel
button to include custom data into AJAX via thedata-
attribute. - Added
em_my_bookings_booking_action_links
filter allowing for array insertion of action links for my booking page bookings.
6.4.6.3
- Fixed telephone field auto-enabling and ignoring EM_PHONE_INTL_ENABLED constant introduced in 6.4.6
6.4.6.2
- Fixed booking summary showing for free events despite setting set to no.
- Fixed edge cases where bookings do not get deleted properly due to unloaded ticket data.
- Fixed various PHP warnings.
6.4.6.1
- Fixed array meta key retrieval and saving issues introduced in version 6.4.6.
- Fixed first-time installation PHP errors and errant update notices.
- Added
em_booking_form_js_fields_change_match
filter allowing for programmatic listening of custom field changes to update the booking form summary section. - Fixed front-end display issues of bookings containing two ticket types.
- Fixed search form button not enabling after changing search params when advanced search is disabled.
6.4.6
- fixed fatal error caused by use of Pro function in settings page when Pro isn’t activated, bug introduced in EM 6.4.5
- fixed XSS vulnerability, disclosure to be followed
- fixed minor security vulnerability allowing anauthorized logged-in users to dismiss EM admin notices
- fixed OAuth errors (such as with PayPa) due to implementations not requring a scope credential
- fixed PHP Warnings in event editor frontend,
- fixed EM Notices appearing twice on booking forms in backend for manual bookings in Pro,
- fixed datetime offset issue when migrating old EM versions without timezones
- fixed file loading issues in some server edge case environments by providing absolute include paths in events-manager.php
- fixed multiple PHP Deprecated dynamic variables warning for PHP 8.2 by adding a $fields_shortcuts static map for short variable names, as well as storing unknown ‘dynamic’ variables into a dynamic_variables protected property array via __set() and __get() in EM_Object
- changed preference for $shortnames map of field shortcuts for $fields_shortcuts although still supported in EM_Object but preferable to use one static storage for performance improvements
- fixed issues with storage of booking and attendee/spaces meta data
- developers should be aware that storage of array meta data going forwards takes the format of _key|subkey for associative or _key| for sequential arrays, if you stored array keys with an underscore, or subkeys with underscores, please review EM_Object::process_meta() and EM_Booking::process_meta() and the function comments for a better understanding of what to do, as a future update may involve an SQL migration script to migrate old meta fields into the new format
- added sorting option on event search forms – enabled by default on first install, disabled for existing sites updating,
- added international phone number picker – BETA – requires activation via define(‘EM_PHONE_INTL_ENABLED’, true); in wp-config
- fixed PHP 8.2 warnings in tickets
- fixed ordering issues in attendee booking editor displays
- added ical output filters em_ical_output_content_description and em_ical_event_output_content
6.4.5
- added RSVP functionality (re-confirming a booking)
- add uncancel option so users can undo a cancellation if spaces still available
- switched my bookings page action links to a button dropdown rather than loose links
- fixed class static binding issues with EM_OAuth libraries causing problems in Zoom-enabled bookings
- fixed tippy dropdown button width issues
6.4.4
- fixed session wakeup issues for the EM_Booking object due to recent atomic tickets update,
- fixed EM_Tickets_Bookings and EM_Ticket_Booking possibly returning erroneous booking property
- added JS booking form helper functions em_booking_form_unhide_success, em_booking_form_enable_button, em_booking_form_disable_button,
- added backwards compatibility for booking ajax responses including the ‘result’ property rather than the new ‘success’ property
- fixed calendar navigation issues showing default calendar size according to responsive sizing even when using forced calendar_size=”large”
- fixed advanced filters button in calendar not working when search forms disabled in settings page
- moved advanced search trigger button html/php into separate template
- fixed view of calendar changing to default events list format if default search forms disabled in settings
- fixed error messages when updating Events Manager
- moved default view setting to events formatting section, outside of search form options
- fixed booking forms not always auto-hiding after submission is complete,
- fixed scrolling overflow issues for skeleton loaders on booking form
For changelog of 6.4.3 and lower, see the earlier reamde.txt.