Events Made Easy


Events Made Easy is a full-featured event and membership management solution for WordPress. Events Made Easy supports public, private, draft and recurring events, membership and locations management, RSVP (+ optional approval), several payment gateways (Paypal, 2Checkout, FirstData, Mollie and others) and OpenStreetMap integration. With Events Made Easy you can plan and publish your event, let people book spaces for your weekly meetings or manage volunteers and memberships. You can add events list, calendars and description to your blog using multiple sidebar widgets or shortcodes; if you are a web designer you can simply employ the placeholders provided by Events Made Easy.

Main features:
* Public, private, draft and recurring events with custom and dynamic fields in the RSVP form
* Membership management with custom and dynamic fields
* Volunteer management for events (using event tasks)
* Attendance reporting for events and memberships if the rsvp or member qrcode is scanned by someone with enough rights
* Page and post content protection through memberships or via shortcodes
* Drip content via memberships
* People and groups with custom fields per person
* PDF creation for membership, bookings and people info
* Membership card or booking ticket can be sent as PDF via mail automatically, with optional QR code to scan for attendance/payment info
* RSS and ICAL feeds
* Calendar management, with holidays integration
* Several widgets for event listings and calendar
* Location management, with optional OpenStreetMap integration
* RSVP bookings with custom fields and dynamic fields, payment tracking, optional approval, discounts
* Protection of forms with internal captcha, Google reCaptcha or hCaptcha
* Templating for mails, event lists, single events, feeds, RSVP forms, … with specific placeholders for each
* Lots of shortcodes and options
* Payment gateways: Paypal, FirstData, 2CheckOut, Mollie, Payconiq, Worldpay, Sagepay, Stripe, Braintree, Paymill, Instamojo, Mercado Pago
* Send mails to registered people, automatically send reminders for payments
* Automatically send reminders for memberships that are about to expire or have expired
* Mail queueing and newsletter functionality
* Mailings can be planned in the future, cancelled … and can include extra attacments
* Multi-site compatible
* Several GDPR assistance features (request, view and edit personal info via link; delete old records for mailings, attendances, bookings)
* Fully localisable and already fully localised in German, Swedish, French and Dutch. Also fully compatible with qtranslate-xt ( most of the settings allow for language tags so you can show your events in different languages to different people. The booking mails also take the choosen language into account. For other multi-lingual plugins, EME provides its own in-text language tags and takes the current chosen language into account.

Para máis información, documentación e foro de apoio visitar a sitio oficial .



Always take a backup of your db before doing the upgrade, just in case …
1. Upload the events-made-easy folder to the /wp-content/plugins/ directory
2. Activate the plugin through the ‘Plugins’ menu in WordPress (make sure your configured database user has the right to create/modify tables and columns)
3. Add events list or calendars following the instructions in the Usage section.


Após a instalación, Events Made Easy engade un menú de “Eventos” no nivel superior ao teu WordPress Administración.

  • The Events page lets you manage your events. The Add new page lets you insert a new event.
    Generic EME settings concerning RSVP mails and templates can be overriden per event.
  • A páxina Localizacións deixa engadir, eliminar e editar localizacións directamente. As localizacións son automaticamente engadidas con eventos se non presenta, mais esta interface déixate customizar os teus datos de localizacións e engadir unha imaxe.
  • A páxina Categorías deixa engadir, eliminar e editar categorías (se as categorías son activadas na páxina de Configuración).
  • The Holidays page is used to define and manage holiday lists used in a calendar
  • The Custom fields page lets you manage custom fields that can be used for events, locations, people, members, memberships and RSVP definitions
  • The Template page lets you manage templates for events, memberships, mails, pdf creation, …
  • The Discounts page lets you manage discounts and discount groups used in RSVP or membership definitions
  • The People page serves as a gathering point for the information about the people who booked a space for one of your events or for members personal info.
    It can also be used to add custom info for a person based on the group he’s in, so as to reflect the structure of an organization or just store extra info
  • The Groups page
  • The Pending bookings page is used to manage bookings for events that require approval.
  • A páxina Cambio de rexistro emprégase para mudar reservas dos eventos
  • The Members page is used to manage all your members (e.g. membership status, custom member info).
  • The Memberships page is used to define and manage your memberships.
  • The Countries/states page can be used to define countries and states (in different languages) for personal info in membership and RSVP forms
  • The Send mails page allows the planning, creation and management of mailings for events or generic info (many options possible)
  • The Scheduled actions page is used to plan automated EME tasks (like sending reminders, cancel unpaid bookings, newsletter)).
  • The Cleanup actions page
  • The Settings page is used to set generic EME defaults for events, payment gateways, mailserver info, mail templates, …
  • Fine-grainded configurable access control (ACL) for managing events, locations, bookings, members, …

