Events Made Easy Frontend Submit


A simple plugin that displays a form to allow people to enter events for the Events Made Easy plugin on a regular wordpress page (called “Frontend Submit”).

Get The Events Made Easy plugin:


  1. Ensure the Events Made Easy plugin is installed and configured –
  2. Download the plugin archive and expand it
  3. Upload the events-made-easy-frontend-submit folder to your /wp-content/plugins/ directory
  4. Go to the plugins page and click ‘Activate’ for EME Frontend Submit
  5. Navigate to the Settings section within WordPress and change the settings appropriately.
  6. Put the shortcode [emefs_submit_event_form] on a regular page to display the form


How/where do I change the form layout?

The plugin will look for form template and style files in the following paths, in that priority:

  1. WP UPLOAD DIR/events-made-easy-frontend-submit/
  2. ./wp-content/themes/your-current-theme/eme-frontend-submit/
  3. ./wp-content/themes/your-current-theme/events-made-easy-frontend-submit/
  4. ./wp-content/themes/your-current-theme/emefs/
  5. ./wp-content/themes/your-current-theme/events-made-easy/

The overloadable files at this moment are:

  1. form.php which controls the html form. The default version can be found in the templates subdir.
    If you want to change the layout (the default most probably won’t suit you), copy this file in e.g. WP UPLOAD DIR/events-made-easy-frontend-submit/ and change the content there.
    Don’t change the default file in the templates subdir, it will get overwritten upon the next plugin update.
  2. style.css which controls the style loaded automatically by the plugin. The default version can be found in the templates subdir.

To allow for multiple forms to be used, you can add an option to the shortcode to indicate the name of the form template (default: form.php).
Example: [emefs_submit_event_form template=test.php]
If your template is not found in one of the 4 locations mentioned above, the default templates/form.php will be taken

What fields can I use in the form?

As shown in the templates examples, you call EMEFS::field(‘xxx’) with ‘xxx’ being one of:

For all possible fields, look at eme_events.php, function eme_new_event.
If you activated the option to use the captcha, you can (must) also use the field ‘captcha’
If you activated the option to use Google reCAPTCHA, you can (must) also use the field ‘recaptcha’
If you activated the option to use hCaptcha, you can (must) also use the field ‘hcaptcha’

How about extra attributes?

Well, in fact it is easier than thought. Just by using
in the form template, the attribute phone2 is available and can be used in an event template via #_ATT{phone2}
By default, the formtype for attributes is textarea, if you want a plain text field, use e.g.:

How about extra event properties?

