Author Archive

Is your Payment Method Ready to Comply with the EU’s SCA/PSD2 Regulations? And what to do if it isn’t.

The Second Payment Services Directive (PSD2) and Strong Customer Authentication (SCA) come into enforcement across Europe September 14, 2019. Although we’ve written about it before, we thought we should answer some questions about how this impacts  payments on your Event Espresso-powered website.

PSD2 is a set of new European regulations regarding payments, one of which is SCA. If your website does not meet the requirements of SCA, your European customer’s banks may refuse payment. The new requirements apply to online transactions where the issuing and acquiring banks are located in the European Economic Area (EEA).  

We’ll explain how to meet the requirements of SCA in order to keep accepting payments even after PSD2 comes into effect. (more…)

Posted in Product & News | No Comments »

Event Espresso Stripe Add-On Adds PSD2 Compliance

The Event Espresso Stripe Add-on 1.1.4 update will add compliance with Strong Customer Authentication (SCA), a new requirement of Europe’s second Payment Services Directive (PSD2). If you accept payments from European customers with Stripe, we recommend that you update and switch to using Stripe Elements before September 19th, when PSD2 comes into enforcement.

Keep reading to find out what is changing in the Event Espresso Stripe add-on.

(more…)

Posted in Product & News | 5 Comments »

Case Study: Using Meetup.com, WordPress, & Event Espresso

I want to share what tools I’ve found useful for managing my events. First, I’ll introduce Meetup.com for those who are unfamiliar with it, and describe how it helps me to publicize my events. Then, I’ll describe why I also have a self-hosted WordPress website using Event Espresso. Lastly, I’ll share some other plugins I’ve found helpful. I hope sharing my experience will be useful to anyone who is looking to explore more ways to manage their own events using some of today’s innovative event registration and networking tools.

(more…)

Posted in Event Planning | No Comments »

6 Essential Steps to Keep Your WordPress Website from Getting Hacked

website security

Happy Internet Security Month!

These 6 steps will prevent 99% of hacking attempts on your WordPress website, and most of them only require a click or two and aren’t very technical.

Of course, we all want to keep our website secure and not get hacked. It’s not fun when a hacker takes control of your website… But we also have a life and might not understand all the technical jargon. So let’s skip the fluff and get your website secure.

(more…)

Tags: , , , ,
Posted in Product & News | No Comments »

5 Tips for Contributing to Open Source Software like Event Espresso

Many good software developers struggle and become frustrated when contributing to open source software. That’s because the skill set required for contributing to open source software is different from that required for writing closed source software.

5 Tips for Contributing to Open Source Software like Event Espresso Graphic

About three years ago we decided to put our flagship WordPress plugin, Event Espresso, on Github in order to facilitate community contributions. It has always been open source (meaning the code that runs it is viewable by anyone who downloads it), but that made it much more accessible for contributions. Since then we have received numerous pull requests (requests to have code added to it), but not all contributions were ready. The purpose of this post is to help software developers better understand how to contribute to Event Espresso, WordPress, or any open source software. (more…)

Tags: , ,
Posted in Product & News | No Comments »

Event Espresso 4 REST API Add-on Now Available

Earlier this year we announced we started work on the EE4 REST API addon. Well its ready-for-use and now bundled with Event Espresso 4 core!

We’ve reached the first milestone which provides read access to all EE4 data. That means you can build client-side Javascript code, mobile apps, and programs  in any language (and on any server) that can read data used in Event Espresso 4.

So what’s great about the EE4 REST API and what can you do with it? Here’s a start:

  • Unlike its predecessor, the EE3 JSON API, this addon is compatible with Event Espresso 4 (not Event Espresso 3)
  • It’s built using the WordPress REST API (aka WP API). That means many plugins that work with the WP API work with it too. WP API gives the EE4 REST API a solid foundation by handling authentication, providing endpoint discovery, and supplying lots of the “behind-the-scenes” code.
  • It provides read access to all Event Espresso 4 data: events, tickets, datetimes, registrations, custom questions and answers, payment methods, and configuration data. Even Event Espresso 4 addons’ data, like from the Mailchimp Addon or the People Addon, is available by default. If we’ve missed something tell us in the github issue tracker!
  • It uses Event Espresso’s models system for querying the database. This gives API clients nearly as much querying abilities as server-side plugins. Here are some of the crazier queries we thought of: (more…)