Lista de eventos e os calendarios poden ser engadidos aos teus blogues por widgets, shortcodes e modelos tags. Ver a documentación completa no Events Made Easy Páxina de Axuda.

Preguntas frecuentes

Ver a sección FAQ do sitio de documentación.


4 de Novembro, 2021
It a really powerful plugin to manage events, including booking an (optional) payments. Alot settings, to customize it, to fit your own needs. And its not an crippled lite-version; it is a great free plugin 🙂 The support in the forum was quick and friendly 🙂
18 de Outubro, 2021
very good plugin really free. Needs time to understand how it works and to configure it but then works very well. I recommend it especially for clubs that want to have a functional registration system without spending too much.
17 de Agosto, 2021
Besides EME being an indispensable plugin, the support is beyond impressive
14 de Agosto, 2021
This plugin looked really promising. However yet again the plugin is too complicated and is trying to be too clever if you are looking for a simple event handler this is not for you. If you have no coding experience, which is why numerous people use WordPress then forget it. I am unable to provide a suitable recommendation this is the 7th event plugin I have installed 6 have not worked at all and this one I didn’t even attempt to go through, the documentation is also seriously lacking the developers make too many assumptions about the skill levels of the end user.
23 de Xuño, 2021
I am helping to develop a website for our local u3a association, which has over 80 activity groups. The combination of activities and frequencies mean there are well over 80 recurring events to manage. EME has allowed me to manage those events really easy. I had a couple of problems, mainly of my own making, with which I got really quick help from Franky. I identified a possible improvement to the plugin, to have a bulk action for extending recurring event end dates. Franky said he would develop it and I settled in for a long wait (from experience with other developers). Less than a day later the change had been made. I can highly recommend this plugin and am really impressed with the level of support.
Ler todas as 107 opinións

Colaboradores e desenvolvedores

“Events Made Easy” é un software de código aberto. As seguintes persoas colaboraron con este plugin.


“Events Made Easy” foron traducidas ao 7 locales. Grazas a os desenvolvedores polas súas colaboacións.

Traducir “Events Made Easy” ao teu idioma.

Interesado no desenvolvemento?

Revisa o código, bota unha ollada aorepositorio SVN, ou subscríbete ao log de desenvolvemento por RSS.

Rexistro de cambios

2.2.34 (2021/11/26)

  • Fix sending out reminders for approved bookings

2.2.33 (2021/11/24)

  • Allow member id to be imported too for CSV import of members (column: member_id). If the member_id already exists, that value will be ignored
  • Added filters eme_event_email_subject_filter, eme_event_email_body_filter, eme_generic_email_subject_filter, eme_generic_email_body_filter
  • Add groups, creation and modif date as extra columns for people
  • Fix bulk action to add people to a group
  • eme_countdown shortcode now shows the difference in days, not taking the hour into account
  • Fix undefined var when subscribing to a group
  • Fix undefined var when unsubscribing from a group
  • For sortable elements (like dynamic data fields), only allow sorting when clicking the sort image, this prevents issues on mobile browsers
  • Add eme_add_booking_form_prefilter so people can influence the placeholders already before being replaced
  • Reminders can be set per event for pending/approved bookings
  • Reminder days can be set to 0 for memberships, meaning to send a reminder the day the membership will expire (at midnight).
    The same goed for reminders for pending/approved bookings or tasks
  • Added event tasks (for volunteer signups per event). By default this is deactivated, so if you want to use this, go in the generic EME settings and set “Use tasks”
    The shortcodes [eme_tasks_signups] and [eme_tasks_signupform] have been created for this (see the doc)
    Reminders for tasks are configurable as well.

2.2.32 (2021/11/06)

  • In certain cases own javascript had also br-tags added, this caused javascript errors of course.
  • Allow immediate redirect to online payment gateway if only 1 gateway is selected for that event/membership.
  • Fix storing answers for members, it was a bug introduced in 2.2.29

2.2.31 (2021/11/04)

  • Fix subscribe with name/email to mailgroups

2.2.30 (2021/11/02)

  • Fix a weird php bug where array_map with extra arguments loses the array keys. This affected mainly the frontend submit plugin

2.2.29 (2021/11/01)

  • Allow all booking placeholders to be used as condition for dynamic fields (idem for members)
  • Fix email tracking (due to a typo, tracking was not done anymore)
  • Allow unfiltered html (except javascript) in some parts, as wordpress does for posts. This will be indicated.
  • Fix the display of a person’s birthdate/place in members overview

