Checked 7 October 2026. Features and prices come from each vendor’s own page, linked below. “Not stated” means the page doesn’t say, not that the feature is missing. We make Failed & Spam Order Cleaner, so weigh our row accordingly and check the others yourself.
Which one fits?
It depends on which job you have, because these tools do three different things.
- An attack already happened and the Orders screen is full of junk: you need a cleanup tool. Bulk Cleanup and our Failed & Spam Order Cleaner both do that.
- Unpaid orders pile up slowly and block stock: an auto-cancel or expiry plugin fits, since it handles old pending orders on a schedule.
- You want the attack to stop: you need a blocking tool such as Velocity Guard, which works at checkout and doesn’t clean anything up.
Most stores that have been hit will want a blocker and a cleanup tool together.
The comparison
| Option | What it is for | Statuses it targets | Trash or delete | Skips paid orders | Report on who was behind it | Undo | Listed price |
|---|---|---|---|---|---|---|---|
| WooCommerce Orders screen | Manual bulk actions | Any, by hand | Trash, for the orders selected on the page | No, you check yourself | No | Restore from the trash | Included |
| Bulk Cleanup (WooCommerce.com) | Removing orders in bulk | Filter by status, date range, order total, payment method and customer type | Both: move to trash, or delete now | Not stated | Not stated | Trash is reversible. Deleted orders are not recoverable. | Paid subscription. Price not on that page. |
| Auto-Close Old Pending Orders | Cancelling old unpaid orders on a schedule | Pending payment | Neither: it cancels them | Yes: paid, processing and completed are left alone | Dashboard statistics on pending and cancelled orders | Not stated | $29 a year |
| Automatic Order Expiration | Expiring old pending orders | Pending (failed orders not mentioned) | Neither: it moves them to an Expired status | Not stated | Summary emails listing the orders affected | Yes, from the Orders screen | $49 a year |
| Velocity Guard | Blocking card testing at checkout | None: it doesn’t clean up | No | Not applicable | Event log | Not applicable | Free, with a Pro upgrade. Pro price not on that page. |
| Failed & Spam Order Cleaner (ours) | Cleaning up after an attack | Failed, Pending payment, On hold and Draft | Trash by default. Permanent delete needs a ticked box and typing DELETE. | Yes by default (a setting), plus subscription orders and the last hour | Yes: distinct emails, IP addresses and countries, with CSV export | Whole run, in one click from the report | See pricing |
What can the Orders screen do on its own?
It can do the job, slowly. On our test store the bulk actions apply to the orders selected on the page in front of you, so clearing a few thousand failed orders means many rounds of selecting and waiting. It doesn’t tell you which orders were once paid, and it gives you no picture of the attack, so you have to check each batch by eye. For a handful of orders that is fine. For an attack it isn’t.
What does Bulk Cleanup do?
It is WooCommerce’s own cleanup extension, and its documentation describes filtering orders by status, date range, order total, payment method and customer type, previewing the matches, and then either moving them to the trash or deleting them now. It is a general tool: it also covers other kinds of data, not just orders. The page doesn’t mention skipping orders that were once paid, a report on the emails, IP addresses or countries behind the orders, or a way to restore a run once orders are permanently deleted. It requires a subscription, and the page doesn’t give a price.
If you need a general cleanup tool for several kinds of store data, that is worth a look. If your problem is specifically an attack and you want to know who was behind it, the documentation doesn’t describe that.
What about plugins that cancel or expire old orders?
Auto-Close Old Pending Orders cancels unpaid pending-payment orders after a time you set, restores stock when it does, skips paid, processing and completed orders, and checks hourly, with a Run Now button. Automatic Order Expiration moves pending orders to a separate Expired status after a number of days, never deletes them, and lets you restore them from the Orders screen.
Both solve a tidy-up problem on a schedule, and neither removes orders from the list, so they won’t empty the Orders screen after an attack. Neither page describes a report on who placed the orders. They are a good match for stock held by abandoned checkouts, and a different job from ours.
Do cleanup tools stop card testing?
No, and neither does ours. Velocity Guard is the example of the other category. Its page says it watches how quickly orders arrive from the same shopper, email or device and blocks suspicious bursts before they reach your payment processor. It doesn’t clean up orders that already exist. If attacks keep coming back, a blocker is what stops them, and a cleanup tool is what tidies what got through.
What does Failed & Spam Order Cleaner add?
Three things the other pages don’t describe. An attack report that counts the distinct emails, IP addresses and countries behind a run, with CSV export. A one-click restore of a whole cleanup from the report, as long as you moved the orders to the trash. And protection for orders that were once paid, orders linked to a WooCommerce Subscriptions subscription, and anything from the last hour. Paid-order protection is a setting and is on by default.
What it doesn’t do: it doesn’t stop an attack, it never blocks an email or IP address, and it doesn’t touch completed or processing orders. Our guide to clearing card-testing orders walks through a cleanup step by step.
Ready to decide? See screenshots, requirements and pricing for Failed & Spam Order Cleaner for WooCommerce.
View the add-on