Posted in Product & News | 10 Comments »

Do NOT follow this link or you will be banned from the site!
[gravityform id=116 title=false description=false]
<div class='gf_browser_unknown gform_wrapper' id='gform_wrapper_116' ><form method='post' enctype='multipart/form-data' id='gform_116' action='/author/mikenelson/'> <div class='gform_body'><ul id='gform_fields_116' class='gform_fields top_label form_sublabel_below description_below'><li id='field_116_5' class='gfield gfield_contains_required field_sublabel_hidden_label field_description_below gfield_visibility_visible' ><label class='gfield_label gfield_label_before_complex' >What is your first name?<span class='gfield_required'>*</span></label><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name no_last_name no_suffix gf_name_has_1 ginput_container_name' id='input_116_5'> <span id='input_116_5_3_container' class='name_first' > <input type='text' name='input_5.3' id='input_116_5_3' value='' aria-label='First name' aria-required="true" aria-invalid="false" placeholder='First name'/> <label for='input_116_5_3' class='hidden_sub_label screen-reader-text'>First name</label> </span> </div></li><li id='field_116_1' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_116_1' >What is your email address so we can follow up with you?<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_116_1' type='text' value='' class='medium' placeholder='hello@example.com' aria-required="true" aria-invalid="false" /></div></li><li id='field_116_2' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_116_2' >Tell us about your concerns below<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_textarea'><textarea name='input_2' id='input_116_2' class='textarea medium' placeholder='What kind of events are you planning?' aria-required="true" aria-invalid="false" rows='10' cols='50'></textarea></div></li><li id='field_116_6' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' >GDPR Agreement</label><div class='ginput_container ginput_container_checkbox'><ul class='gfield_checkbox' id='input_116_6'><li class='gchoice_116_6_1'> <input name='input_6.1' type='checkbox' value='I consent to have this website store my submitted information so they can respond to my inquiry.' id='choice_116_6_1' /> <label for='choice_116_6_1' id='label_116_6_1'>I consent to have this website store my submitted information so they can respond to my inquiry.</label> </li></ul></div></li><li id='field_116_3' class='gfield gform_hidden field_sublabel_below field_description_below gfield_visibility_visible' ><input name='input_3' id='input_116_3' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></li><li id='field_116_4' class='gfield gform_hidden field_sublabel_below field_description_below gfield_visibility_visible' ><input name='input_4' id='input_116_4' type='hidden' class='gform_hidden' aria-invalid="false" value='https://eventespresso.com/author/mikenelson/' /></li><li id='field_116_7' class='gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_116_7' >Comments</label><div class='ginput_container'><input name='input_7' id='input_116_7' type='text' value='' autocomplete='off'/></div><div class='gfield_description' id='gfield_description__7'>This field is for validation purposes and should be left unchanged.</div></li> </ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_116' class='gform_button button' value='Send my message' onclick='if(window["gf_submitting_116"]){return false;} if( !jQuery("#gform_116")[0].checkValidity || jQuery("#gform_116")[0].checkValidity()){window["gf_submitting_116"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_116"]){return false;} if( !jQuery("#gform_116")[0].checkValidity || jQuery("#gform_116")[0].checkValidity()){window["gf_submitting_116"]=true;} jQuery("#gform_116").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_116' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='116' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_116' value='WyJbXSIsIjBiNjdjZjkyMDUzOWUxOWY5Y2NiZjIwMzM4YjA1Mjk4Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_116' id='gform_target_page_number_116' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_116' id='gform_source_page_number_116' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div><script type='text/javascript'> jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 116) {if(typeof Placeholders != 'undefined'){ Placeholders.enable(); }} } );jQuery(document).bind('gform_post_conditional_logic', function(event, formId, fields, isInit){} );</script><script type='text/javascript'> jQuery(document).ready(function(){jQuery(document).trigger('gform_post_render', [116, 1]) } ); </script>