2.2.28 (2021/10/27)

  • Correctly move bookings to trash for future events if moving the corresponding person to trash
  • Fix showing the language in the countries overview
  • Add the translated strings for the select-windows (used for countries/states)
  • Added filters eme_insert_discount_filter, eme_insert_event_filter, eme_insert_location_filter, eme_insert_person_filter, eme_insert_group_filter, eme_insert_member_filter
  • The chosen setting for ‘Check waitinglist when seats become available’ was not being saved in the global options
  • Allow all payment gateway placeholders to be used as booking and member placeholders too
  • Fix 12:00 AM times for events (old bug in ExpressiveDate.php lib)
  • Use more resilient placeholder replacement regex
  • For Belgium: added Payconiq support
  • Added filter eme_insert_event_filter (there’s already eme_preinsert_event_filter, but this name is more logical)

2.2.27 (2021/10/14)

  • Documented [eme_person] shortcode
    [eme_person] parameter person_id can be overriden via a url param (using the person’s random id). This allows to create 1 page where you can show other people’s info based on their random id (so not easy to guess) from e.g. within an event. The param name is “prid”.
  • The eme_change_personal_info shortcode will detect if you’re logged in and immediately show the form if a linked EME user is found and the option “show_form_if_logged_in” is set to 1 or true
  • The eme_request_personal_info shortcode will detect if you’re logged in and immediately show the info if a linked EME user is found and the option “show_info_if_logged_in” is set to 1 or true
  • EME notices will no longer be shown to non-admin users
  • Fix updates for dynamic answers for family members when updating head-of-family (the same answers were taken for all family members, which was not the intention)
  • Take UTF-8 BOM into account for CSV import
  • Added mass-action to add discounts to groups
  • Added mass-action to change “valid from” date for discounts
  • Added mass-action to change “valid until” date for discounts

2.2.26 (2021/10/04)

  • Fix auto-removal of old expired members (if set in the GDPR settings)
  • Fix subscribe/unsubscribe mail forms

2.2.25 (2021/10/01)

  • Fix sending of booking mails (due to the quick release of the security issue, I didn’t get around to testing that too well, so made a typo)

2.2.24 (2021/10/01)

  • More nl2br tuning: don’t add a br-tag if the next line starts with a html closing tag
  • Optimize the code for extending recurrences
  • Fix some undef php variables in paypal legacy payment method
  • Allow generic placeholder to contain other placeholders in {..}, so generic placeholders that use {..} can contain event/location/membership placeholders
  • Security fix (XSS): fix an unsanitized field (name) in the custom formfields form (reported by Huy Nguyen via WPScan)

2.2.23 (2021/09/25)

  • nl2br fixes
  • Noscript-detection fixes

2.2.22 (2021/09/22)

  • Added event placeholder #_CANCELEND, returns the localized date+time until people can cancel a booking
  • Make sure to restore the schedule of the planned actions after deactivation/reactivation of the plugin
  • Add new timepicker for some cases (replaced the slider when creating events and for custom fields of type time_js)
  • Work around the bug that wordpress doesn’t allow “+” in the sanitize_email function
  • Some more nl2br where needed

2.2.21 (2021/09/12)

  • Detect if javascript is disabled for forms and show an error message if it happens (and not the form)
  • Cleanup action added to remove people in trash longer than X days
  • Correct payment buttons for memberships

2.2.20 (2021/09/08)

  • Added action hook eme_trash_rsvp_action, so you can hook into the removal (trash) of a booking
  • Add support for hCaptcha (since Google starts charching for reCaptcha). See
  • Make sure person phone gets updated if linked wp user updates his phone

2.2.19 (2021/09/01)

  • The option to check the waiting list when a seat becomes available is now also a global option
  • Fix #_AVAILABLEWAITINGLISTSEATS and #_AVAILABLESEATS to better account for booked seats on the waitinglist
  • Added #_BOOKEDWAITINGLISTSEATS (number of booked seats on the waiting list)
  • Allow current discount usage to be edited too when editing a discount
  • Added action hook eme_delete_rsvp_action, so you can hook into the actual removal of a booking too (not just trashing it)
  • Added #_CURRENCY and #_CURRENCYSYMBOL for memberships too
  • Added #_PRICE_INCLUDING_CHARGES (or #_GATEWAY_PRICE) as placeholder to be used above/below a payment button per gateway, so you can show the price with the charges for that gateway included
  • Fix the location add when creating an event again in the backend (caused by setting a default language but because of that the location dropdown showed to avoid multiple locations to be creted)
  • Update Mollie API to 2.37.1
  • Allow “NOW” as default value for custom fields of type date_js,datetime_js and time_js
  • Allow properties for discounts to be imported too

2.2.18 (2021/08/26)

  • In case a booking moves from one event to another, check the waiting list of the original event to optionally approve a booking
  • #_FILTER_LOCS was not showing the location dropdown in the filter form due to a typo, this has been fixed