Many newer event options are stored in properties, see eme_events.php function eme_init_event_props(), for a whole list.
A small enumeration:
auto_approve ()
ignore_pending (
all_day ()
take_attendance (
use_worldpay ()
use_stripe (
use_braintree ()
use_stripe (

You can use these like this: EMEFS::property(‘xxx’);
For the ones marked with (*), use the extra binary option: EMEFS::property(‘xxx’,’binary’);

How about custom event or location fields?

If you have defined custom fields of type Events or Locations in EME, they are part of the event or location definition.
In that case, you can also ask in the frontend for that info, by using EMEFS::custom_field(‘xxx’). ‘xxx’ can be the id or the fieldname.
Example (under the assumption ‘my_price’ is a custom event or location field):
Example (under the assumption ’15’ is a custom event or location field):
Example (under the assumption ’15’ is a custom event or location field):

Which field types are supported?

EMEFS::attribute, EMEFS::property and EMEFS::field can have a second argument, indicating the type of your field of choice:
The different types supported: textarea (default), text, hidden, tel, url, email and number
Also the event_url regular field entry can have the url-html5 option:

Binary field (YES/NO)

If you want to show a certain field as a drop/down select, use as second option (for type) the value ‘binary’
E.g. EMEFS::property(‘all_day’,’binary’)

Required fields

If you want a certain field to be required (if not by default), use EMEFS::required_field(‘xxx’)
For required attributes, use EMEFS::required_attribute(‘xxx’)
For required properties, use EMEFS::required_property(‘xxx’)

Default values and extra classes

If you want to use a default value for certain attributes or properties, you can use a third parameter for EMEFS::field, EMEFS::attribute and EMEFS::property.
E.g. EMEFS::property(‘event_single_event_format_tpl’,’hidden’,”value=2″);
This third parameter can also be used to add custom styles etc …:
E.g. EMEFS::property(‘event_single_event_format_tpl’,’hidden’,”value=2 class=’my_class’”);

Filters and actions

Action emefs_submit_event_action: this allows a custom action after event submit (like emailing the info to people).
(see the action eme_insert_event_action in the main EME plugin as an example).
Filter emefs_categories_filter: to filter the categories, see also eme_categories_filter
Filter emefs_event_insert_filter: executed just before insert of the new event in the database (so you can change certain properties by default). See also eme_insert_event_filter
Filter emefs_success_url: takes the current success page as parameter and needs to return a new url. This allows you to change the success page per submitted event


April 21, 2021
Very useful plugin to share the work of animation of the site to people who are not very comfortable with WP administration. Congratulations to the developer and his support always at the top.
February 21, 2021
I use that app that my user can create events with a form so that all events look the same and following the same schema. It’s important to read the manual exactly (when you programm a website you have this time!) and then you can use all the great features from this app.
September 3, 2016
With Google Maps, front-end submission, and all of the simple customization, this is the most complete events manager I’ve tried (I think I tried them all).
September 3, 2016
I am using this plugin in addition to the great Events Made Easy plugin. It’s really easy to use and customize. I highly recommend it!
Read all 9 reviews

Contributors & Developers

“Events Made Easy Frontend Submit” is open source software. The following people have contributed to this plugin.


“Events Made Easy Frontend Submit” has been translated into 3 locales. Thank you to the translators for their contributions.

Translate “Events Made Easy Frontend Submit” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


1.0.83 (2024/01/03)

  • Fix a PHP warning in some cases

1.0.82 (2023/12/29)

  • Make required_field work again

1.0.81 (2023/12/21)

  • Make hidden work for EMEFS::field identical to EMEFS::attribute and EMEFS::property

1.0.80 (2023/12/09)

  • Add a nonce for location search

1.0.79 (2023/11/11)

  • Force EME github version check, older versions are no longer supported

1.0.78 (2023/11/11)

  • Also check for network installed EME
  • Make sure to sanitize a post for location search

1.0.77 (2023/07/28)

  • Use the latest leaflet from EME

1.0.76 (2022/02/20)

  • Fix EME plugin activation check

1.0.75 (2022/02/20)

  • Allow file uploads too for custom fields
    For this to work, the template used should have ‘enctype=”multipart/form-data”‘ present in the initial form-tag (see the templates provided)

1.0.74 (2022/11/30)

  • Replace submit button by a spinner upon submit to prevent double submits

1.0.73 (2022/11/17)

  • allow event_status as a field too

1.0.72 (2022/10/22)

  • Only enqueue scripts and styles when needed

1.0.71 (2022/06/02)

  • Allow form without location fields
  • Make sure all event properties are set as expected
  • Allow hidden properties and values (see the FAQ)

1.0.70 (2022/05/15)

  • Add filter eme_success_url, so you can change the return page to your liking after event submit

1.0.68 (2022/03/13)

  • Add filter eme_success_url, so you can change the return page to your liking after event submit

1.0.67 (2021/10/27)

  • Support Google reCAPTCHA and hCaptcha too, as the main EME plugin does

1.0.66 (2021/10/22)

  • Don’t disable the plugin if EME is deactivated (to avoid this plugin to get deactivated during EME updates, which seems to happen on some installations)
  • Added filter emefs_event_insert_filter, executed just before insert of the new event in the database

1.0.65 (2021/06/19)

  • Redirect correctly to login page if not authorized. Also explain in the settings that the minimum required capability is “edit posts” for logged in users
  • Add option to define the needed capability when guest submit is not allowed (default: “edit posts”)

1.0.64 (2021/06/18)

  • Fix compatibility with EME >=2.2.2 concerning event start/end date/time

1.0.63 (2021/06/03)

  • Fix compatibility with EME 2.2.0 concerning event start/end date/time

1.0.62 (2021/04/21)

  • Show event validation errors too

1.0.61 (2021/02/02)

  • Correct path to leaflet gesture handling js

1.0.60 (2020/12/28)

  • Actually disable the plugin if EME is not found

1.0.59 (2020/12/15)

  • Added emefs_submit_event_action action, to allow custom action after event submit (like emailing the info to people)
    See the action eme_submit_event_action in the main EME plugin as an example
  • Add an option to redirect to the login page if not logged in and a logged in user is required for event submit

1.0.58 (2020/12/10)

  • Try to avoid enqueuing scripts and styles that are identical and enqueued through EME already

1.0.57 (2020/11/26)

  • Load JS in the footer
  • Don’t override the EMEFS::field second argument (type) in some cases

1.0.56 (2020/09/24)

  • Correct JS error if the map integration is disabled

1.0.55 (2020/09/07)

  • Correct JS for pages that don’t have emefs fields

1.0.54 (2020/09/06)

  • Allow empty end date/time (it will be set to the start date/time then)

1.0.53 (2020/09/06)

  • Check for required date/time fields more intelligently

1.0.52 (2020/07/24)

  • The shortcode is always added to the wp logic, so people can use it in widgets if they want too, or via do_shortcode logic
  • The “guests not allowed page” setting is replaced with “guests not allowed text” that will be shown instead of the form if a guest is not allowed to post new events

1.0.51 (2020/06/13)

  • Use new EME_EVENT_STATUS_* constants

1.0.50 (2020/05/30)

  • Don’t use EME_PLUGIN_URL anymore

1.0.49 (2020/02/29)

  • Added closeButton to datetimepickers
  • Make the timepicker step obey the EME settings

1.0.48 (2020/01/25)

  • Make sure custom field answers are stored too work when saving the event

1.0.47 (2019/12/26)

  • Avoid clashes bewteen EME and EMEFS enqueueing of leaflet styles and scripts

Older changes can be found in changelog.txt