Installation and basic usage

Installation

From GitHub

  1. Download the latest events-made-easy.zip from GitHub releases
  2. Go to Plugins → Add New → Upload Plugin
  3. Upload the ZIP file and activate
From the WordPress Plugin Directory (coming soon)

EME is working towards being listed in the WordPress Plugin Directory. Once available, you will be able to install it directly from Plugins → Add New in your WordPress admin.

WordPress plugin search showing Events Made Easy

Note: Your database user must have rights to create and modify tables. EME creates 25+ custom tables on activation for events, bookings, people, memberships, and more.

After activation — the Events page

Important: Upon first activation of the plugin, a new WordPress page is created (typically called “Events”). That page is very special. Don’t change it, don’t use it in your menus, don’t delete it. Just make sure the EME setting called “Events page” points to this page. EME uses this page to render any and all event or location info, bookings, maps, payments — anything. So again: don’t touch it, don’t use it in your menus, don’t delete it.

After activation, a new Events Made Easy menu appears in your WordPress admin sidebar with 19 dedicated admin pages:

WordPress admin sidebar showing the Events Made Easy menu with all submenu items

The most important ones to get started:

  • Events — create, edit, and manage all your events
  • Locations — manage venues with addresses and map coordinates
  • Categories — organize events into categories (these are EME categories, not WordPress categories)
  • Custom Fields — add extra data fields to events, people, or booking forms
  • Templates — define reusable format strings for event listings, emails, and more
  • Settings — configure everything: payments, email, maps, access control, and more

Create your first event

Go to Events Made Easy → Events. The “Add a new event” form is right at the top of the page.

  1. Event name — give your event a title
  2. Start and end date/time — these follow your WordPress timezone and date format settings (Settings → General)
  3. Location — click the Location tab to assign or create a venue. Enter an address and a map is generated automatically.
  4. Description — add event details in the rich text editor

Events management page showing the list of created events with dates, locations, and RSVP status

Recurring events

Need an event that repeats? Check the “Repeated event” checkbox in the sidebar to reveal recurrence options:

  • Daily — every N days
  • Weekly — pick specific weekdays
  • Monthly — by weekday or date
  • Specific days — pick individual dates from a calendar

Each occurrence is stored as a separate event in the database. You can edit individual occurrences, but once modified, they’ll no longer follow the recurrence rule.

Event visibility

  • Public — visible to everyone
  • Private — only visible to logged-in WordPress users
  • Draft — only visible to the event author and contact person

→ See also: Inserting events and locations

Display events on your site

Events are not WordPress posts. To display them on your site, create a regular WordPress page and add EME shortcodes. Here are the three essentials:

[eme_events] — event list

Displays a list of upcoming events. Add this shortcode to any page:

[eme_events scope="future" limit="10"]

Frontend page showing a list of upcoming events with dates, names, and locations

[eme_calendar] — interactive calendar

Displays a month-view calendar with events. Click a date to see its events:

[eme_calendar full=1]

Full-width calendar showing March 2026 with events highlighted on their dates

[eme_locations_map] — location map

Displays an OpenStreetMap with markers for all your event locations:

[eme_locations_map width="100%" height="400"]

Common shortcode options

OptionExampleDescription
limitlimit="5"Maximum number of events to show
scopescope="this_month"Which events: future, past, today, this_week, this_month, all, or a date range like 2025-01-01--2025-12-31
categorycategory="1,3"Filter by EME category ID (comma = OR, plus = AND)
template_idtemplate_id="3"Use a saved format template instead of the default layout
pagingpaging=1Enable pagination for browsing through results

→ See also: All 68 shortcodes | [eme_events] details | [eme_calendar] details

Customize the layout

Every piece of EME output is controlled by format strings that use placeholders. A placeholder looks like #_EVENTNAME or #_STARTDATE and gets replaced with actual data when the page renders.

Key placeholders

PlaceholderOutput
#_EVENTNAMEEvent title
#_LINKEDNAMEClickable event title (links to single event page)
#_STARTDATEStart date (formatted per WP settings)
#_STARTDATE{d/m/Y}Start date in custom PHP format
#_STARTTIMEStart time
#_LOCATIONNAMEVenue name
#_ADDRESSVenue address
#_MAPEmbedded map
#_NOTESEvent description
#_ADDBOOKINGFORMRSVP booking form
#_EVENTIMAGEFeatured image
#_AVAILABLESEATSRemaining seats

Where to set format strings

  • Globally: Events → Settings → Events tab — set the default format for single events, event lists, etc.
  • Per event: In the event editor, scroll down to override the format for just that event.
  • Via templates: Go to Events → Templates to define reusable format strings, then reference them in shortcodes with template_id="3".

Templates management page for defining reusable format strings

Tip: EME supports both attributes and custom fields for adding extra data to events. The plugin maintainer recommends using custom fields — they support dropdowns, checkboxes, date pickers, file uploads, and more. Attributes are still available but are limited to plain text.

→ See also: All placeholders | Format templates | Event formatting | Custom fields

Enable bookings (RSVP)

To let visitors register for an event:

  1. Edit the event and click the RSVP tab
  2. Check “Enable bookings for this event”
  3. Set seats (the maximum number of attendees; 0 = unlimited)
  4. Set a price (leave empty for free events)
  5. Make sure your single event format includes #_ADDBOOKINGFORM