2.2.17 (2021/08/25)

  • Show a small error message if a non-existing membership ID is used in the eme_add_member_form shortcode
  • You can now also use #_LASTNAME and #_FIRSTNAME in the email subscription form (not an obligation), and also in the email subscription confirmation mail
    If a logged-in user wants to subscribe, the info is readonly in the form and taken from the wp profile
  • Fix edit window for states/countries upon saving when also the option to “Stay on edit page after save” was set
  • Fix slug-duplication check/warning in EME options
  • Fix booking mails for pending bookings on waiting list
  • Only add person to group for a membership (if configured to do so) if the member actually paid
  • Added the option to automatically take a booking from the waiting list when seats become available for an event
  • Added aria-label for input selects/dropdowns
  • Support language tags under the form “[:ll]text[:]” (the default in qtranslate-xt)
  • If activating the option to disable wpautop, EME replaces it by a function that replaces carriage returns by br-tags in a smart way

2.2.16 (2021/08/16)

  • Fix CSV export of bookings with people custom fields
  • Fix discount and limits for groups/members
  • When a person subscribes to “all” groups, add them to every group designated as “mail only”
  • Be more strict in length of subject when sending mails (wordpress doesn’t catch db length issues, so it seems to be an error but one can’t trace it back)

2.2.15 (2021/08/11)

  • Fix some placeholder matching that accidentally got too strict

2.2.14 (2021/08/10)

  • Fix #_DYNAMICFIELD{xx} placeholder for members and bookings
  • Show person language and allow to change it
  • Start supporting language tags under the form “{:ll}text{:}” (with ll a 2 or 3-letter language code) no matter which plugin is installed. Supports the “lang=ll” query param or the “/ll/” url notation
  • Added a filter (eme_language_regex) to change the url language regex detection if done by EME itself and not ok
    The default regex is ‘[a-z]{2,3}’, matching 2 letter and 3 letter lannguage notations
    This also influences the format of the language tags, so normally you don’t need to change this
  • Mass action added to update language for a number of people in one go
  • Make sure members table gets created for new setups

2.2.13 (2021/07/31)

  • Show more discount/payment columns in member overview
  • Added all zero-decimal currencies to the regular currency list
  • Added filter eme_payment_gateways, which allows you to change the payment gateways array (and also thus change the order gateways are shown in the payment form)
  • Stop supporting IE for the dynamic fields/price
  • Pending members are removed based on creation date alone, not start/end date (if configured to do so in the membership)
  • Fixed sql for members or people in dynamic groups (in the new style, everyone was included)
  • Added cli_mail.php, to be able to pipe mail via php-call to this script to a defined EME group
    To use this in e.g. postfix:
    1) in /etc/postfix/transport, add your email you want to forward to the group and a custom postfix transport. E.g.: my-custom-transport:
    2) After that, compile the file (postmap /etc/postfix/transport)
    3) Define that custom transport in /etc/postfix/
    my-custom-transport unix – n n – – pipe
    flags=DRhu user=www-data argv=/usr/bin/php -q /path/to/wp-content/plugins/events-made-easy/cli_mail.php -d ${recipient}
    4) reload postfix (postfix reload)
    5) For all options available to cli_mail.php, do “/usr/bin/php -q /path/to/wp-content/plugins/events-made-easy/cli_mail.php -h”
    (-f ${sender} and -d {$recipient} are typically used for postfix piping, but you can use other options too)
  • Added eme_bookings_report_link shortcode

2.2.12 (2021/07/22)

  • Fix members and people overview which shows all info if on page 0
  • Fix GDPR cleanup action (archiving) of old mailings
  • Fix #_CONTACTPHONE for events and memberships
  • Exclude selected rows when selecting people for deletion and choosing another person to transfer the bookings to

2.2.11 (2021/07/20)

  • Better code when updating a booking from the backend (payment status can now also be set when editing)
  • When transfering a member to another membership, take dynamic answers into account too (if possible)
  • You can transfer a memberships from one person to another person when editing the member
  • For family members, also copy the paid status from the main family account
  • Allow dynamic member and people groups to be edited (existing dynamic groups are incompatible, but will continue to work as before as long as you don’t edit these, in previous releases editing was prohibited so it doesn’t change in fact)
  • Add mass action to set massmail to Yes for multiple persons in admin backend
    (take gdpr into account hen you decide to change this of course)

2.2.10 (2021/07/14)

  • Fix a JS error in the console
  • Support Brazilian Real
  • Allow member transfer to another membership
  • Fix searching on event end date too (or between start/end) in bookings
  • Make sure that the result is considered ok if no mail is sent due to empty subject or body
  • Account for non-linked wp user in the cancel booking form (caused a php notice)

