Bulk Cleanup

Bulk Cleanup helps WooCommerce store owners remove unnecessary data and keep the database lean. Filter and delete orders, users, products, coupons, and reviews in bulk or let automated schedules and hygiene presets handle recurring maintenance.

Requirements:

  • WordPress 6.5+
  • WooCommerce 7.2+
  • PHP 7.4+
  • HPOS compatible

Installation

↑ Back to top

To start using a product from WooCommerce.com, you can use the โ€œAdd to storeโ€ functionality on the order confirmation page or the My subscriptions section in your account.

  1. Navigate to My subscriptions.
  2. Find the Add to store button next to the product youโ€™re planning to install.
  3. Follow the instructions on the screen, and the product will be automatically added to your store.

Alternative options and more information at:
Managing WooCommerce.com subscriptions.

Adding a WooCommerce.com subscription to your store

Setup and Configuration

↑ Back to top

After install and activation, open the Bulk Cleanup tab. The interface has 10 sub-tabs across the top. Start with the Hygiene Dashboard to see whatโ€™s bloating the database before deleting anything.

WooCommerce Settings screen showing the Bulk Cleanup tab selected, with sub-tabs for Hygiene Dashboard, Hygiene Presets, Orders, Users, Reviews, Products, Coupons, Cleanup, Schedules, and Activity Log.
  1. Install and activate the plugin (WooCommerce must be active).
  2. Go toย WooCommerce โ†’ Settings โ†’ Bulk Cleanup.
  3. Clickย Refresh countsย on the Hygiene Dashboard.
  4. Useย Previewย on any insight with a high count before running a cleanup.

Hygiene Dashboard

↑ Back to top

The Hygiene Dashboard shows live counts of data that commonly bloats WooCommerce databases. Each row includes Preview, Clean now, and Schedule actions. Summary stats at the top show total flagged items and how many insights have matches.

Hygiene Dashboard showing summary statistics and a table of insights including checkout-draft orders, failed orders, guest orders, trashed orders, expired sessions, expired coupons, and users without orders, each with Preview, Clean now, and Schedule buttons.

Insights explained

↑ Back to top
InsightWhat it flagsDefault threshold
Checkout-draft ordersAbandoned block checkout sessionsAll drafts
Failed / pending / cancelled ordersStale unpaid orders30+ days old
Guest ordersOrders from guest checkout90+ days old
Orders in trashOrders already in trash30+ days in trash
Expired cart sessionsStale WooCommerce session data2+ days expired
Expired unused couponsCoupons past expiry, never usedExpired + unused
Users without ordersRegistered users with zero ordersAll matching

Dashboard actions

↑ Back to top
ActionWhat it does
Refresh countsReloads all insight counts from the database
PreviewOpens a modal listing matching items (not available for session cleanup)
Clean nowRuns the cleanup immediately after confirmation
ScheduleOpens a modal to create a recurring job for that insight

Hygiene Presets

↑ Back to top

Presets are one-click recurring cleanup policies. Applying a preset creates a scheduled job you can pause, run, or remove underย Schedules. Removing a preset deletes its linked schedule.

Hygiene Presets page listing seven preset cards with descriptions, schedule intervals, active/inactive status, and Apply preset or Remove preset buttons.

Available presets

↑ Back to top
PresetIntervalAction
Weekly Checkout Draft CleanupWeeklyMove checkout-draft orders to trash
Daily Expired Cart SessionsDailyRemove expired sessions (2+ days)
Monthly Failed & Pending Order CleanupMonthlyTrash failed, pending, cancelled orders 30+ days old
Weekly Empty Order TrashWeeklyPermanently delete trashed orders 30+ days old
Monthly Guest Order CleanupMonthlyTrash guest orders 90+ days old
Monthly Expired Coupon CleanupMonthlyTrash expired, unused coupons

Workflow steps:

  1. Review preset descriptions and intervals.
  2. Clickย Apply presetย on the policies you want.
  3. Openย Schedulesย to confirm the job was created.
  4. Useย Remove presetย to delete the linked schedule.

Orders

↑ Back to top

Filter WooCommerce orders and delete or trash them in bulk. Leave status checkboxes unchecked to include all statuses. Always preview matches before deleting.

Orders tab with filter fields for order status, date range, order total, payment method, customer type, and batch limit, plus Preview, Move to Trash, Delete Orders Now, and Schedule this deletion sections.

Filters

↑ Back to top
SettingDescription
Order StatusCheck specific statuses, or leave all unchecked for every status (including checkout-draft when available)
Date From / Date ToLimit by order date
Min Total / Max TotalFilter by order amount
Payment MethodFilter by gateway (e.g. PayPal, Stripe)
Customer TypeGuest checkout vs registered customers
Limit (0 = All)Cap how many orders to process per run; 0 means all matches

Actions

↑ Back to top
ButtonDescription
PreviewShows matching orders in a modal
Move Orders to TrashReversible โ€” restore from WooCommerce order trash
Delete Orders NowPermanent โ€” cannot be undone
Export CSV (in preview)Download up to 5,000 matching rows as backup

