Home Forums Event Espresso Premium Delete old Data and Delete old posts and events

Delete old Data and Delete old posts and events

Posted: May 16, 2020 at 1:23 am


May 16, 2020 at 1:23 am

If I do decide now is a great time to delete all old EE events and registrations, but then I change my mind. Is there a way add just EE back from a backup?

Like at this very second, is there a way to ONLY BACKUP Event Espresso. Then if I want to upload all that data back later, I could upload the EE Backup?

Second question: Is there an SQL code or something that would allow me to delete all EE events, registrations, payments from 2014 to December 31st 2018? Doing it one by one for that many registrations just doesn’t make any sense at all for the amount of time it would take to delete transaction, then delete registration the delete event one by one.

its always a good idea for SEO to get rid of old posts/events that aren’t a valuable source any longer because it has expired and since we have a lot of classes with same names over the years and in future it will help to get rid of the old less relevant ones.

Any ideas for this would be amazing.


May 16, 2020 at 1:42 am

I can confirm that after using the Event espresso “reset all data” option, it did delete everything. And WOW is my site gonna be faster if I can do this option on live website. Its amazing how much faster the entire site loads.

So, I definitely would really like to know how I can back up Event espresso database only and best way to backup the plugin.

Because it would make the most sense if I did decide to reload old data from EE.

Are there specific tables? Or a backup plugin that would back up EE and its registrations and payment data?


May 16, 2020 at 3:37 pm

One more thought on this.

If we
1) Backup WP Posts and WP ESP tables
2) Reset Event espresso completely
3) Spend a few months with our new events and new registrations on the reset event espresso, then BOOM we decide we want to add ALL those old posts and registrations back.
4) Could we, upload ONLY WP posts and ESP (event Espresso) tables and it would add everything back correctly?

Becuase rigth now we have ZERO Regular WordPress posts, hundreds of Event espresso Custom post type events, and about 25 pages and about 20 woo products.

So, if we were to upload WP_Posts and ESP tables backup, would that overwrite Woo, learndash in future?


May 16, 2020 at 3:51 pm

oh wow, Josh is this one capable of doing with EE4?

Im not sure but it kind of sounds like what I could use if I ever wanted to just add back old events and registrations.

Which tables exactly does Event Espresso use? Thanks


  • Support Staff

May 18, 2020 at 4:37 am

Hi Jarred,

In short, you can’t export only EE events (and related data) from your database and then re-import only that data again later.

One of the reasons for this is down to the fact that for many tables every entry has a unique row ID that is automatically generated each time a row is entered into the table. If you export EE events and then reimported them (even 2 seconds after deleting them all) it would basically need to re-add the entity into each table and when it does each entity would need its ‘new’ ID mapped throughout the rest of the import.

For example Event A may have ID 11 in the original table, but to import that back into the table again it may now be given ID 157 because additional rows have been added to the table and we have to start from the end of the rows. Any references to event 11 need to be updated to 157, then realise that this same process needs to be done for EVERY entity within Event Espresso, datetimes relate to events but now datetimes all have different ID’s and need to be updated, the tickets that related to that datetimes, same thing new IDs, the registrations linking to those same tickets/datetimes/events again all need any foreign keys updating to match the new keys.

So to export EE data and then re-import that data will require a custom export/import function to remap all of the data as needed. It’s not a simple task and not something we can just throw together in a snippet.

If you want to keep archived data we’ve seen users create subdomains to store previous data which may be an option for you, clone the site on to and then lock that site down and hide it from public/bots etc. THen ‘clean’ the main site.


May 18, 2020 at 8:28 pm

Thanks Tony, your last suggestion is the route I’m going to use. Im going to keep it on a subdomain staging site that way we can still look up customers data and previous purchases if needed. And I’m not worried about SEO becuase people aren’t interested in searching for 3 year old events. Thanks for the detailed answer


  • Support Staff

May 19, 2020 at 3:30 am

You should be concerned with SEO if you are running a copy of the original site as it’s duplicate content and will affect your overall site ranking.

You are best hiding and locking down then duplicate site, there is no reason for it to be publicly available. Also remember that any laws regarding personal information will still apply on that site so be sure to keep it updated an secure.


May 22, 2020 at 12:46 pm

Thanks Tony, all good advice.

You must be logged in to reply to this support post. Sign In or Register for an Account

Support forum for Event Espresso 3 and Event Espresso 4.
Documentation for EE3 and EE4
Documentation for Event Espresso 3 Documentation for Event Espresso 4

Status: publish

Updated by  Jarred 5 months ago ago

Topic Tags


This topic is:
Do NOT follow this link or you will be banned from the site!
[gravityform id=80 title=false description=false ajax=false]
<div class='gf_browser_unknown gform_wrapper' id='gform_wrapper_80' ><form method='post' enctype='multipart/form-data' id='gform_80' action='/topic/delete-old-data-and-delete-old-posts-and-events/'> <div class='gform_body'><ul id='gform_fields_80' class='gform_fields top_label form_sublabel_below description_below'><li id='field_80_1' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_80_1' >First name<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_80_1' type='text' value='' class='medium' aria-required="true" aria-invalid="false" /></div></li><li id='field_80_2' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_80_2' >Email address<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_email'> <input name='input_2' id='input_80_2' type='email' value='' class='medium' aria-required="true" aria-invalid="false" /> </div></li><li id='field_80_3' class='gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' >GDPR Agreement<span class='gfield_required'>*</span></label><div class='ginput_container ginput_container_checkbox'><ul class='gfield_checkbox' id='input_80_3'><li class='gchoice_80_3_1'> <input name='input_3.1' type='checkbox' value='I consent to have this website store my submitted information so they can respond to my inquiry.' id='choice_80_3_1' /> <label for='choice_80_3_1' id='label_80_3_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_80_4' class='gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_80_4' >Email</label><div class='ginput_container'><input name='input_4' id='input_80_4' type='text' value='' autocomplete='off'/></div><div class='gfield_description' id='gfield_description_80_4'>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_80' class='gform_button button' value='Download Now' onclick='if(window["gf_submitting_80"]){return false;} if( !jQuery("#gform_80")[0].checkValidity || jQuery("#gform_80")[0].checkValidity()){window["gf_submitting_80"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_80"]){return false;} if( !jQuery("#gform_80")[0].checkValidity || jQuery("#gform_80")[0].checkValidity()){window["gf_submitting_80"]=true;} jQuery("#gform_80").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_80' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='80' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_80' value='WyJbXSIsIjBiNjdjZjkyMDUzOWUxOWY5Y2NiZjIwMzM4YjA1Mjk4Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_80' id='gform_target_page_number_80' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_80' id='gform_source_page_number_80' 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 == 80) {} } );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', [80, 1]) } ); </script>