2.2.9 (2021/07/10)

  • Allow all attachments to be reused
  • Add an option that allows to remove the p-tags/br-tags that wordpress adds/replaces for event/location notes/excerpts
  • Added placeholder #_DYNAMICFIELD{xxx} for members and bookings, which works like #_FIELD but for dynamic fields added. Since these can be repeated multiple times, those answers will be separated by a carriage return or a br-tag
  • Added shortcode eme_members_report_link (see doc)
  • Added option to eme_attendees_report_link to be accessible via the frontend without needing to be logged in (nonce-protected and then the page needs to be password protected too)
  • Fix the reporting of approved/pending seats when clicking on Approved/Pending from the events overview and not being admin

2.2.8 (2021/07/04)

  • Added placeholder #_PAYMENTGATEWAYUSED for members and bookings, it returns the payment gateway that was used to make the payment
  • Added placeholder #_MEMBER_STATUS (returns “Pending”, “Active”, “Grace period” or “Expired”)
  • Make Stripe work again

2.2.7 (2021/07/03)

  • Hook some actions later into wordpress, after the theme custome filters are loaded too
  • Also reuse attachments when reusing a mail or mailing
  • Fix CSV booking export for custom fields (due to extra check they were no longer added)
  • Update remaining amount to pay if the price of an event has changed when updating a booking
  • More userfriendly Stripe payment methods
  • Added conditional placeholder #_IS_LOGIN_REQUIRED (returns ‘1’ is login is required to rsvp or the event is private, ‘0’ otherwise)

2.2.6 (2021/07/01)

  • Fix filtering for multiple custom fields (using shortcode eme_filterform) of type “event”
  • Show linked WP user correctly when editing a person
  • Membership evaluation was not working due to added code for discounts, corrected now
  • Add attachments to preview mails too if present

2.2.5 (2021/06/29)

  • Add membership discounts
  • Added bulk action to be able to extend recurrences until a new date
  • Also create wp user if adding member from backend if the membership is configured like that
  • Add possibility to copy recurrences (just like events)
  • Add possibility to search for a name in the recurrences admin pane too
  • #_IS_CONTACT or #_IS_AUTHOR_OR_CONTACTPERSON failed to return the expected value if the event contact person was indicated as “event author”
  • Allow category descriptions to contain html
  • Better removal of yoast headers by EME itself for the special events page

2.2.4 (2021/06/18)

  • Fix translation of recurrence table header, so CSV and Print show too
  • When the contact or author filter is deselected, make sure we no longer filter for an non-existing person
  • Stopping a member could result in all members being marked as expired

2.2.3 (2021/06/15)

  • Decrease size of EME by 50% removing unneeded files for mercadopago (saves about 25MB)
  • Fix image removal for locations
  • Update mercadopago lib to 2.3.0
  • Make sure #_SINGLE_EVENTPAGE_EVENTID returns the event id, not the slug
  • Fix #_EVENTFUL* filter placeholders
  • Fix filtering for custom fields for events/locations/calendar
  • Fix scanning qrcode for event attendance (the total was marked as 0)

2.2.2 (2021/06/10)

  • When searching for an existing person, also search for lastname/firstname in the wrong order (if not empty)
  • Added filter placeholders #_FILTER_CONTACT and #_FILTER_AUTHOR together with the filters eme_filter_searchfilter_contact and eme_filter_searchfilter_author, which both take an array of options as argument (similar to wp_dropdown_users_args, but only 1 array as argument, this allows you to e.g. add the exclude param to the options so you can exclude certain WP users from the list)
    #_FILTER_CONTACT{xx} and #_FILTER_AUTHOR{xx} are the same as #_FILTER_CONTACT and #_FILTER_AUTHOR, the ‘xx’ just influences the search label shown in the dropdown box
    #_FILTER_CONTACT{xx}{yy} and #_FILTER_AUTHOR{xx}{yy} are again the same but the second params influence an exclude list (comma separated) of wordpress IDs you don’t want to show in the dropdown list. While this exclude list could also be handled via the filters eme_filter_searchfilter_contact and eme_filter_searchfilter_author, it is easier to do this way (and more likely to be used)
  • The body of the mail sent to change your personal info has been changed to a new default setting (reason is that now only 1 mail is sent for all matching emails, instead of 1 mail per matching email). Go in the EME settings to check the new value and change to your liking.
  • The setting “full name” has been changed to a new default “#_FIRSTNAME #_LASTNAME”. Go in the EME settings to change this after the upgrade if not wanted
  • Support #_CONTACTDISPNAME and #_AUTHORDISPNAME if the event contact/auther (a wp user) is not linked to an EME person
  • Allow #_CONTACTLASTNAME (and FIRSTNAME) and also #_AUTHORLASTNAME (and FIRSTNAME) if the event contact/author (a wp user) is not linked to an EME person
  • Support setting different payment methods for Stripe
  • The address1/2 fields for family members were not copied from the main family member for membership signup

