If your WordPress site has thousands of old Action Scheduler entries cluttering your database, this guide shows you exactly how to clean them up safely. Choose from four methods ranging from beginner-friendly to advanced.
Understanding Action Scheduler Bloat
Action Scheduler is used by popular plugins like WooCommerce, WPForms, and MailPoet to run background tasks. Over time, these tasks accumulate as completed, failed, and canceled entries in your database. Sites commonly have 20,000 to 50,000+ old entries that serve no purpose and slow down your site.
What’s Safe to Delete
- Completed actions: Already finished tasks – safe to delete
- Failed actions: Tasks that encountered errors – safe to delete
- Canceled actions: Aborted tasks – safe to delete
- Pending actions: Scheduled for future – KEEP these
- In-progress actions: Currently running – KEEP these
Method 1: Using the WordPress Interface
This is the safest method but most time-consuming. Perfect for beginners who want zero risk of breaking anything.
Step 1: Clean Completed Actions
- Go to Tools > Scheduled Actions
- Click the Complete tab
- Click the Select bulk action dropdown at the top
- Choose Delete
- Check the box next to Hook to select all items on the page
- Click Apply
- Repeat for each page until all completed actions are deleted
Note: If you have thousands of entries, this will take hours. Skip to Method 2 or 3 for faster cleanup.
Step 2: Clean Failed Actions
- Click the Failed tab
- Use the same process: Select all → Delete → Apply
- Repeat for all pages
Step 3: Clean Canceled Actions
- Click the Canceled tab
- Use the same process: Select all → Delete → Apply
- Repeat for all pages
Method 2: Using WP-Optimize Plugin
This method is much faster and still safe. Recommended for most users.
Install WP-Optimize
- Go to Plugins > Add New
- Search for WP-Optimize
- Click Install Now then Activate
Run the Cleanup
- Go to WP-Optimize > Database
- Check these boxes:
- Clean post revisions
- Clean auto-draft posts
- Remove spam and trashed comments
- Remove expired transient options
- Clean Action Scheduler database (if available)
- Click Run all selected optimizations
If WP-Optimize Doesn’t Have Action Scheduler Option
- Go to WP-Optimize > Database > Tables
- Find these four tables:
- wp_actionscheduler_actions
- wp_actionscheduler_logs
- wp_actionscheduler_claims
- wp_actionscheduler_groups
- Click Optimize next to each table
- Then go to Tools > Scheduled Actions and manually delete old entries
Method 3: Using phpMyAdmin (Fastest)
This is the fastest method for clearing thousands of entries instantly. Requires basic database knowledge.
IMPORTANT: Backup your database first!
Access phpMyAdmin
- Log into your hosting cPanel
- Find and click phpMyAdmin
- Select your WordPress database from the left sidebar
- Click the SQL tab at the top
Run These SQL Queries One at a Time
Query 1: Delete All Completed Actions
DELETE FROM wp_actionscheduler_actions WHERE status = 'complete';
Click Go to execute. This removes all completed actions instantly.
Query 2: Delete All Failed Actions
DELETE FROM wp_actionscheduler_actions WHERE status = 'failed';
Click Go to execute.
Query 3: Delete All Canceled Actions
DELETE FROM wp_actionscheduler_actions WHERE status = 'canceled';
Click Go to execute.
Query 4: Clean Up Orphaned Logs
DELETE FROM wp_actionscheduler_logs WHERE action_id NOT IN (SELECT action_id FROM wp_actionscheduler_actions);
This removes log entries for actions that no longer exist. Click Go to execute.
Query 5: Clean Up Old Claims
DELETE FROM wp_actionscheduler_claims WHERE date_created_gmt < DATE_SUB(NOW(), INTERVAL 1 DAY);
This removes claim records older than 24 hours. Click Go to execute.
Query 6: Optimize All Tables
OPTIMIZE TABLE wp_actionscheduler_actions, wp_actionscheduler_logs, wp_actionscheduler_claims, wp_actionscheduler_groups;
This reclaims unused space and rebuilds indexes. Click Go to execute.
Verify the Cleanup Worked
After running all queries, go to Tools > Scheduled Actions in WordPress and verify your action counts have dropped dramatically.
Method 4: Using WP-CLI
If your hosting provider supports WP-CLI, you can use command line to clean up actions. Ask your host if WP-CLI is available.
Delete completed actions older than 7 days:
wp action-scheduler delete --status=complete --before="7 days ago" --allow-root
Delete all failed actions:
wp action-scheduler delete --status=failed --allow-root
Delete all canceled actions:
wp action-scheduler delete --status=canceled --allow-root
Preventing Future Buildup
Add this code to prevent Action Scheduler from building up again. You can add it to your theme’s functions.php file or use a code snippet plugin like Code Snippets or WPCode.
Automated Daily Cleanup Code:
/**
* Automatically clean up old Action Scheduler entries
* Runs daily to keep the database clean
*/
add_action( 'init', function() {
if ( ! wp_next_scheduled( 'cleanup_action_scheduler' ) ) {
wp_schedule_event( time(), 'daily', 'cleanup_action_scheduler' );
}
}); add_action( 'cleanup_action_scheduler', function() {
global $wpdb;
// Delete completed actions older than 30 days
$wpdb->query( "
DELETE FROM {$wpdb->prefix}actionscheduler_actions
WHERE status = 'complete'
AND scheduled_date_gmt < DATE_SUB(NOW(), INTERVAL 30 DAY) " ); // Delete failed actions older than 90 days $wpdb->query( "
DELETE FROM {$wpdb->prefix}actionscheduler_actions
WHERE status = 'failed'
AND scheduled_date_gmt < DATE_SUB(NOW(), INTERVAL 90 DAY) " ); // Clean up orphaned logs $wpdb->query( "
DELETE FROM {$wpdb->prefix}actionscheduler_logs
WHERE action_id NOT IN (
SELECT action_id FROM {$wpdb->prefix}actionscheduler_actions
)
" );
});
This code automatically deletes completed actions older than 30 days, failed actions older than 90 days, and orphaned logs every day.
Pro Tips
- Always backup your database first: Before running any cleanup method, especially phpMyAdmin queries, create a full database backup.
- Test on staging first: If you have a staging site, test the cleanup process there before running it on your live site.
- Clear your cache after cleanup: If you use LiteSpeed Cache, go to LiteSpeed Cache > Toolbox > Purge and click Purge All after cleanup.
- Monitor monthly: Check your Action Scheduler counts monthly to catch buildup early before it becomes a problem.
- Identify problem plugins: Look at the Group column in Scheduled Actions to see which plugins create the most actions. Adjust their settings if possible.
- Use server cron for reliability: Set up proper server-level cron jobs instead of relying on WordPress pseudo-cron for more reliable cleanup.
- Don’t delete pending or in-progress: Only delete completed, failed, and canceled actions. Never delete pending or in-progress actions.
Frequently Asked Questions
Will deleting completed actions break my site?
No. Completed actions are just historical logs. Once a task is complete, the log entry serves no functional purpose and can be safely deleted without affecting your site or plugins.
How often should I clean Action Scheduler?
It depends on your site’s activity level. High-traffic WooCommerce stores should clean monthly. Medium-traffic sites need quarterly cleanup. Low-traffic sites only need cleanup once or twice per year. With the automated code above, it handles itself.
Can this improve my site speed?
Yes. Large Action Scheduler tables slow down database queries, especially in the WordPress admin. After cleanup, you’ll notice faster admin dashboard loads, quicker backups, and better overall database performance.
What if I accidentally delete pending actions?
Most plugins will automatically recreate missing scheduled actions during their next check. The impact is usually minor and temporary. Your site won’t break, but some scheduled tasks might be delayed until the plugin detects and recreates them.
Do I need to disable plugins before cleanup?
No. Cleanup only affects historical log entries, not active plugins. Keep your plugins active during cleanup. The only exception is if you’re using Method 3 (phpMyAdmin) – you might want to enable maintenance mode to prevent visitor access during the cleanup.
Why do my tables grow back quickly after cleanup?
Some plugins generate excessive background tasks. Check the Group column in Scheduled Actions to identify which plugins create the most actions. Look for plugin settings to reduce task frequency, or consider replacing high-volume plugins with more efficient alternatives.
Is truncating tables safe?
Truncating the logs table is safe since it only contains historical records. However, never truncate the actions table as it contains pending and in-progress tasks. Always use DELETE queries with status filters instead of TRUNCATE.
Can I automate cleanup without plugins?
Yes. Use the automated cleanup code provided in the “Preventing Future Buildup” section above. Add it to your functions.php or use a code snippet plugin. This creates a daily scheduled task that automatically removes old actions without any plugin dependencies.
Expected Results After Cleanup
After completing the cleanup, you should see these improvements:
- Database queries run much faster
- Admin dashboard loads significantly quicker
- Database backup operations complete faster
- Action Scheduler tables shrink from hundreds of MB to just a few MB
- Reduced strain on server memory limits
- Fewer database timeout errors
- Smoother plugin operations
When to Use Each Method
- Method 1 (WordPress Admin): Best if you have less than 1,000 entries or want absolute safety
- Method 2 (WP-Optimize Plugin): Best for most users – fast and safe with a user-friendly interface
- Method 3 (phpMyAdmin): Best if you have 10,000+ entries and need instant cleanup
- Method 4 (WP-CLI): Best if you’re comfortable with command line and want scriptable cleanup
Final Recommendations
For most WordPress sites with severe Action Scheduler bloat, we recommend this approach:
- Backup your database completely
- Use Method 3 (phpMyAdmin) for instant cleanup of thousands of entries
- Add the automated cleanup code to prevent future buildup
- Clear your site cache after cleanup
- Monitor your Action Scheduler counts monthly
If you’re not comfortable with phpMyAdmin, use Method 2 (WP-Optimize plugin) instead. It takes a bit longer but is very safe and doesn’t require any technical knowledge.
Need Help?
If you’re not comfortable performing these steps yourself:
- Use Method 2 (WP-Optimize plugin) for the safest automated approach
- Ask your hosting provider to run the SQL queries for you
- Hire a WordPress developer for 30-60 minutes of work
- Use a WordPress maintenance service to handle it
Regular Action Scheduler cleanup is essential for maintaining optimal WordPress performance. Whether you choose manual deletion, plugins, or direct database queries, cleaning these tables will dramatically improve your site’s database performance and eliminate many common WordPress slowdown issues.
Conclusion
Action Scheduler is a powerful tool that enables WordPress plugins to run background tasks efficiently without overloading your server. However, without regular maintenance, the log entries it creates can accumulate into massive database bloat that degrades your site’s performance. By following the methods outlined in this guide, you can safely clean up thousands of unnecessary entries and implement automated maintenance to prevent future accumulation. Choose the method that matches your technical comfort level, always backup first, and enjoy a faster, more responsive WordPress site.
Recommended For You