RSVP tab in the event editor showing booking settings, payment methods, and email template sections

The RSVP tab also lets you configure:

  • Booking approval — require manual admin approval or auto-approve
  • WordPress login — require visitors to be logged in to book
  • Waiting list — automatically offer a waiting list when seats are full
  • Invitation-only — restrict booking to people with an invite URL
  • Booking form format — customize the form fields and layout
  • Email templates — separate templates for booking confirmation, approval, cancellation, reminders, and more

Visitors see the booking form directly on the event page:

Single event page showing event details and the booking form with name, email, seats, and comment fields

What happens when someone books?

  1. Visitor fills the form — name, email, seats, custom fields, discount codes
  2. Validation — anti-spam honeypot, nonce check, seat availability, email uniqueness, required fields
  3. Person + booking created — returning visitor? Existing record updated. New? Person created, optionally added to a group
  4. Payment (if price > 0) — redirect to Stripe, Mollie, PayPal, or 13 other gateways
  5. Payment confirmed — server-to-server webhook from gateway, booking marked as paid
  6. Auto-approved — if configured; otherwise stays pending for manual admin review
  7. Emails sent — confirmation to attendee (with optional PDF ticket), notification to event manager
  8. Reminders — automated emails sent X days before the event via the mail queue
  9. Event day — check-in via QR code on ticket, real-time attendance tracking

→ See also: Booking form shortcode | Registration form formatting | Multi-price events | Waiting list

Set up payments

Go to Events → Settings → Payments tab. EME supports 16 payment gateways out of the box:

Payment settings showing all available gateways: PayPal, Mollie, Stripe, Braintree, Worldpay, and more

Supported gateways: PayPal, Mollie, Stripe, Braintree, Payconiq, SumUp, Opayo, Worldpay, Instamojo, Mercado Pago, Fondy, FirstData, 2Checkout, Bancontact/Wero, Webmoney, and offline payments.

For each gateway:

  1. Expand its section and activate it
  2. Enter your API keys / credentials
  3. Optionally enable test mode first to verify everything works

No fees from EME — EME doesn’t charge anything on top of the payment gateway’s own fees. Free events skip the payment step entirely.

→ See also: Payment gateway placeholders

Configure email

Go to Events → Settings → Email tab to set up how EME sends emails.

Email configuration settings with SMTP options

SMTP is recommended over PHP’s built-in mail() function for reliable delivery. Example Gmail setup:

  • SMTP host: smtp.gmail.com
  • Port: 587
  • Encryption: TLS
  • Username: your Gmail address
  • Password: an app-specific password (required if 2FA is enabled)

EME provides separate email templates (in the Email templates settings tab) for every stage of the booking lifecycle:

  • Booking confirmation / approval / update / cancellation / deletion
  • Payment confirmation
  • Booking reminders (sent automatically X days before the event)

Each template supports all event, location, person, and booking placeholders — see the RSVP mail formatting documentation for the full list.

Test your setup via Events → Email management → Send Mails — there’s a built-in test mail feature.

→ See also: Mail notification settings

Going further

EME is a deep plugin with 10+ years of real-world event management built in. Here are some of the advanced features you can explore:

FeatureDescriptionDocumentation
Custom fieldsAdd unlimited fields to events, people, and booking forms (dropdowns, checkboxes, file uploads, etc.)Custom fields
Dynamic fieldsShow/hide form fields and adjust pricing based on visitor selectionsCustom fields
DiscountsFixed amount, percentage, code-based, or per-seat discountsDiscounts
MembershipsRecurring subscriptions, content protection, PDF membership cardsMemberships
Tasks & volunteersPer-event volunteer task signup with slot managementTasks
CSV importBulk import events, locations, people, members, and paymentsCSV import
MapsOpenStreetMap integration with clustering and custom balloonsMaps
Conditional logic[eme_if] shortcode for conditional content in templatesConditional tags
REST APIIntegrate EME with external systemsREST API
Multi-languageFull qTranslate-XT and Polylang supportLanguages
NewsletterScheduled mailings to groups with event-aware templatesNewsletter
GDPRData requests, view/edit via secure links, automated cleanupCompatibility
Hooks & filters40+ hooks for developer customizationHooks

Watch the full walkthrough: The plugin maintainer has recorded a 41-minute video tour covering installation, event creation, shortcodes, custom fields, RSVP, multi-price booking, payments, email, and settings.

Common pitfalls

  • Maps or calendar not working? Your theme must call wp_head() and wp_footer(). Without these hooks, EME cannot load its JavaScript.
  • “Form tampering detected”? A caching plugin is likely caching EME’s nonces. Exclude the event page from your cache.
  • Emails not sending? Configure SMTP in Settings → Email. Test with the built-in test mail feature.
  • Multi-price booking form broken? When using multiple price categories, replace #_SEATS with #_SEATS{1}, #_SEATS{2}, etc. in your booking form format.
  • Events not appearing in search results? Events are not WordPress posts — they won’t appear in the default search. See the FAQ for how to customize your theme’s search.php.
  • SEO plugin conflicts? Plugins like Yoast or The SEO Framework may add duplicate meta tags on event pages. See Compatibility for the correct filters to add.
Scroll to Top