2.2.1 (2021/06/05)

  • If the event contact or author (or membership contact, they are all WP accounts) is linked to an EME person, you can now use #_CONTACT (or #_AUTHOR) followed by any person placeholders (e.g. #_CONTACTNAME, #_CONTACTADDRESS1, all people placeholders preceded by “AUTHOR” or “CONTACT”) to show EME info from that person
  • Added person placeholder #_FULLNAME to return the fullname of a person
  • Added generic placeholder #_WPID to return the wp id, this can then be used in included eme_events shortcodes (if e.g. you want to filter on contact id based on current logged in user)
    Also added the person placeholder #_PERSONWPID, to optionally return the wp id of the person you’re looking at via [eme_people], so you could then show a list of events where that person is contact for (as an example)
  • Fix ++YYY-MM-DD scope so it really searches for days greater than, not starting from the beginning of the mentioned day
  • Fix sending event related mails (bug introduced in 2.1.117)
  • Fix #_FIELD{xx} for files for rsvp/people/member answers (was new in 2.2.0 but not working as expected)
  • Make sure events show on the last day too in the calendar if the end time was smaller than the start time (was a new bug in 2.2.0 due to switching over from separate date/time columns to 1)

2.2.0 (2021/06/02)

  • The date and time format can now be set differently for the EME backend, if the wordpress settings don’t suit you. For frontend settings (replacements in placeholders) this can always be tuned via the existing placeholders and options
  • Since #_MEMBER_QRCODE and #_ATTENDANCE_QRCODE (which name is poorly chosen anyway) can’t conflict, both have been renamed to just #_QRCODE (the old placeholders still work)
  • Event RSVP tab layout improvements
  • Add unauthenticated and authenticated attendance format message options when accessing an event attendance url (typically the qrcode)
  • Add unauthenticated (authenticated was already there) attendance format message options when accessing an member attendance url (typically the qrcode)
  • Added event conditional placeholders #_IS_REGISTERED_PENDING (returns 1 if logged in and registered and user has 1 or more pending registrations for the event) and #_IS_REGISTERED_APPROVED (returns 1 if logged in and registered and user has no pending registrations for the event)
  • Added booking conditional placeholder #_IS_APPROVED (returns 1 if approved, 0 if not)
  • Added scope now–7d (same as +7d, but taking datetime into account)
  • Switch to datetime notation for event start/end, simplifying a lot of code in doing so
  • Change in database tables storing custom field answers (merge done for bookings, people, members, events, locations and memberships)
  • Allow more placeholders to be used in the form for changing personal info in the frontend
  • The shortcodes [eme_gdpr_approve], [eme_request_personal_info] and [eme_change_personal_info] now check the url of the page for the parameter eme_email. If present and a correct email, it will be used to prefill the email field for those forms
  • Document the existing shortcodes [eme_request_personal_info] and [eme_change_personal_info] (documentation existed, but was not visible in the doc menu tree)
  • Memberships now have the notion of family relationships (where only the main family member will be charged and get reminders, the rest are added as related members)
    #_FAMILYCOUNT and #_FAMILYMEMBERS are new membership placeholders that allow to ask how many family members there are and where the data should be rendered in the form.
    The membership defnition has an extra new setting (“Family Member Form”) that gets repeated for each family member and rendered in place of #_FAMILYMEMBERS
    You can also use #_FAMILYCOUNT and #_FAMILYMEMBERS as placeholders in the mail for new members then.
  • People now also have the notion of family relationships, but it is only a notion (nothing relates to this, but you can use it to indicate families)
  • Initial code added for event tasks (but not operational yet)
  • Added personal placeholders #_BIRTHDATE and #_BIRTHPLACE (and the correspondig fields when editing a person)
  • Fix multiple file upload for bookings/members
  • Allow #_FIELD{xx} for files too when showing booking answers (showing the file upload html link)

2.1.122 (2021/05/07)

  • Fix cancel date check introduced in 2.1.121

2.1.121 (2021/05/06)

  • When canceling a payment, make sure to only cancel the bookings that are still allowed to be cancelled. The form already only showed those, but upon submit all bookings linked to the payment were still deleted (even if already in the past)
  • Improve the search for events when moving a booking (by default only show future events)
  • Fix person names when subscribing for an event. If a person with matching email already existed, that person would’ve been taken and not the latest one.
    This was due to a problem created in 2.1.119