Schedule this deletion

↑ Back to top

Expand this panel to create a one-time or recurring job from the current filters. Fields: Schedule Name, Repeat (one-time, hourly, twice daily, daily, weekly, monthly), Start Date & Time, Batch Size, and optional email notification.

Users

↑ Back to top

Bulk-delete WordPress users with advanced filters. The current logged-in user and all administrators are always protected from deletion.

Users tab showing role checkboxes, registration date range, email address field, meta key and value fields, Only users without orders toggle, Reassign orders before deletion option, and Delete Users Now button.

Filters and options

↑ Back to top
SettingDescription
User RolesCheck specific roles, or leave all unchecked for every role
Registered From / Registered ToFilter by registration date
Email AddressesComma-separated list of emails to target
Meta Key / Meta ValueFilter by custom user meta
Only users without ordersLimit to users with zero WooCommerce orders
Reassign orders before deletionMove a userโ€™s orders to another user ID before deleting
Limit (0 = All)Cap users processed per run

Note: User deletion is permanent only โ€” there is no move-to-trash option.

Reviews

↑ Back to top

Delete product reviews in bulk by status, rating, product, author, or date.

Reviews tab with review status checkboxes, star rating filter, date range, product IDs field, author user ID field, and Preview, Move to Trash, and Delete Reviews Now buttons.

Filters

↑ Back to top
SettingDescription
Review StatusApproved, Pending, Spam, Trash โ€” leave all unchecked for all statuses
RatingFilter by 1โ€“5 stars
Date From / Date ToFilter by review date
Product IDsComma-separated product IDs
Author User IDFilter by reviewerโ€™s WordPress user ID
Limit (0 = All)Cap reviews per run

Products

↑ Back to top

Bulk-delete or trash WooCommerce products. Trash is reversible from the Products admin screen.

Products tab with product status, type, category, stock status, featured, SKU, date range filters, and Move to Trash and Delete Products Now buttons.

Filters

↑ Back to top
SettingDescription
Product StatusPublished, Draft, Pending, Private, etc.
Product TypeSimple, Variable, Grouped, External, etc.
Product CategoriesOne or more categories
Stock StatusIn stock, Out of stock, On backorder
FeaturedFeatured products only, or non-featured only
SKUPartial match supported; leave empty for all
Date From / Date ToFilter by product date
Limit (0 = All)Cap products per run

Coupons

↑ Back to top

Clean up expired or unused coupon codes in bulk.

Coupons tab with coupon status, discount type, coupon code search, expired coupons only toggle, unused coupons only toggle, date range, and trash/delete action buttons.

Filters

↑ Back to top
SettingDescription
Coupon StatusPublished, Draft, etc.
Discount TypePercent, fixed cart, fixed product, etc.
Coupon CodeSearch by code; leave empty for all
Expired coupons onlyLimit to past-expiry coupons
Unused coupons onlyLimit to coupons never redeemed
Date From / Date ToFilter by coupon date
Limit (0 = All)Cap coupons per run

Cleanup tools

↑ Back to top

Quick, predefined cleanup operations for common maintenance tasks โ€” inactive users, guest orders, failed orders, trashed orders, and expired sessions. Each operation shows context-specific options when selected.

Cleanup tab showing a Cleanup Operation dropdown with options like Delete Inactive Users, Delete Users Without Orders, Delete Guest Orders, and Run Cleanup Now button with Schedule this deletion panel below.

Operations

↑ Back to top
OperationOptionsDelete mode
Delete Inactive UsersInactive for (days); optional โ€œonly users with no ordersโ€Permanent
Delete Users Without OrdersExclude Roles (protected roles)Permanent
Delete Guest OrdersOlder than (days); leave empty for all guest ordersTrash or permanent
Delete Failed/Pending OrdersOlder than (days)Trash or permanent
Empty Trash OrdersOlder than (days); leave empty for all trashed ordersPermanent
Clean Expired Cart SessionsOlder than (days)Permanent (safe to run regularly)

All operations supportย Schedule this deletionย with the same fields as the entity tabs.

Schedules

↑ Back to top

Manage one-time and recurring cleanup jobs created from entity tabs, Cleanup tools, or Hygiene Presets. Large stores process items in background batches to avoid timeouts.

Schedules tab showing Active, Paused, and Completed job counts, a table of scheduled jobs with status, next run, last run, and action buttons for pause, run now, and delete, plus Email Notifications settings at the bottom.

Job dashboard

↑ Back to top
Column / statDescription
Active / Paused / CompletedSummary counts at the top
Schedule NameJob label you set when creating it
Action / CriteriaWhat the job deletes and which filters apply
StatusActive, Paused, or Completed
Next Run / Last RunScheduled and previous execution times
Last DeletedItems removed in the last run

Job actions

↑ Back to top
ActionDescription
Pause / ResumeTemporarily stop or restart a recurring job
Run NowExecute immediately
DeleteRemove the schedule entirely

Email notifications

