The automatic event trashing process is intentionally designed to be gentle on your server. By default, WP-Cron handles the removal of past events:
- Runs twice a day
- Deletes 15 events per run (30 events per day total)
This cautious approach helps protect websites, particularly those on shared or resource-limited hosting, from becoming slow or even crashing due to heavy background processes.
For enhanced reliability, you can configure a real cron job.
Why Are There Limitations on Event Trashing?
Servers, especially shared ones, can become overwhelmed if too many processes happen at once.
Deleting 100+ events every few minutes, alongside normal WordPress tasks and other plugin activities, could bog down your site — or even take multiple sites offline.
The default behavior balances performance and maintenance, ensuring your site stays healthy while keeping your event database clean.
What Happens if I Recently Enabled Auto-Trashing?
If you just turned on automatic trashing but already have hundreds of past events, the system needs time to catch up.
With the default settings (30 events/day), clearing a large backlog can take several days or longer — depending on how many events you have.
Adjusting How Many Events Get Trashed (Advanced)
If you want to speed up the process, you can increase the number of events deleted at once and run the trashing more frequently by adding the following filters to your site’s code:
// Increase the number of past events trashed automatically.
add_filter( 'tribe_events_delete_old_events_sql_args', function ( $args ) {
$args['limit'] = 100; // Change the number as needed.
return $args;
} );
// Increase the frequency of the auto-trashing. (Default is 'twicedaily'.)
add_filter( 'tec_events_event_cleaner_trash_cron_frequency', function( $frequency ) {
return 'hourly'; // Options include 'hourly', 'twicedaily', and 'daily'.
} );
Our recommendation is to rather increase the frequency, than the number of events trashed. With an ‘hourly’ setting 660 events should be trashed in a day.
Should I Always Use Higher Limits?
No — only temporarily.
It’s a good idea to increase the limits if you’re trying to quickly clean up a large number of past events.
Once the backlog is cleared and your events are being regularly maintained, we recommend switching back to the defaults to avoid putting unnecessary load on your server.
Understanding Trashed vs Ignored Events and How Deletion Works
If you’ve noticed that some old events end up in the Trash while others are marked as Ignored, you’re not alone — and it can definitely feel confusing at first. Let’s walk through what’s happening behind the scenes.
Why Are Some Events Set to “Ignored” Instead of “Trashed”?
When events are imported using Event Aggregator, they are handled a little differently. If you move an imported event to the trash, it doesn’t just sit there like regular WordPress content. Instead, Event Aggregator puts it on the “Ignore” list. Why? Because this helps prevent the same event from being re-imported later on.
If trashed events were treated the usual way and deleted permanently, Event Aggregator would see them as missing and simply re-import them during the next time. That’s not ideal—especially if you intentionally removed the event in the first place.
So, marking an event as Ignored tells the system: “Don’t import this event again in the future.”
How Are Old Events Actually Deleted?
The “Move to trash events older than” feature in The Events Calendar is designed to clean things up a bit by moving old events to the Trash — but it doesn’t delete them permanently.
That part is actually handled by WordPress itself. By default, WordPress will automatically delete any post, including events, after it’s been sitting in the Trash for more than 30 days. It’s a helpful safeguard — giving you a grace period in case something was trashed by mistake and needs to be restored before it’s gone for good.
🔔 Note:
Events that have been moved to the Ignored list are not automatically deleted by WordPress. If you want to remove ignored events, you’ll need to do this manually.
How Can I Ensure All Old Events Are Fully Deleted?
When an event is moved to the Trash, WordPress will automatically and permanently delete it after 30 days. This is the default behavior, but if you’d prefer a different timeframe, you can change it using a code snippet.
On the other hand, Ignored events work a bit differently. They aren’t automatically deleted, so they’ll remain in your system unless you manually remove them. If you’re looking for a faster way to clear them out, we’ve got a handy snippet you can use. It adds a “Permanently Delete All” button—just like the familiar “Empty Trash” option—to help you clean things up with a single click.