Call for Sponsors: EE4 Promotional Codes & Discounts

donationsEE4 Promotional Codes & Discounts Possible Features

Incentives are important to selling-out an event within a certain timeline, or helping encourage people to attend that are more price-sensitive. You can leverage promotion and discount codes add-on to incentivize people to register now or make your events more affordable for others.

Help us fund our next major feature! Please head over to our Indiegogo campaign page and make a donation.

For now we are starting with “Phase I” features and will move on to “Phase II” ideas/features once we release the first phase of the add-on.

Phase I Features

These controls are managed on an event-by-event basis via Promotions Overview, and Promotions Details pages.

  1. Discount text (code)
  2. Discount name
  3. Discount amount
  4. Discount is percentage (if not then dollar amount)
  5. Discount scope: event
  6. Discount description
  7. # Uses (the number of times a discount can be used per scope item)
  8. Start/End dates (based on certain dates/times)
  9. Custom promo code applied/denied messages
  10. Integration into the Order Confirmation
  11. Integration into the transaction/accounting details system


  1. Discount scope: cart, ticket, username/email, event category, author, datetime, venue
  2. # Global Uses (the TOTAL number of times a discount can be used)
  3. Global codes (meaning that a discount code will apply to all events by default without having to select it in the event editor for each event)
  4. Apply before/after discount/surcharge calculation based on price hierarchy

How can you help?

Well, the time has come to start bringing in some heavy hitting features like Promotional Codes & Discounts, Multiple Event Registration, and WordPress User Integration…And now we want to see if our community will embrace an opportunity to contribute to powerful event registration and ticketing features.

Quite a few of you have mentioned that you would consider donating to the development of certain EE4 features. We are experimenting with crowd sourcing as a way for ALL of you to participate in sponsored development.

This is where you come. We want to test the waters of “crowdbuilding” or “crowdfunding” a few add-ons and features in EE4. We want to hear from you, and create the tools you need for your businesses. Your donations will help us and other users to create the features the Event Espresso community needs.

We are only asking for $10,000 to fund this development, so please head over to our Indiegogo campaign page and make a donation.

How does this help with prioritization of features?

Here’s the deal. Our development team has been hard at work for over a year making sure EE4 core is stable and as bug free as possible. Now, two of them have already started planning and building some aspects of the Promotional Codes & Discounts add-on, however, we have many more hours of rigorous development and testing left to do. Our current process for development of features relies on picking and choosing the most requested features. By crowdfunding Event Espresso features, we are letting YOU decide what we work on next.

Sponsors help us (EE) prioritize development that may not otherwise be accomplished within the same time frame. For example, new payment gateway sponsorships are moved to the front of the development queue, while other features are set on the back burner until we have more time and/or dedicated sponsors. This experiment will help us understand if users want to help prioritize the development of features they want by sponsoring via crowdfunding. We are actively looking for ways that benefit our users most, while still allowing us to sustain the business and growth of Event Espresso.

Why sponsor the Promotional Codes & Discounts add-on for Event Espresso 4?

The idea behind this to try helping each other, and everyone else in the Event Espresso community by keeping the prices low for this and future add-ons. In addition to keeping an add-ons prices lower, sponsors help us (EE) prioritize development that may not otherwise be accomplished within the same time frame. For example, new payment gateway sponsorships are moved to the front of the development queue, while major feature get pushed back until we have to work on them.

Please consider sponsoring the EE4 Promotional Codes and Discounts add-on. If you would like to know more, or requests other features, please fill out the Sponsor a Feature form and check out our Crowd Funding Development page.

Related Articles