↑ Back to top
SettingDescription
Default notification emailStore-wide recipient for job completion emails
Email me when this job completesPer-job toggle when creating a schedule
Override email (optional)Send a specific jobโ€™s notification to a different address

Activity log

↑ Back to top

Permanent audit trail of every deletion โ€” manual runs from other tabs and completed scheduled jobs. Does not list upcoming jobs (see Schedules for those).

Activity Log tab showing Items Deleted in the last 30 days and Total Events statistics, and a table with Date, Source, Action, Type, Items Deleted, and Performed By columns.

Log columns

↑ Back to top
ColumnDescription
DateWhen the deletion ran
SourceManual or Scheduled
ActionWhat was done (e.g. trash orders, delete users)
Type / DetailsEntity type and filter summary
Items DeletedCount removed
Performed ByAdmin username, or โ€œSystemโ€ for scheduled runs

Shows the 100 most recent entries. Use Refresh to reload.

Preview and CSV export

↑ Back to top

Every entity tab (and most hygiene insights) supports Preview before deletion. The preview modal lists matching items and offers CSV export.

Preview Items modal showing a table of matching orders with details, status, and date columns, item count summary, Export CSV button, and Close button.
FeatureDetail
PreviewShows a sample of matches with total count
Export CSVDownloads up to 5,000 rows as backup
Truncation noticeShown if more than 5,000 items match

Safety and permissions

↑ Back to top
  • Preview and confirmation prompts before every destructive action
  • Move to trash option on orders, products, coupons, and reviews
  • CSV export before permanent delete
  • Batch processing with progress indicator for large operations
  • Custom capabilityย stackwc_bcfw_manageย (granted to administrators on activation)
  • Current user and administrators cannot be deleted from the Users tab
  • Full action logging in Activity Log
  • HPOS (High-Performance Order Storage) compatible

Recommended workflows

↑ Back to top

First-time store cleanup

↑ Back to top
  1. Openย Hygiene Dashboardย โ†’ย Refresh counts
  2. Previewย insights with high counts
  3. Export CSVย from preview if you want a backup
  4. Runย Clean nowย or applyย Hygiene Presetsย for ongoing maintenance
  5. Checkย Activity Logย after completion

Targeted bulk delete

↑ Back to top
  1. Open the relevant tab (Orders, Users, etc.)
  2. Set filters
  3. Previewย โ†’ย Export CSVย (optional)
  4. Move to Trashย first if you want a recovery window
  5. Permanently delete from trash later via Cleanup tools or Orders tab

Automated maintenance

↑ Back to top
  1. Apply presets underย Hygiene Presets, or create custom schedules from any tab
  2. Setย Batch Sizeย (lower = less server load)
  3. Enable email notifications on the Schedules tab
  4. Reviewย Activity Logย monthly

FAQs

↑ Back to top

Does this plugin support scheduled deletions?

  • Yes. You can schedule one-time or recurring cleanup jobs from any entity tab (Orders, Users, Reviews, Products, Coupons, Cleanup tools) usingย Schedule this deletion. Intervals include hourly, twice daily, daily, weekly, and monthly.ย Hygiene Presetsย also create recurring jobs automatically โ€” for example, weekly checkout-draft cleanup or daily expired session removal. Manage, pause, resume, or run jobs anytime underย WooCommerce โ†’ Settings โ†’ Bulk Cleanup โ†’ Schedules.

Can I restore deleted data?

  • It depends on how you deleted the items.

    1. Move to Trashย (available for orders, products, coupons, and reviews): Items can be restored individually from the WordPress or WooCommerce trash screens. Bulk Cleanup does not include a one-click โ€œundoโ€ or bulk restore button.
    Delete permanentlyย orย Delete Now: These cannot be undone. There is no rollback.
    2. Users: Deletion is always permanent. Administrators and your own logged-in account are protected.

    Before any permanent delete, useย Previewย andย Export CSVย (up to 5,000 rows) to keep a backup. When in doubt, trash first and permanently delete later.

Can I delete WooCommerce customers without orders?

  • Yes โ€” in several ways:
    1. Users tabย โ€” enableย Only users without orders, then preview and delete.
    2. Cleanup toolsย โ€” chooseย Delete Users Without Orders, with optional role exclusions.
    3. Hygiene Dashboardย โ€” the โ€œUsers without ordersโ€ insight shows a live count withย Preview,ย Clean now, orย Scheduleย actions.
    4. Schedulesย โ€” automate the cleanup to run daily, weekly, or monthly.

    Administrators and the currently logged-in user are always excluded from deletion. You can also reassign a customerโ€™s orders to another user ID before removing their account.

Does it work with large databases?

  • Yes, operations run in configurable batches with a progress bar.

Related Products

Let customers subscribe to your products or services and pay on a weekly, monthly or annual basis.

Offer add-ons like gift wrapping, special messages or other special options for your products.

Use of your personal data
We and our partners process your personal data (such as browsing data, IP Addresses, cookie information, and other unique identifiers) based on your consent and/or our legitimate interest to optimize our website, marketing activities, and your user experience.