WooCommerce: Bulk Delete Orders / Products Super Fast

There are times when you have thousands of WooCommerce orders, products, categories, tags, coupons, customers or custom fields and the “Bulk Edit > Delete” option in the WordPress dashboard is simply not cost- and time-effective.

Maybe because your website goes down as it can’t process that much information at the same time, or maybe because you’re on a low budget and can’t afford to hit “delete” 100 or 1000 times by hand.

Thankfully, WooCommerce information is stored in the WordPress database, which means we can access it, write a “SQL DELETE statement”, and bulk delete anything you like, in seconds. Of course, and you will find warnings below, NEVER DO THIS on a live website as I can’t guarantee this won’t have any side effects.

So, have fun!

How to Access the WordPress Database

Your hosting control panel should have a “phpMyAdmin” icon or link. This will allow you to login to your database. Here’s an example with SiteGround hosting.

Now, select your database from the left and once its tables get listed in the right panel note down the database tables prefix. By default this is “wp_“, but each WordPress install could possibly use a different custom prefix. In my case it’s “apos_“, as you can see from the screenshot.

Then, go to the “SQL” tab and write one of the DELETE statements you find below, based on what you need to erase. Of course, you must change all the occurrences of “wp_” to your custom WordPress database table prefix (“apos_” in my case). That’s it!

1. Bulk Delete All Orders

DELETE FROM wp_woocommerce_order_itemmeta;
DELETE FROM wp_woocommerce_order_items;
DELETE FROM wp_comments WHERE comment_type = 'order_note';
DELETE FROM wp_postmeta WHERE post_id IN ( SELECT ID FROM wp_posts WHERE post_type = 'shop_order' );
DELETE FROM wp_posts WHERE post_type = 'shop_order';

2. Bulk Delete All Products

DELETE FROM wp_postmeta WHERE post_id IN ( SELECT ID FROM wp_posts WHERE post_type IN ( 'product', 'product_variation' ));
DELETE FROM wp_posts WHERE post_type IN ( 'product', 'product_variation' );

3. Bulk Delete All Trashed Products

DELETE FROM wp_postmeta WHERE post_id IN ( SELECT ID FROM wp_posts WHERE post_type = 'product' AND post_status = 'trash' );
DELETE FROM wp_posts WHERE post_type = 'product' AND post_status = 'trash';

4. Bulk Delete All Coupons

DELETE FROM wp_postmeta WHERE post_id IN ( SELECT ID FROM wp_posts WHERE post_type = 'shop_coupon' );
DELETE FROM wp_posts WHERE post_type = 'shop_coupon';

5. Bulk Delete All Order Notes

DELETE FROM wp_commentmeta WHERE comment_id IN ( SELECT ID FROM wp_comments WHERE comment_type = 'order_note' );
DELETE FROM wp_comments WHERE comment_type = 'order_note';

Rodolfo Melogli

Business Bloomer Founder

Author, WooCommerce expert and WordCamp speaker, Rodolfo has worked as an independent WooCommerce freelancer since 2011. His goal is to help entrepreneurs and developers overcome their WooCommerce nightmares. Rodolfo loves travelling, chasing tennis & soccer balls and, of course, wood fired oven pizza.

22 thoughts on “WooCommerce: Bulk Delete Orders / Products Super Fast

  1. Can we delete the coupons in bulk but from a specific date ?

    1. Hi Suhail, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

  2. Is there a way to delete all “customer” role accounts?

    1. I’m sure some SQL can be written to achieve that, just I don’t have that right now. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

  3. Is it possible to delete all order data in the Analyics too ?

    1. I’m sure there is a way. I don’t use Analytics so I didn’t bother researching it

  4. how to remove all product tag ?

  5. Hi, thank you for that snipped. I found a problem that data form deleted orders exists in Woocommerce Analytics.

    1. Not a problem of mine, I have that disabled LOL 😀

      Seriously, I’m sure that’s possible but you’d need to figure out where the Woo Admin data goes inside the DB and add those delete statements to that

  6. Hi,

    Thanks for your posts!

    How can i delete products with determitated date?, or products without images?

    Thanks a lot!, sorry about my english bro

    1. Hi bro, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

  7. Hi
    Thank you for this tuto 🙂

    There’s an error #5

    DELETE FROM wp_commentmeta WHERE comment_id IN ( SELECT ID FROM wp_comments WHERE comment_type = 'order_note' );

    We have no ID in “wp_comments”, so impossible to delete the Ordre Note.
    What ID we can take?

    Olivier

  8. What about the download product permissions table ?

    1. Not 100% sure. Have you found that out?

  9. You’re missing a parenthasis in #2

      1. Still getting an error on #2.

  10. Can you bulk delete products associated with a certain category?

    1. Hello Cor, thanks so much for your comment! Yes, this is definitely possible, but I’m afraid it’s custom work. If you’d like to get a quote, feel free to contact me here. Thanks a lot for your understanding!

Questions? Feedback? Support? Leave your Comment Now!
_____

If you are writing code, please wrap it between shortcodes: [php]code_here[/php]. Failure to complying with this (as well as going off topic, not writing in English, etc.) will result in comment deletion. You should expect a reply in about 2 weeks - this is a popular blog but I need to get paid work done first. Please consider joining BloomerArmada to get blog comment reply priority, ask me 1-to-1 WooCommerce questions and enjoy many more perks. Thank you :)

Your email address will not be published.