2.1.120 (2021/05/03)

  • Show a warning if a dynamic data condition is already used in answers when editing an event or membership
  • Simplify the dynamic data condition form a bit when defining events or memberships
  • Add #_DYNAMICDATA automatically if not present in the format but dynamic data conditions are defined
    This was already happening for #_SUBMIT and #_CAPTCHA placeholders too and helps people to make less errors when defining a form format
  • Allow reorder in dynamic data conditions for events and memberships
  • Add people address info also in member overview (hidden by default)

2.1.119 (2021/05/01)

  • Added the option to define a VAT percentage globally or per event or membership.
    Also added placeholders for events, bookings, memberships and members:
    “1 year 3 months 2 days 3 hours 1 min 5 seconds” or (if e.g. the differences for year and month are 0) “2 days 3 hours 1 min 5 seconds”
    Also, if you want own formatting: #_DATETIMEDIFF_TILL_START{xx} and alike can be used, with xx being a php date interval format (see )
  • Added placeholder #_DATETIMEDIFF_START_END{xx}, to indicate the date/time diffeence between start and end, with xx being a php date interval format (see )
  • if the booking is paid for after entering a partial payment and the event is not set to automatic approve, send out the paid mail
  • Fix unsub from email groups if the name of a person in EME is not empty
  • Fix #_INVITEURL{xx} in rsvp mails when you want to invite the booker for another event
  • The attendance qrcode for events is now scannable also when not logged in, people then just see if it is paid for or not (like the qrcode for members in fact)

2.1.118 (2021/04/21)

  • Copy the location custom field answers too when copying a location
  • Correct the event sanitizing function so it keeps working for the emefs plugin too

2.1.117 (2021/04/17)

  • Fix new mail actions from bookings and members admin menu
  • Don’t queue mails with empty subject and body, they don’t get sent anyway
  • For invite-only events, the RSVP form now also takes the lastname/firstname from the invite url if present (and then it can’t be modified in the rsvp form)
  • Fix delete of custom formfields
  • Treat a string consisting of only whitespaces as an empty string where appropriate in the admin setting for events and mail templates (and so take the default value if needed)
  • Create a mailing entry for newsletters too, so you can see the statistics of it and cancel it as well
  • Validate event or location externam url before redirect
  • The eme_if conditions incsv and notincv now allow for “,” and “+” in their values, so you can search for “string A or string B” (string A,string B) or “string A and string B” (string A+string B) in the mentioned tag
  • Copy the event custom field answers too when copying an event

2.1.116 (2021/03/29)

  • New mail actions from bookings and members admin menu (to be able to send bookings/members related mails directly from there using templates)
  • Added Stripe refund
  • Fix a newly introduced db setup issue in 2.1.115 that would empty the title column in templates and type in formfields if you skipped some EME versions and needed a db update

2.1.115 (2021/03/21)

  • Make sure to add recaptcha and submit placeholders correctly for eme_subform and eme_unsubform shortcodes if not present in the format
  • Fix an undefined var
  • When deactivating and then reactivating, make sure the EME schedules are planned again too

2.1.114 (2021/03/12)

  • Correct a wrong split-statement and a typo when adding people to groups after rsvp submit

2.1.113 (2021/03/12)

  • For future versions, #_SUBMIT and #_CAPTCHA (or #_RECAPTCHA) will be added to forms if not present but needed. This makes life a bit easier for beginning users
  • Removed the 3 options that allow to set category separators, only 2 filters remain: eme_categorydescriptions_sep_filter and eme_categories_sep_filter
  • Added filter eme_validate_event_filter with 2 options (event and string with existing validation issues), to allow adding own validation rules for the created event.
    If the output of the filter is not empty, the event will not be inserted in the db and the returned text will be shown as a validation error instead.
  • Allow multiple group selection for rsvp/membership-adding a person to a group

2.1.112 (2021/03/05)

  • Added event placeholder #_IS_REGISTERED_PAID, to check if a logged-in person is already registered and has no unpaid bookings for this event
  • Added wysiwyg for per-event mail templates
  • The option to skip payment options per event was not checked when re-editing an event
  • Add support for Google reCAPTCHA

2.1.111 (2021/02/26)

  • Allow expired members to sign up again too: this will change nothing in the db but they will be redirected to the membership payment page
  • Update Braintree API to 5.5.0
  • Update Stripe API to 7.75.0
  • Update Mercado Pago API to 2.2.1
  • Allow to skip payment directly after booking

2.1.110 (2021/02/16)

  • Correctly ignore mail count if the same tracker id arrives within a timeframe of 2 minutes
  • Add some hints for mail templates to inform people when some template will not be used.
  • Small maxlength fix for time-fields in events which would complain due to new jquery validation (if your wp settings cause the local time to be displayed in more than 8 chars only)

