Turn it on
- Go to WooCommerce → Powerups and switch on Database clean-up in the Performance group.
- Click Configure, then the Database clean-up tab.
The Database clean-up tab after a scan, with a count for each check
Scan
Click Scan. Each check counts its leftover rows, in short steps with a progress bar and Stop. Deleting is permanent, so the tab reminds you: “Deleting is permanent. Take a database backup first.”- “Checked 3 hours ago” updates once everything has been scanned.
- A count older than a day, or taken before a setting changed, needs a new scan (“The count is more than a day old. Scan again.”). Click Scan on that row.
- After a clean, checks marked Slower to scan show “Scan again to see what’s left.”
- A check that hits a database error says “Couldn’t be counted: the database returned an error. Scan again.”
- Checks you can’t act on aren’t scanned for you.
- On multisite, User meta without a user shows Network admins only to site admins.
Clean
Clean one check at a time. How you confirm depends on its badge:
The clean runs in short steps with a progress bar and Stop. When it’s done: “Deleted n rows: check.”
Stopped part-way
A stopped clean shows “Stopped part-way: n rows deleted so far.” with:- Continue: carry on where it stopped.
- Discard (click twice): forget the stopped clean-up. “Discarded. What was already deleted stays deleted.” Discard needs the same level as the clean and doesn’t undo anything.
Can’t clean a row?
The button is disabled with a reason: Needs a network admin, Needs a higher access level or Your role can’t delete these (your role lacks the WordPress permission for that data, for example deleting others’ posts or moderating comments).View example rows
View shows up to 10 example rows. It’s only offered to admins who can clean that check.- Meta rows (post, comment, term, user and order item meta) show the key and the value’s length, never the value.
- Titles, item names and transient names are shown with email addresses, IP addresses and phone numbers masked. Dates, SKUs and prices stay readable.
- Phone numbers written the national way with spaces (020 7946 0958) are always hidden. A plain run of digits (5551234567) is hidden only when a word like Tel, Phone, Mobile or Call comes just before it, or when it’s the whole value, so model, order, tracking and batch numbers stay readable.
The checks
WooCommerce leftovers
Scheduled action history
Failed actions aren’t cleaned here. When there are some, a line links to the Scheduled action monitor to review them.
WordPress clutter
Always kept
Orders, order notes, guest customers, rows with ID 0, and Customer tags and other user taxonomies are never cleaned.Table sizes
Table sizes shows estimated rows, size and free space per table from the last scan. Free space is room the database already reuses for new rows. The tool never shrinks tables, because that locks them and can take minutes on a big store.Settings
What counts as old
Rows newer than these are never counted or cleaned.
Sessions, transients, WooCommerce logs and scheduled actions follow their owner’s own expiry.
Weekly clean-up
- Clean Safe items weekly (off by default) runs in the background once a week. It works only while the power-up is on.
- Clean these every week picks which checks run. Only Safe checks can. By default: expired shopper sessions, expired transients and term links to missing terms. Checks marked Slower walk whole tables, so they aren’t selected at first.
- You can only select checks your role may clean, and every save checks this again.
Recent clean-ups
The last 20 clean-ups: rows deleted, about how much space, who started, who continued and who discarded it (or “Weekly clean-up”), when, and notes such as rows that failed, rows that weren’t deleted, expired log files cleared, or “stopped making progress”.Performance
With Action Scheduler’s usual database tables, old finished and canceled actions are deleted in batches of 250, together with their logs. On a test store, 159,000 finished actions were cleaned in two steps instead of about eleven. For checks of rows whose parent is gone, such as Order item details without an item or Term links to missing terms, View starts reading where the last scan first found them, then reads the rest of the table. Example rows show up quickly even when they sit at the end of a big table.Data
Removing the plugin removes the power-up’s options and background jobs. Deleted rows stay deleted.