Easy Actions Scheduler Cleaner
Easy Actions Scheduler Cleaner helps you clean up your Actions Scheduler database tables. Over time, these tables can accumulate thousands or even millions of records from completed, failed, canceled, and past-due actions that are no longer needed, as well as extensive logs that can take up significant database space. This plugin provides two cleanup modes plus email notifications: Manual cleanup Run a one-time cleanup that removes all unnecessary records at once: Delete completed actions – Actions that have already been executed successfully Delete failed actions – Actions that encountered errors during execution Delete canceled actions – Actions that were manually canceled Delete past-due actions – Actions that missed their scheduled execution time Delete old pending actions – Pending actions older than 30 days Delete action logs – Historical log records that accumulate over time Scheduled cleanup Configure automatic cleanup to run on a schedule with smart thresholds: Flexible frequency – Daily, weekly, biweekly, or monthly Per-type configuration – Enable/disable cleanup for each action type independently Threshold system – Only clean when records exceed your configured minimum (e.g., clean completed actions only when there are more than 100) Configurable pending age – Set custom age for old pending actions (7 to 365 days) Last run reporting – See results from the last scheduled cleanup Background processing (NEW in 1.3) – The scheduled cleanup now runs as a self-rescheduling Action Scheduler job, so it never times out on large sites with millions of records Email notifications Stay informed about your database status with configurable email notifications: Periodic reports – Receive daily, weekly, or monthly reports with database status, cleanup results, and estimated space savings Accumulation alerts – Get notified when records pile up without an active scheduled cleanup Missed cleanup alerts – Detect when WP-Cron fails to execute a scheduled cleanup Separate recipient lists – Configure different email addresses for management reports and technical alerts HTML formatted emails – Clean, readable email reports Test emails – Send test report or alert emails directly from the settings page to verify delivery Key features Two cleanup modes – Manual one-time cleanup or scheduled automatic cleanup Smart thresholds – Scheduled cleanup only runs when record counts justify it Database space estimation – See how much space your Action Scheduler tables are using Email notifications – Periodic reports, accumulation alerts, and missed cleanup warnings Batch processing – Handles large datasets efficiently (10,000 records per batch) Detailed reporting – Shows exactly how many records were deleted by type and estimated space freed Orphaned data cleanup – Also removes related orphaned groups Complete logs cleanup – Removes all action logs that accumulate over time WooCommerce integration – Seamlessly works with WooCommerce’s Action Scheduler Why use this plugin? The Actions Scheduler tool used by WooCommerce and many other WordPress plugins can accumulate millions of database records over time, which can: Slow down your website performance Increase database size unnecessarily Make database backups larger and slower Impact Actions Scheduler’s own performance The action logs table (actionscheduler_logs) is particularly problematic as it records detailed information about every action execution and can grow exponentially on busy sites. Works with Action Scheduler 4.0 and WooCommerce 11.0 Action Scheduler 4.0 (bundled with WooCommerce 11.0) now removes failed actions automatically after three months, on top of the completed-action cleanup it already did. This plugin still does more, and on your terms: it cleans on demand and immediately, and it also clears past-due actions, old pending actions, every action log, and orphaned groups that Action Scheduler leaves behind. Important notes Cleanup is irreversible – Always backup your database before use Scheduled cleanup respects thresholds – Only cleans when record counts exceed your minimums You choose the mode – Use manual for one-time cleanup or scheduled for ongoing maintenance Perfect for E-commerce sites with large Action Scheduler tables Sites with millions of action log records Database maintenance and optimization Before major WooCommerce updates Preparing for site migrations Regular automated maintenance Privacy Policy This plugin does not collect, store, or transmit any user data externally. Email notifications are sent using WordPress’s built-in wp_mail() function through your server’s mail configuration. All data processing happens locally on your server. Technical Details Minimum requirements WordPress 5.0 or higher WooCommerce 3.0 or higher (optional) PHP 7.4 or higher MySQL 5.6 or MariaDB 10.1 Database tables affected wp_actionscheduler_actions – Main actions table wp_actionscheduler_groups – Groups table (orphaned records only) wp_actionscheduler_logs – Logs table (all records) Batch processing The plugin processes deletions in batches of 10,000 records to prevent timeouts and reduce server load during cleanup operations. WP-Cron Scheduled cleanup and email notifications rely on WP-Cron. If your site uses an external cron job (DISABLE_WP_CRON), make sure your system cron is properly configured to trigger WP-Cron. The missed cleanup alert can help detect WP-Cron issues. For developers The plugin exposes three filters for fine-tuning the cleanup behavior. Add them to a mu-plugin or your theme’s functions.php: easc_large_site_threshold (default: 500000) Number of total records (actions + logs) that triggers the “consider enabling scheduled cleanup” admin notice. easc_batch_size (default: 10000, context: 'scheduled') Rows deleted per DELETE LIMIT query. Lower if your database struggles, raise if you have headroom. Currently applies to the scheduled cleanup only. easc_cleanup_step_time_budget (default: 25) Seconds each background step is allowed to run before rescheduling itself. Should be lower than your hosting’s PHP max_execution_time. Example: add_filter( 'easc_large_site_threshold', fn() => 100000 ); Support Need private support or custom development? Do you need one-on-one help, priority troubleshooting, or a custom feature, integration, or tweak built specifically for your site? I offer private support and custom development. Just contact me and tell me what you need. Need help or have suggestions? Official website WordPress support forum YouTube channel Documentation and tutorials Love the plugin? Please leave us a 5-star review and help spread the word! About AyudaWP We are specialists in WordPress security, SEO, and performance optimization plugins. We create tools that solve real problems for WordPress site owners while maintaining the highest coding standards and accessibility requirements.
Top keywords
- cleanup30×2.99%
- actions23×2.30%
- records15×1.50%
- action14×1.40%
- scheduled13×1.30%
- database12×1.20%
- scheduler11×1.10%
- scheduled cleanup10×1.00%
- logs9×0.90%
- email8×0.80%
- action scheduler7×0.70%
- delete7×0.70%
Session Shredder for WooCommerce
Session Shredder is a production-grade, rule-based session cleanup plugin for WooCommerce 10.3+. WooCommerce 10.3 introduces experimental guest session storage and auto-pruning. Session Shredder builds directly on this already available foundation and adds behavior-based heuristics that predict which sessions are zombies (safe to prune) versus keepers (should be retained). Highlights – Heuristic pruning – Uses anonymized features (session age, pageviews, cart value, etc.) and conservative rules to identify low-value sessions. – Configurable rules & thresholds – Tune base age, hard timeout, bounce detection, and cart-protection rules from a dedicated WooCommerce settings screen. – Safe thresholds – Only considers sessions past a base age window and is biased towards keeping anything that shows meaningful activity or cart value. – Robust behavior – Even if tracking data is sparse, a conservative rule-based strategy kicks in (e.g. hard 72h timeout, bounces with no cart value). – Privacy-first – No PII is stored. Session IDs and countries are hashed; only coarse behavioral data is used. – Native Woo 10.3 integration – Reads from the WooCommerce session table (supports both legacy and new tables) and plays nicely with the core experimental pruning. – HPOS compatible – Declares compatibility with WooCommerce High-Performance Order Storage (custom order tables) and never touches orders, only session data. – Admin dashboard – Under WooCommerce → Session Shredder you get active sessions, pruned counts, a Chart.js visualization of active & pruned sessions per run, and a compact “Recent runs” summary. – Logging & observability – Uses wc_get_logger() for info/error logging; integrates cleanly with existing WooCommerce logs. Session Shredder is structured for real-world stores and designed as a companion to WooCommerce’s experimental guest session engine. It stays fully rule-based out of the box, but developers can extend it via hooks if they ever want to plug in external scoring services or AI endpoints. Why not rely only on the WooCommerce experimental pruning? – Core experimental pruning is largely age-based and opaque. – Session Shredder adds behavior-aware rules (pageviews, cart value, bounce flag) on top of age. – You get a dry-run mode to analyze impact before deleting anything. – The dashboard gives you visibility into how many sessions were pruned per run and how many sessions remained active. – WP-CLI commands let you script and automate analyze/prune runs. – It works alongside WooCommerce experimental guest sessions and HPOS rather than replacing them: Woo can still prune based on its own rules, while Session Shredder adds a tunable, rule-based layer with better reporting. How It Works Feature collection – On each page load, Session Shredder tracks session activity: – Session age (hours since first seen) – Pageviews count – Cart value (numeric) – Whether anything was added to cart – Geolocation hash (hashed billing/shipping country) – Simple bounce indicator (single pageview, no cart) – Features are stored per-session in non-autoloaded options and never include raw session IDs or user identifiers. Rule-based pruning – An hourly cron (session_shredder_cron) scans the WooCommerce session table for candidates based on age. – For each candidate, the plugin: – Loads stored features – Applies conservative rules like: – Session older than a hard timeout window (e.g. 72 hours) – Single pageview and no cart value – If the rules deem the session a low-value “zombie”, it is pruned. Stats & visualization – After each real run, Session Shredder records: – Total pruned sessions (lifetime and today) – A short history of recent runs, including how many sessions were pruned and how many remained active before/after each run – The admin dashboard renders a Chart.js line graph of active & pruned sessions per run via a secure AJAX endpoint, plus a compact “Recent runs” table. For developers Session Shredder exposes a small set of hooks and CLI commands so you can integrate it into more advanced workflows without forking the plugin. Hooks – session_shredder_features( array $features, string $session_hash ) – Filter the behavior feature array before it is stored and later used for pruning decisions. – $session_hash is a hashed identifier of the session (no raw IDs or PII). – session_shredder_base_age_hours( float $base_age_hours ) – Adjust the base age window (in hours) before sessions are considered as prune candidates. – session_shredder_should_prune( bool $should_prune, array $features ) – Override or refine the core rule-based decision for a given session. – session_shredder_feature_options_soft_limit( int $soft_limit ) – Adjust the soft cap for how many per-session feature options (session_shredder_features_*) are kept in wp_options before garbage collection trims the oldest entries. – session_shredder_feature_options_gc_batch( int $batch_size ) – Adjust how many feature options are removed per garbage-collection pass when the soft limit is exceeded. Larger values clean up faster; smaller values spread work over more runs. – session_shredder_before_run( float $base_age_hours, bool $dry_run ) – Fires before a prune run (cron, manual, or CLI) starts. – session_shredder_after_run( int $pruned_count, bool $dry_run ) – Fires after a prune run completes (dry-run or real). – session_shredder_pruned( int $pruned_count ) – Fires after a real prune run that actually deletes sessions; useful for logging or additional cleanup. WP-CLI commands If WP-CLI is available, Session Shredder registers the following commands: – wp session-shredder analyze – Performs a dry run using the current rules and settings. – Outputs the total number of sessions and how many would be pruned, without deleting anything. – wp session-shredder prune – Runs a real prune using the current rules and settings. – Deletes matching sessions, updates stats, and logs a summary.