2.1.109 (2021/02/08)

  • Added “only_if_not_registered” and “only_one” options to the shortcode eme_add_multibooking_form
    The only_one option (default 0) – if value=1 – will cause a dropdown of the matching events to show, and not a select-box list.
  • Added “scope” option to the shortcode eme_add_multibooking_form (like for the eme_events shortcode)
  • Start using the jquery validate plugin in the backend, so we can jump to the specific event/location/membership tab that has a validation problem if that’s the case
  • Add pending bookings count to EME admin menu as a badge
  • Add “datetime (JS)” and “time (JS)” as formfield types
  • Lots of db cleanups, using the local date/time and never db date/time again (it works fine, but just too confusing to take into account multiple timesources)
  • Update select2 to 4.1.0-rc.0
  • Update dompdf to 1.0.2
  • More descriptive error messages upon import failure

2.1.108 (2021/01/30)

  • Fix the cancel specific booking per event functionality (when using #_CANCEL_LINK)

2.1.107 (2021/01/29)

  • Fix the cancel all bookings for an event functionality (e.g. when using #_CANCEL_OWN_LINK)
  • Added placeholders #_BOOKINGPDF_URL{xx} and #_MEMBERPDF_URL{xx} (with ‘xx’ being a template id) that allows you to generate pdf’s with booking/member info in them and mail that url to the person in question. If this placeholder is used multiple times with the same template (e.g. when you use it in “pending” and “approved” mail templates), the newest one remains and the older ones get removed. These placeholders can also be used in the booking thank-you message or the member signed-up template.
  • Make sure that the ticket PDF is also sent for pending bookings upon booking time if the setting is “at booking time” or “always”
  • Show mail subject in mailing overview too

2.1.106 (2021/01/25)

  • Fix mail tracking (it was not being stored in the db due to the new option)
  • Add database index to random_id in the mail queue table, to be more efficient for searching
  • Correct multivalue event field filtering in the filter form
  • Implement first/last read datetime for mails (and not just the first read datetime)
  • Added event scopes this_year–yesterday and YYYY-MM-DD–yesterday to show past events
  • Align some event payment options with newer code (removes 6 columns in the database for events: ‘use_paypal’,’use_2co’,’use_webmoney’,’use_fdgg’,’use_mollie’ and ‘use_sagepay’)
  • Ajaxify subscribe/unsubscribe/gdpr/gdpr approval forms
  • Shortcode [eme_change_personal_info] added, which allows people to change their own personal info. The form to change the info can also be configured in the EME settings (tab GDPR)
  • Some CSS id’s got renamed. While I tried to keep backwards compatibility: if you have custom CSS for the RSVP or membership forms, I advise to check your layout.
  • Added [eme_request_personal_info] as an alias for [eme_gdpr] (it is more than just for gdpr compliance anyway)

2.1.105 (2021/01/16)

  • Fix expiration reminders for members

2.1.104 (2021/01/14)

  • Remove the “always queue” option, now this is default when mail queueing is activated.
  • Store the person id or member id for rsvp or member mails, so you can reschedule properly if wanted
  • Allow the reschedule action on all queued mails
  • Add an option so you need to explicitly activate mail read tracking
  • Fix for: if the option to create a WP user upon registering is checked, we check if the email is not already taken in WP before accepting the booking if the booker is not logged in
  • WP id is stored with the EME person, so no need to store it again per booking.
  • Show all future events when trying to send event-related mails, not just the rsvp-enabled ones
  • The placeholders #_MEMBERNEXTENDDATE and #_MEMBERENDDATE also take expired into account now
  • Update Stripe API to 7.67.0
  • Editing people resulted in a copy of the person with the changes if lastname/firstname/email was changed

2.1.103 (2021/01/07)

  • Allow custom seo prefix for categories and locations as well
  • Correctly show relevant uploaded files in rsvp overview
  • Allow “0” for membership reminder mails too, and don’t send expiration reminderds for pending members
  • Make #ESC_TOTALSPACES return 0 for events with no space limit

2.1.102 (2020/12/30)

  • Fix some undefined vars and optimize code
  • Show relevant uploaded files in rsvp/people/members overview too

2.1.101 (2020/12/29)

  • Add an extra option to be able to change the page title for themes that don’t work using in_the_loop correctly (which seems to be a lot of themes …)
  • Fix some undefined var I introduced to respect the membership start date for fixed period membership if that start date is in the future

2.1.100 (2020/12/29)

  • If the option to create a WP user upon registering is checked, we check if the email is not already taken in WP before accepting the booking if the booker is not logged in
    This to avoid the creation of an EME user that is then not correctly linked to a WP user.
  • Update Braintree API to 5.4.0
  • Respect the membership start date for fixed period membership if that start date is in the future
  • Allow multiple event seo prefixes to be defined, so you can choose per event which prefix you like best

Os cambios máis vellos poden ser atopados en changelog.txt