Events Manager – Calendar, Bookings, Tickets, and more!
Events Manager – Calendar, Bookings, Tickets, and more!
Description
Events Manager is a full-featured event calendar, bookings, appointments, scheduling, and registration management plugin for WordPress ideal for everything from simple meetups to full-scale event planning. Built with flexibility, reliability and powerful features in mind.
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
- Build complex recurrence patterns with exclusion/blackout dates
- NEW Multiple timeslots within the day for events with advanced creation options
- Overlapping timeslots
- Buffer between timeslots
- 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
- NEW Multiple custom event types (Archetypes), such as Workshops, Events, Webinars, Appointments etc.
- Customize your labels, slugs and CPT names
- Enable or disable specific features for specific event archetypes.
- 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
- Move bookings to other dates/times
- 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
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.
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
Faq
Events Manager is built to handle a wide range of use cases, including:
- Managing events, meetups, workshops and webinars
- Scheduling appointments and recurring events
- Planning and promoting conferences or festivals
- Handling event registration, RSVP, ticketing and ticket sales
- Accepting bookings with optional payments
- Managing venues and multiple event locations
- Creating a public event calendar for your website visitors
See our FAQ page for helps with Events Manager – Calendar, Bookings, Tickets, and more!
Reviews
Awesome Plugin Thank You
By you4eea on November 10, 2025
Has everything I need, thank you, great job!
Does its job well
By Oliver Jusinger (jusol) on November 5, 2025
Sorry I didn't give you 5 stars although your plugin is the right choice for me. 4,5 would be fair.
My usecase was to have a (free) plugin for a small non-commercial site integrating well into my simple layout (I don't need shiny crafted designs which don't adopt to my site at all), but customize simple lists of future and past listings for different usecases (e.g. all events for the events page, just a few for the home page, an archive page), an informative event detail page having the same style as my other pages and a good management tool for events/locations including multiple dates for an event.
All this can be done with this plugin (great!), but configuration took some time. Of course it's not easy for such a plugin to integrate contrary usecases like "shiny" and "customized", I am glad it is possible to hard-code the layout. Integration of google maps seems to be broken, it can't locate any address (api key exists).
"Multiple dates" was broken first but the team quickly released a new version, thx!
All in all I can recommend the plugin to people with similar usecases - custom output, good event management. The UI is not impressive but does its job with sufficient ways to customize.
Useful and user-friendly
By itctraining on October 10, 2025
Events Manager is one of the reasons we use WordPress. It is simple to create events and keep track of participants when you use the registration option. Support is prompt and helpful. Results are accessible for screen readers. Thanks.
Be wary, documentation is not accurate
By Rbkhrlstn on October 8, 2025
I needed to import events from another plugin. Based on their documentation, which clearly stated that the import add-on was included in the Pro subscription, I upgraded to Pro. This was the only feature I needed. The add-on was not available to me. When I asked support why it wasn't available, they said I would need to upgrade to Pro+ to get that feature, even though their documentation stated otherwise. I was not willing to pay an additional $30 (bringing the total to $130) for a one-time use feature. They refused to refund even though their documentation was wrong.
I imported events using WP All Import, and they were successfully added to the correct table in the database.
Impressive work
By samvoyonsdonc on September 10, 2025
Seriously some things are hard cause this plugin is complicated as heck, but it does everything. And they keep making it better. Some features are really hard to find but once you do you are amazed. Use the forums a lot!! The documentation doesn't have everything.
Very helpful for us overall despite the occasional headache.
messy uninstall
By Laura (Shinteetah@gmail.com) on September 7, 2025
I didn't get very far into testing -- it didn't seem to have the display I needed -- but I noticed that after uninstallation it left hundreds of disused tables in my database. This makes me leery of other issues, so I will not be testing further.
A Powerful Tool with Some Rough Edges
By hakuna4matata on September 5, 2025
The Events Calendar is one of the best event plugins out there. Even the free version offers lots of features that cover almost everything a club or small organization might need. The support team is also very responsive — even for free users, which is a big plus.
There are, however, some weak spots. The Customizer integration is limited. In my theme (Kadence) I can normally set the featured image position globally, but with events I need to place it manually in each entry. The only alternative is to switch to the Classic Editor, but I prefer to stay with Gutenberg.
It would also help to have a modern Gutenberg block with sidebar options for formatting. Right now, there’s only a legacy block, and most design adjustments require custom CSS.
Despite these issues, The Events Calendar is still the top choice for managing events in WordPress. There is simply no other plugin that matches it in functionality.
Slim, beautiful, flexible
By lidere on September 2, 2025
I use it on my private site for keeping track of my personal events like appointments. It looks good, it works better than the other plugins I tried and I recommend it over the alternatives - and I tried many.
Once the categoriy colors are fixed it truly deserves five stars, but I rate it five already since I trust them to deliver this soon.
Great plugin
By Thierry D. (terrysxm) on August 27, 2025
This is a good plugin with a lot of options for configuration. The presentation of events is very good too, including the preview when you click on an event in the calendar. You can display events only related to the city of the organizer's location (I'm talking about the possible filter on a calendar) but I would have preferred the postal code, because imagine having several organizers (locations) in Paris, the best distinction would be the postal code to filter (75019 or 75001 or 75004 etc …). But it's still a very good plugin!
Nice, if you only need the Free Version
By Orios on November 11, 2025
First off, it is a flexibel plugin with a lot of potential.
For those needing only the free plugin and not using it for business critical functionality, i can recommend to try it.
So much for the good news.
If you start using it, there are lots of issues.
Pro support is as good as non existent. The developer is nowhere to be found (and propably just one guy). A guy named Angelo is trying to keep up appearance. But issues aren't being tackled by anyone knowledgable (or often enough anyone at all).
This is not only dissapointing, it is a serious business risk.
Any future update of any WordPress component, or any other party may disable your Events completely, without any guarantee that there is a developer that can or will solve the problem.
Changelog
7.2.2.1
- Fixed blank admin pages for some server setups (possibly PHP version)
7.2.2
- Fixed PHP notice in booking actions
- Fixed critical PHP error in rare cases when booking table settings are saved incorrectly
- Fixed timezone picker displaying default timezone after saving a single non-recurring event in event editor
- Fixed fatal error when creating new repeating events due to missing default time range
- Fixed recurring events not saving properly due to new time range selectors not being editable
- Fixed redraw issue with showing a hidden recurrences meta box and marked recurrences meta box as required to display in screen options
- Fixed JS error in time range picker when changing regular event to recurring
- Forced recurrence meta box to appear in editor regardless of screen options
- Fixed PHP error in some PHP versions due to accessing
$wp_filteras an array - Fixed potential duplicate/multiple time range slots shown on new recurrence set creations
- Fixed timeslot queries in
em_get_event()overwriting the global$EM_Eventobject with timeslot event version - Fixed time range editor not allowing multiple time ranges when in a newly added recurrence set (before saving)
- Fixed time range timeslot events not being correctly saved in repeating and recurring events
- Fixed
EM_Event::get_recurrence_days()not returning an array and causing fatal errors in some setups - Fixed recurrences not allowing “last of” monthly patterns which refer to “first”
- Fixed recurring or repeating events not properly saving initial timerange sets
- Added
set_status()methods to Timeranges, Timerange, and Timeslot objects - Fixed recurrence sets not saving event status to timeslots
- Optimized
has_timeslot()checks to avoid regenerating timeslot objects early before saving - Fixed timeslots saving without
timerange_id - Fixed timeslots not getting deleted with an event
- Fixed duplication or saving issues when event is a draft resulting in unsaved timerange data
- Fixed duplicating single recurrences not working
7.2.1
- Fixed calendars not showing events due to timeslot update in 7.2
7.2
- MAJOR – Added multiple time range and dynamic timeslot support for single and recurring events
- Event IDs can now be comprised of format
123:123where the:123represents a timeslot ID EM_Event->event_idnow supplies the full event UID, whereasEM_Event->get_event_id()supplies just the numeric event ID- Fixed default option for em_get_option() not being used when defaulting to get_option()
7.1.7
- Fixed PHP
_load_text_domainwarning since 7.1 - Fixed PHP fatal error when viewing events page with certain settings combinations (e.g., title rewriting disabled or subsite events shown on the mainsite in MS global mode)
- Fixed location pages not working if the location slug contains the event slug (e.g.,
eventsandevents/locations)
7.1.6
- Fixed admin menu navigation issues between EM admin pages where page=events-manager-* in the URL, due to new archetypes feature in 7.1
7.1.5
- Fixed missing event list items due to change in 7.1 event_type ‘event’ to ‘single’
7.1.4
- Fixed PHP warning for including a file intended for 7.2 update.
7.1.3
- Fixed new archetype data not being added to wp_postmeta for previously created events,
- Fixed edit booking links,
- Fixed view/edit booking page triggering AJAX instead of page reload,
- Fixed adding attendees whilst editing a booking showing attendee summary instead of the edit form (Pro inherited feature fix)
7.1.2
- Fixed issues with displaying newly created locations in listings due to eventless state since 7.1
- Fixed pagination issues for locations since 7.1
- Fixed formatting settings tab hiding formats settings text boxes in super advanced mode since 7.1
7.1.1
- Fixed events, locations and archetypes not using gutenberg when EM_GUTENBERG is set to true
- Fixed capability issues preventing repeating events from being edited
- Fixed JS validation preventing dashes being used in new custom archetypes
7.1
- MAJOR – Rewritten custom posts architecture to introduce Archetypes; create multiple event CPTs running off Events Manager infrastructure with individually customizable settings (formats, enabled/disabled features, etc.)
- Added functionality to rename labels and CPTs of main event CPT and locations
- Changed event_type single ‘event’ type to ‘single’ to avoid confusion with CPTs
- Added fix and warning for when location Google coordinates aren’t originally saved and location editor is reopened, prompting user to re-save with updated coordinates
- Fixed pagination errors when events list default scope is selected as ‘all’
- Added new event list scope default option, used as base scope for shortcodes, widgets, and functions outside the events page (found on settings page)
7.0.5
- Improved installation/upgrade logic to allow users to re-trigger
dbem_versionupgrades from 6 to 7 without duplicating recurrence set data. - Fixed confusing redirect when converting individual repeated events to recurring events—now correctly redirects to the converted event.
- Added
EM_Event->is_repated()and$include_repeatedboolean param toEM_Event->is_recurring()to differentiate between repeated events and instances of recurring events. - Fixed image display issues for recurring events on event lists.
- Fixed orphan removals for Multisite installations.
- Fixed date-based event queries failing due to new timezone-relative search features in EM 7.
- Added short circuit to prevent current events from showing as past events in the admin menu so that recurrences appear correctly.
- Fixed front-end editor showing recurrences instead of the main recurring event in the admin events list.
- Fixed fatal error when calling
EM_Event->get_recurrence_description()on a recurrence. - Fixed JS error occurring after a successful booking.
- Fixed and mitigated issues where broken event data in the
wp_em_eventstable (e.g., null dates) prevented saving that event in the admin area. - Fixed buggy behavior including false positive datepicker validations when saving a recurring event with primary recurrence set to an “On” frequency.
- Fixed minor PHP warning when RSVP is disabled in the admin settings page.
- Added location duplication feature.
- Added automatic disabling of event and location duplication via third-party plugins (Yoast Duplicate Post, Duplicate Pages, and Copy & Duplicate) to prevent data breakage.
7.0.4
- Fixed 3 security vulnerabilities reported by Muhammad Yudha and @mikemyers via WordFence. Update strongly advaised.
- Fixed pagination errors introduced in 7.0.3.
- Fixed potential collation issues with DB tables and added more meaningful errors when saving index tables so admins see clearer error messages.
- Tweaked installation and update process to schedule DB updates via
wp_cronfor WP-CLI and auto-updates, rather than relying on a dashboard page load. - Fixed uninstall fatal error caused by the new
recurrencestable introduced in v7.
7.0.3
- Fixed code to prevent fatal error in some instances where users run a widget.
- Added additional CSS selector/detector to booking form JS dynamic loading to detect waitlist forms.
- Changed uploader to initialize on
initso that multisite global options are applied. - Moved
EM_MS_Globalsout ofevents-manager.phpinto its own class file. - Fixed bug in multisite global tables mode showing faulty recurrence set records in the editor.
- Added recurring event recurrence description to events admin list.
- Changed default scope to ‘all’ for any post status other than ‘All’ or ‘Published’ in admin events list.
- Added
event_typesearch attribute forEM_Events::get(), accepting comma-separated list or array of event types to include. - Added
post_idaccepted boolean values (or'true'/'0') to include or exclude events with a post ID (essentially, include/exclude recurrences). - Fixed search form not working in shortcode using
has_searchdue to view container ID mismatches. - Fixed potential widget fatal errors.
- Added cache flushing when editing category colors or images to update cached pages throughout a site.
- Fixed
EM_Event->save()invocation trying to create a post even if it’s an event recurrence. - Fixed ability to add higher than
event_status1 and addedem_get_post_statusto allow custom post statuses in WP admin. - Fixed end-of-month jumps when
empty_monthsis set to false. - Changed newly added
empty_monthsshortcode prop totrue, which mimics previous calendar behavior. - Fixed orphaned events remover in admin tools incorrectly including new recurrences as orphaned events.
- Fixed conversion issues from repeated to recurring events, now prompting re-conversion for upgraded event installs.
7.0.2
- Fixed recurring event editor UI display issues on front-end for recurring/repeated event patterns.
- Fixed bbPress fatal error.
- Fixed ticket start/end times being ignored due to new overriding ticket settings.
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_timezoneattribute. - Added support for searching in timezone-relative scopes for events using the
timezone_scopeattribute. - 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_headerattribute. - Added
setStartOfMonth()andsetEndOfMonth()toEM_DateTime. - Added timezone display options in
EM_DateTime::getDate()andgetDateTime()functions. - Changed selectize JS to dispatch a
CustomEventobject from parent element withdetailcontaining 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_Selectizeand.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_Stylesout ofevents-manager.phpinto its own class. - Added
EM\Scripts_and_Styles::add_js_var()allowing for footer localization. - Added
em_wp_localize_script_footerallowing 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_typefield 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_SetsandRecurring_Setobjects 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 ineventstable. - Added
em_event_recurrencestable. - 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
emin dynamic asset loading. - Improved dynamic asset loading by pre-loading asset groups before firing
onloadevents. - 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_rsvpto detect RSVP being disabled during an event save process.
For changelog of 6.6.4.4 and lower, see the earlier reamde.txt.