16 thoughts on “Call for Sponsors: EE4 Promotional Codes & Discounts

  1. “# Uses (the number of times a discount can be used per scope item)”
    Does this mean that I can limit the promo code to just the primary attendee. That is a feature we’ve been needing with one of our clients currently with ee3.

    • So, are you looking for the ability to: allow people to use the same discount code any number of times as long as it is less than the limit AND if the person is the primary attendee?

      Question for you: what happens if someone goes through the effort to go through the registration process multiple times so as to register each group of attendees as the primary attendee, instead of registering everyone in the group during the same checkout?

      We mostly intended the “cart” scope to work as described (once per checkout).

  2. We are still waiting for the promo code functionality. I know we threw a few bucks back in November when you did the Call for Sponsors, yet have seen many other new features released while legacy functionality transitioning from EE3 seems to stay on the back burner. -Stephen (for CMC)

    • Hi Stephen,

      Thanks for the donation for the promo code add-on development. We are currently doing alpha testing on it now. We hope to release it in the coming weeks. Regarding the legacy features from EE3, we’ve been tied up with many other hotfixes since the latest release of EE 4.6 and will be getting back to adding legacy features from EE3 soon.

    • Promotions will not be available that quickly. We’re enhancing the Datetime system in EE4 core so that is more stable. There are not problems reported with the current datetime system, but we foresee the changes need to be made. So we decided to make the changes now rather than interrupt things in the future. Thanks for your patience.

    • We found that we needed to refactor some date and time systems, so we’ve been forced to delay the release of this add-on. However, we’ve released a branch of EE4, for testing the promotions add-on, and the promotions add-on on our Github repository. You can find out more about getting access to the Github private repo, where we have the promotions add-on available for testing, here:

      Hope that helps. Please let us know if you have anymore questions.

Share a Reply or Comment

Your email address will not be published.

Need help with Event Espresso? Create a support post in our support forums

Event Espresso
[gravityform id=116 title=false description=false]
<script type="text/javascript">var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,initializeOnLoaded:function(o){gform.domLoaded&&gform.scriptsLoaded?o():!gform.domLoaded&&gform.scriptsLoaded?window.addEventListener("DOMContentLoaded",o):document.addEventListener("gform_main_scripts_loaded",o)},hooks:{action:{},filter:{}},addAction:function(o,n,r,t){gform.addHook("action",o,n,r,t)},addFilter:function(o,n,r,t){gform.addHook("filter",o,n,r,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,n){gform.removeHook("action",o,n)},removeFilter:function(o,n,r){gform.removeHook("filter",o,n,r)},addHook:function(o,n,r,t,i){null==gform.hooks[o][n]&&(gform.hooks[o][n]=[]);var e=gform.hooks[o][n];null==i&&(i=n+"_"+e.length),gform.hooks[o][n].push({tag:i,callable:r,priority:t=null==t?10:t})},doHook:function(n,o,r){var t;if(,1),null!=gform.hooks[n][o]&&((o=gform.hooks[n][o]).sort(function(o,n){return o.priority-n.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==n?t.apply(null,r):r[0]=t.apply(null,r)})),"filter"==n)return r[0]},removeHook:function(o,n,t,i){var r;null!=gform.hooks[o][n]&&(r=(r=gform.hooks[o][n]).filter(function(o,n,r){return!!(null!=i&&i!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][n]=r)}});</script> <div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_116' ><form method='post' enctype='multipart/form-data' id='gform_116' action='/2014/11/call-sponsors-ee4-promotional-codes-discounts/' novalidate> <div class='gform_body 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 class="gfield_required gfield_required_asterisk">*</span></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-required='true' 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 class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_116_1' type='text' value='' class='medium' placeholder='' 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 class="gfield_required gfield_required_asterisk">*</span></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 gfield_label_before_complex' >GDPR Agreement</label><div class='ginput_container ginput_container_checkbox'><ul class='gfield_checkbox' id='input_116_6'><li class='gchoice gchoice_116_6_1'> <input class='gfield-choice-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" ><div class='ginput_container ginput_container_text'><input name='input_3' id='input_116_3' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></div></li><li id="field_116_4" class="gfield gform_hidden field_sublabel_below field_description_below gfield_visibility_visible" ><div class='ginput_container ginput_container_text'><input name='input_4' id='input_116_4' type='hidden' class='gform_hidden' aria-invalid="false" value='' /></div></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' >Name</label><div class='ginput_container'><input name='input_7' id='input_116_7' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_116_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> <p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_2" name="ak_js" value="73"/><script>document.getElementById( "ak_js_2" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div>