| Feature | Description | |
|---|---|---|
| 📆 | Events | Public, private, draft & recurring events with daily/weekly/monthly/custom recurrence |
| 🎫 | Bookings & RSVP | Custom booking forms, seat management, optional approval, waiting list |
| 💳 | 16 Payment Gateways | Stripe, Mollie, PayPal, Braintree, SumUp, Opayo, and 10 more |
| 👥 | Memberships | Recurring subscriptions, content protection, PDF membership cards |
| 🗺️ | Maps | OpenStreetMap integration with clustered markers |
| 📅 | Calendar | Interactive calendar widget with month navigation |
| 📧 | Mail queue, newsletters, scheduled reminders, SMTP support | |
| 🔧 | 200+ Placeholders | Full control over every piece of output |
| 🧩 | 68 Shortcodes | A shortcode for every use case |
| 🛡️ | GDPR | Data requests, secure view/edit links, automated cleanup |
Events list, calendar, and location map — all generated by shortcodes:
The dyndata engine shows and hides form fields in real time based on visitor selections:
Always back up your database before upgrading, just in case.
1. Download events-made-easy.zip from the latest release
2. WordPress admin -> Plugins -> Add New -> Upload Plugin
3. Activate -> done!
If the file is too large for the upload form, use FTP/SSH to extract the zip into /wp-content/plugins/events-made-easy (remove the old files first).
After activation, an Events menu appears in your admin sidebar with 19 dedicated pages for managing events, locations, bookings, members, templates, and more. You can also add events and calendars using sidebar widgets.
Important: EME creates a special "Events" page on activation. Don't change it, don't use it in menus, don't delete it. EME uses it internally for rendering events and processing payments.
| Shortcode | What it does |
|---|---|
[eme_events scope="future" limit="5"] |
List upcoming events |
[eme_calendar full=1] |
Interactive month calendar |
[eme_locations_map] |
OpenStreetMap with all locations |
[eme_add_booking_form id=42] |
Booking form for a specific event |
[eme_filterform] |
Search & filter form for events |
[eme_mybookings] |
Logged-in user's bookings |
[eme_add_member_form] |
Membership signup form |
[eme_countdown id=42] |
Countdown timer to an event |
68 shortcodes total — see the full reference
Stripe · Mollie · PayPal · Braintree · SumUp · Opayo · Worldpay · Payconiq · Instamojo · Mercado Pago · Fondy · FirstData · Bancontact/Wero · Webmoney · Offline
No fees from EME. Free events skip payment entirely.
Visitor Validation Person record
fills form -> (16 checks) -> + booking created
|
Event day Reminders Payment via
QR check-in <- (automated) <- chosen gateway
|
Emails sent Auto-approved
(PDF ticket) <- (or manual review)
Full feature list
- Public, private, draft and recurring events (daily/weekly/monthly/custom)
- Location management with addresses, coordinates, and OpenStreetMap
- Categories, holidays, and custom fields
- Copy events, CSV import/export
- SEO-friendly permalinks
- RSS and iCal feeds
- Sidebar widgets for event lists and calendars
- Custom booking forms with unlimited fields
- Dynamic fields (show/hide based on selections)
- Multi-price seat categories
- Waiting list (auto-switches when full)
- Booking approval workflow
- Discount codes (fixed, percentage, code-based, per-seat)
- CAPTCHA protection (built-in, reCAPTCHA, hCaptcha, CF Turnstile)
- Recurring subscriptions with payment tracking
- Content protection (gate pages/posts behind membership)
- Drip content over time
- PDF membership cards with QR codes
- Family/group memberships
- 16 payment gateways, zero EME fees
- Automatic payment reminders
- Cancel unpaid bookings automatically
- Offline payment support
- Mail queue with scheduling
- Newsletter functionality
- Per-event email templates
- Booking confirmations, reminders, cancellations
- PDF ticket attachments
- SMTP support with debugging
- People database with custom fields per group
- Groups for organizing contacts
- Volunteer task management per event
- Attendance tracking via QR code scanning
- 200+ placeholders for templating
- 68 shortcodes
- 40+ action/filter hooks
- REST API
- Conditional logic with
[eme_if]shortcode - Template system for reusable formats
- Multi-site compatible
- GDPR data request/view/edit via secure links
- Automated cleanup of old records
- Privacy-aware email handling
- Fully localized in German, Swedish, French, Dutch
- Compatible with qTranslate-XT and Polylang
- In-text language tags for multilingual content
Translations
Language files are in the langs/ directory.
To translate:
- Download Poedit (or any
.poeditor) - Open the
.pofile for your language - Translate the untranslated strings
- Save (Poedit compiles the
.moautomatically) - Submit a pull request with both
.poand.mofiles
Or contribute via the WordPress translation platform.
FAQ
See the FAQ documentation.
See CONTRIBUTING.md for guidelines.
GPLv2 or later. See LICENSE.



