Looking to delete WooCommerce products in bulk? Whether you’re cleaning up old listings or removing test items, bulk product deletion can save you hours. You can do this using WooCommerce’s built-in dashboard tools, a CSV-based method with a product import export plugin for better control, or advanced approaches like SQL and WP-CLI for large-scale operations.
Running a WooCommerce store often involves keeping your product catalog up to date, removing outdated, duplicate, or test items to ensure everything stays fresh and relevant. But let’s be honest, manually deleting products one by one through the WooCommerce Products page can be a real drag, especially if you have a large inventory.
That’s where bulk deletion comes into play. WooCommerce’s built-in Bulk Actions tool allows you to delete several products right from the dashboard, but it can be a bit cumbersome if you have a large inventory. A quicker and more efficient alternative is to use a CSV file with the Product Import Export Plugin for WooCommerce and more advanced methods for handling large catalogs.
In this article, we’ll walk you through three proven methods to bulk delete WooCommerce products, so you can decide which one works best for your store.
Key Takeaways:
- Bulk deleting products from your WooCommerce store allows for quick removal instead of individually deleting them, saving considerable time and effort.
- Using the premium version of the Product Import Export Plugin for WooCommerce makes it easier to delete products and ensures that your store remains organized and current.
- Clean Up Outdated or Discontinued Products: Over time, your store may accumulate products that are no longer relevant. Maybe they’re out of stock, discontinued, or part of an old collection. Keeping these around clutters your catalog and can confuse customers.
- Remove Test or Duplicate Listings: If you’ve been experimenting with your store or have imported data multiple times, you might have test products or accidental duplicates. Bulk deletion helps clear these in one go.
- Save Time Compared to Manual Deletion: Deleting products one by one from the Products page can be painfully slow, especially if you have hundreds or thousands to remove. Bulk deletion streamlines this process, significantly cutting the time and hassle.
- Improve Store Performance and Navigation: A cleaner catalog isn’t just visually better; it can also help your store load faster and make navigation easier for customers, which improves the overall user experience.
- Prepare for Seasonal or Strategic Changes: Doing a product refresh for a new season? Switching to a different inventory strategy? Bulk deleting products helps you reset and organize your store in line with new goals or campaigns.
Before bulk deleting products in WooCommerce, it’s important to review a few precautions to avoid losing important data.
- Back up your WooCommerce store: Always create a backup before deleting products. This ensures you can restore your store if products are accidentally removed.
- Check if the products are linked to orders: Some products may be associated with previous orders. Deleting them won’t remove order records, but it may make order details harder to track.
- Consider hiding products instead of deleting them: If a product might be needed later, you can mark it as out of stock, draft, or hidden instead of permanently deleting it.
- Understand trash vs permanent deletion: Deleted products first move to the Trash, where they can be restored. Once permanently deleted from the trash, they cannot be recovered without a backup.
- Consider orphaned images — WooCommerce does NOT auto-delete media when a product is removed; flag this as something to clean up afterward
Need to bulk delete WooCommerce products? There are three ways to do it: use WooCommerce’s built-in Bulk Actions on the Products page, import a CSV file through a plugin like the Product Import Export Plugin for WooCommerce for faster, large-scale deletions, and advanced methods like SQL or WP-CLI.
Manually removing outdated, duplicate, or test products one by one is painfully slow — especially with a large catalog. Bulk deletion solves that.
Let’s look at all of them.
Method 1: Default Products Using WooCommerce Bulk Actions
WooCommerce includes a basic Bulk Actions feature that allows you to select multiple products from the Products page in your WordPress dashboard and delete them at once. For this,
- Go to Products > All Products.
- Use the checkboxes to select the products you want to delete.
- From the Bulk Actions dropdown, choose Move to Trash and click Apply.

Limitations of this method:
- Limited visibility: You can only see and select a set number of products per page, requiring manual selection across multiple pages.
- Time-consuming: Selecting and deleting products in batches can be tedious, especially if you have hundreds or thousands.
- No filters for custom conditions: You can’t easily filter products by SKU, category, stock status, or other custom fields.
Method 2: Bulk Delete WooCommerce Products Using CSV (via Import Export Plugin)
This is the most efficient and scalable method, ideal for stores with hundreds or thousands of products. Instead of manually selecting items, you can delete products in bulk using a CSV file with the help of a WooCommerce import export plugin.
One of the easiest ways to do this is to use the WebToffee Product Import Export Plugin for WooCommerce, which simplifies the process and gives you precise control over product deletion.
Why Use a CSV-Based Approach?
Using a CSV file allows you to:
- Delete thousands of products in a single operation
- Precisely control which products are removed (via ID, SKU, or filters)
- Perform repeatable bulk operations
- Avoid manual errors and save time
With a plugin like WebToffee’s, you also get advanced options such as deleting non-matching products, which is especially useful for syncing your catalog.
By leveraging a CSV file, the plugin identifies exactly which products to delete, ensuring accuracy and control over the process. This approach is especially useful when you’re dealing with variable products, outdated items, imported catalogs, or products coming from external inventory systems.
Requirements:
✅ Premium version of the Product Import Export Plugin for WooCommerce
The advanced features required for bulk deletion, including delete actions and deeper product control, are only available in the premium version. These capabilities go beyond simple imports and exports, giving you full flexibility to manage your product catalog.
✅ A properly formatted CSV file
To delete products, your CSV file must include key identifiers such as:
- Product ID
- SKU
- Or any other unique identifier
Along with these identifiers, the CSV should include a dedicated column specifying the delete action (e.g., Delete, Remove, or the exact keyword required by the plugin). During the import process, the plugin will read this action and automatically delete the matching products from your store.
How It Works
The process follows a simple workflow:
Export products → Modify CSV → Re-import with delete settings
Here’s a quick overview of what we’ll be doing:
- Export products from your store to a CSV file using the Product Import/Export Plugin.
- Edit the CSV to remove the products you no longer want on your site.
- Re-import the file using the same plugin, this time with the “Delete non-matching products from store” option enabled. This will delete all products not listed in the CSV.
Export Your Current Products into a CSV File
Now, follow the steps below to export products from your WooCommerce store.
Step 1: Install & Activate the WebToffee Product Import Export Plugin
- After purchasing the plugin, download the plugin file from My Account > Downloads.
- Go to Plugins > Add New Plugin from your WordPress dashboard and upload the plugin file.
- Install and Activate the plugin.

Step 2: Select Product as Post Type for Export
After you have installed and activated the plugin, let’s see how the export process is carried out.
- Go to – WebToffee Import Export (Pro) > Export.
- Choose the post type as Product and proceed to select the export method.

Step 3: Choose Advanced Export Method
- Now select the method for exporting the products. You will have two options: Quick export and Advanced export.
- Let’s select Advanced export and proceed to the next step.

Step 4: Filter Product Data to Export
Here, you can customize the export by selecting the number of products to be exported and specifying which products, categories, or tags to include or exclude.
However, if you want to export all products, it’s best to skip these steps.

Step 5: Map and Rename Export Columns
Here, you can decide which information to export and how to organize it. You can rearrange the product fields, rename the columns, and select specific fields to appear in the output export file.
Since we have to export all the products, you can skip configuring and proceed directly to the next step. If you prefer to rename or rearrange any fields, you can do so before moving forward.

Step 6: Set Advanced Options/Batch Export of Products
In this final step, you can customize the export file name and format, as well as access advanced options like scheduling, batch exporting, and more.
- In the Delimiter drop-down, choose a separator (comma, semicolon, tab, space) that differentiates columns in the CSV file.
- Select the number of products to be exported in a single batch. By default, it’s set to 100.
- Once done, click Export to start exporting your products.

You can then download the CSV file and modify it to remove any products you no longer want on your site.
Prepare the CSV for Deletion
After exporting your product catalog, you need to edit the CSV file to specify which products should be deleted. There are two ways to do this, depending on whether you want to remove specific products or keep only certain ones.
Option 1: Delete Specific Products by Setting Status to “Trash”
Use this method when you already know which products you want to delete.
Open the exported CSV in a spreadsheet editor like Excel or Google Sheets. Remove the rows for products you want to keep so that the file contains only the products you want to delete. Then, locate the post_status column and change its value to trash for those products.
Make sure the CSV includes a unique identifier, such as ID or SKU, so the plugin can match each row with the correct product.
What it looks like in practice:
| ID | SKU | post_title | post_status |
|---|---|---|---|
| 1042 | DISC-BLK-001 | Black Widget (Discontinued) | trash |
| 1043 | DISC-BLK-002 | Black Widget v2 (Discontinued) | trash |
| 1089 | TEST-SAMPLE-01 | Test Product – Do Not Publish | trash |
When the file is imported, those products will be moved to the WooCommerce Trash. They can still be restored from Products > Trash, or permanently removed by emptying the trash.
Option 2: Keep Certain Products and Delete Everything Else
This method works best when you want to keep only a specific set of products and remove the rest.
Open the CSV and keep only the rows for products that should remain in your store. Do not change the post_status values. During import, enable the option “Delete non-matching products from store.” The plugin will compare the CSV with your store and automatically delete any products that are not listed in the file.
Example scenario: Say your store has 3,000 products. You’re switching to a new supplier, and only 1,800 products will carry forward. Rather than manually identifying and trashing the 1,200 items you’re dropping, you simply keep the 1,800 products in the CSV, enable “Delete non-matching products from store,” and import. The plugin handles the rest.
Because this method can remove large numbers of products, make sure you double-check the CSV and keep a backup before importing.
Which Option Should You Pick?
The right choice depends on which list is shorter and easier to define:
Choose Option 1 (Trash specific products) when you know exactly which products need to go. For instance, a list of SKUs from your warehouse team, a specific category of expired items, or test products with a recognizable naming pattern. This is the safer approach because it only touches the products explicitly listed in your file.
Choose Option 2 (Delete non-matching) when it’s easier to define what stays than what goes. For example, a new season’s catalog from your supplier, a post-migration cleanup, or a full inventory reset. It’s faster for large-scale removals but carries more risk if the CSV is incomplete.
Regardless of which option you choose, make sure the ID or SKU values in your CSV exactly match what’s in your WooCommerce store. A mismatched ID will cause the plugin to either skip the product or treat it as a new import, which defeats the purpose entirely.
Now let’s proceed to importing these product files.
Import Products for Bulk Deletion
Follow the steps below to import products using the same plugin and delete them in bulk from your WooCommerce store.
Step 1: Select Product as the Post Type to Import
Once you have installed the plugin,
- Go to WebToffee Import Export (Pro) and select Import.
- Select Product as the post type to import from the dropdown menu.

Step 2: Select Advanced Import Method
Here, you may select the Advanced import option and upload the CSV file you prepared earlier.

Proceed to the next step.
Step 3: Map Imported Columns to Product Data Fields
Here, you can map the CSV file to the WooCommerce data fields. Mapping is required to ensure that the column headers in the CSV file match the corresponding WooCommerce data fields.

Step 4: Set Advanced Options for Product Import
This is the final step in importing products, and here, we will configure the option to delete products in bulk.
- Choose to Update the existing products in the store.
- Then, you will find an option to Delete non-matching products from store. Enable the option to delete products from your store that are not presented in the CSV file.
- Now, click the Import/Schedule button and select Import.

After the import process is completed, the plugin will compare the products listed in your CSV file with the products currently in your WooCommerce store. Any product not included in the CSV will be automatically removed.
This ensures that only the products you intentionally keep — those present in the CSV — remain in your catalog.
Advantages of this method:
- Fast Bulk Deletion: Quickly delete large inventories with just a few steps—ideal for stores with hundreds or thousands of products.
- Targeted Control: Filter and delete by any product field, such as SKU, ID, name, or category, giving you precise control over what stays and what goes.
- No Manual Selection: No need for manual selection or scrolling through multiple pages in the dashboard.
- Up-to-Date Inventory: Keeps your product catalog up to date by automatically removing outdated or irrelevant items, helping you maintain a clean and relevant storefront.
- Error-Free Execution: Minimizes human error by using structured CSV data for deletion, ensuring accuracy.
- Automated Maintenance: Supports scheduled or repeat deletion tasks, making it perfect for ongoing store maintenance and inventory refreshes.

Method 3: Advanced Method (SQL / WP-CLI / Developer Approach)
This method is best suited for developers or advanced users who need full control over bulk product deletion. It allows you to remove large numbers of products quickly, but it also carries a higher risk of permanent data loss.
Important: Always take a full backup and test on a staging site before proceeding.
Option 1: Delete Products Using SQL
You can delete WooCommerce products directly from the database using tools like phpMyAdmin or Adminer.
- Products are stored in the wp_posts table under:
- product
- product_variation
- Always run a SELECT query first to preview products before deleting
- Deleting products often involves multiple tables (posts, postmeta, taxonomy)
Option 2: Delete Products Using WP-CLI
WP-CLI lets you delete products using command-line operations, making it fast and efficient for large datasets.
Common commands:
- Preview products: wp post list –post_type=product –format=ids
- Delete all products: wp post delete $(wp post list –post_type=product –format=ids) –force
- Delete only trashed products: wp post delete $(wp post list –post_type=product –post_status=trash –format=ids) –force
Risks of Advanced Methods
SQL
- Permanent deletion with no undo
- Accidental removal of incorrect data
- Orphaned metadata and relationships
- Potential site issues if misused
WP-CLI
- No undo once commands are executed
- Incorrect filters can delete unintended content
- Requires command-line experience
While these methods are powerful, they are not recommended for most users. For safer and more controlled bulk deletion, the CSV method using the plugin remains the best option.
Which Method Should You Use?
Choosing the right method depends on your store size, technical expertise, and how much control you need over the deletion process.
Here’s a quick comparison to help you decide:
| Method | Best For | Difficulty | Handles 1000+ Products? | Reversible? |
|---|---|---|---|---|
| WooCommerce Bulk Actions | Small stores (<100 products) | Easy | No | Yes (moves to trash) |
| CSV via Plugin (Recommended) | Selective bulk deletion with control | Medium | Yes | No |
| SQL via phpMyAdmin | Full catalog wipe / advanced filtering | Advanced | Yes | No |
| WP-CLI | Developer workflows & automation | Advanced | Yes | No |
What Happens After You Delete? Post-Cleanup Tasks
Deleting your products is only half the job. WooCommerce doesn’t exactly tidy up after itself, so there are a few loose ends you’ll want to address before moving on. Skipping these steps can leave your store cluttered behind the scenes, confuse search engines, and even slow things down over time.
1. Empty the Trash
When you delete products using either method above, WooCommerce doesn’t remove them right away. They get moved to the Trash, where they sit for 30 days before WordPress auto-deletes them.
If you want them gone now and you’re sure you won’t need them back, head to Products > All Products, click the Trash tab, and hit Empty Trash.
2. Clean Up Orphaned Product Images
Here’s something that catches a lot of store owners off guard: when WooCommerce deletes a product, it does not delete the images attached to that product. Your featured images, gallery images, and variation images all stay behind in the Media Library, taking up storage and making a mess of things.
For a quick manual check, go to Media > Library, switch to list view, and click the Unattached filter. This shows you media files that aren’t linked to any post or product. A good chunk of these will be leftover product images you no longer need.
3. Clear Your Cache and Reindex
If you’re running any kind of caching, and most stores are, whether it’s through a plugin like WP Rocket, W3 Total Cache, or your hosting provider’s built-in cache, now’s the time to flush it. Cached pages may still show deleted products in category listings, search results, or related product sections until the cache refreshes.
The same goes for search. If you’re using a search plugin like SearchWP, ElasticPress, or Algolia, trigger a manual reindex after a bulk delete. Otherwise, customers might search for a product, find it in the results, click through, and land on a 404 page. Not a great experience.
Most caching and search plugins have a one-click purge or reindex button in their settings and it only takes a moment.
4. Check Your Sitemap
Your XML sitemap is what tells Google (and other search engines) which pages exist on your site. If you’ve deleted a large batch of products, those URLs remain in the sitemap until it regenerates.
If you’re using an SEO plugin like Yoast SEO or Rank Math, the sitemap usually updates automatically. But after a large bulk delete, it’s worth forcing a refresh just to be safe.
Leaving dead URLs in your sitemap won’t crash your site, but it sends search engines on a wild goose chase and can result in a pile of crawl errors in Google Search Console over time.
5. Set Up 301 Redirects (If Needed)
This one’s easy to overlook, but it matters, especially if any of the deleted products had been around long enough to get indexed by Google or earn backlinks from other sites. When someone (or a search engine) visits a deleted product URL, they’ll get a 404 “Page Not Found” error.
The fix is to set up 301 redirects that point those old URLs to relevant pages, usually the parent category page or a similar product.
You don’t need to do this for every deleted product. Focus on the ones that actually had traffic or backlinks.
You can delete all products at once using methods like WooCommerce bulk actions, CSV import (with delete options enabled), SQL queries, or WP-CLI commands. For most users, the CSV method via a plugin is the safest and easiest approach.
No, bulk-deleted products are permanently removed unless they were moved to trash. To restore them, you’ll need a backup or previously exported CSV file.
Using a CSV file along with the premium version of the Product Import Export Plugin for WooCommerce allows you to delete multiple products at once efficiently. It’s a much faster and more efficient method than manually deleting products from the WooCommerce Products page, especially when dealing with large inventories.
Here’s how it works: First, export your products into a CSV file. Then, simply edit the file to remove any products you no longer want in your store. After that, import the file back into WooCommerce, and the plugin will automatically delete any products that aren’t listed in the CSV.
No, only products not listed in the CSV file will be deleted. The products that remain in the CSV file will remain in your store after the import process.
The bulk delete function only removes products not in the CSV file. It also removes all associated product data, such as images and descriptions, from your store.
No, existing orders will remain intact. However, the product will no longer be linked, and its details may appear as plain text in the order history.
Conclusion
This article aims to show you how to delete products in bulk via CSV in WooCommerce. There are several instances where you may need to delete products in bulk from your WooCommerce store. Deleting each product from the WooCommerce Products page can be daunting. This is why you need a plugin to make your effort easier.
The WooCommerce Product Import Export plugin mentioned in this article also has a free version with some of the basic features you’re looking for. Check out the free plugin and see if it suits your requirements.
However, if you need advanced product filtering options and bulk delete products, you’ll need to purchase the premium version.
If you have any questions, drop them in the comments section; we’ll be happy to help you.
Comments (13)
Jessica Thielke
September 1, 2024
Hallo,
leider habe ich zu spät gelesen, dass man die Produkte, die man behalten will in die CSV Liste eintragen muss.
Schön, dass ich es mit einem Produkt von 6.500 Produkten versucht habe.
LEIDER kann man den VORhang nicht abbrechen. Selbst wenn man abbrechen druckt und sogar in der Hitorie auf löschen drückt, werden im hintergrund alle Produkte weiterhin gelöst. Selbst wenn ich manuel in gelöschte Produkte gehe und versuche sie wiederherzustellen, fängt weptoffee immer und immer wieder von vorne an.
Gut dass ich ein stündliches Backup habe. Blöd nur, dass ich die Bestellungen dann auch verliere und sie manuel wieder herstellen darf.
Also diese Funktion oben ist überlst schlecht programmiert von webtoffe. Jede stink normale Plattform kann mit einem einzigen klilck die in der vorhandenen CSV Datei befindlichen Produkte löschen und muss nicht wiedersprüchliche IMPORT aussagen alleine in der Oberfläche versuchen zu verstehen.
Vielleicht kann webtoffe einfach diese simple funktion im import programmieren.
Danke
Grüße
Jessica
Hema
September 18, 2024
Hello Jessica,
Thanks for reaching out. Currently, the plugin deletes the products that are not in the CSV. We understand that your requirement is actually the inverse of this. We can help you with a customized code snippet to meet your requirement. Kindly contact customer support to get the code.
Matt Kerwick
March 6, 2024
Is there an update on the features discussed in the comments here. I need to remove a lot of products.
I would also like to know what happens to the images. We need to remove all associated images with each deleted product. How can we do this?
Hema
April 2, 2024
Hello Matt,
Thanks for reaching out. The discussed feature is not developed yet. Instead, importing the CSV file after changing the post_status column data to “trash” will be a workaround.
Note: Please make sure that the ID or SKU of the product is the same on the product page and in the CSV file.
There is another option in our pro version where user can delete the products which are in the store that are not present in the CSV file.
Ralph
March 24, 2022
“Delete non-matching products from store” option is no longer in latest version of the plugin
Alan
March 24, 2022
Hi,
The option is still present in the plugin. Can you please share the plugin version installed on your site?
Vithlesh
August 22, 2021
Hii I want to delete product when I scan QR code of product through mobile, so it should delete the product directly from woocomerce database. Is it possible? If yes, than please share its solution on my mail.
[email protected]
Mark
August 25, 2021
Hi,
You can delete certain products from the site by not including them in the CSV file and then import the CSV file with the Delete non-matching products from store option enabled so that all the products that are not in the SV file will be deleted. Please make sure that you either include ID or SKU in the CSV file and is mapped.
Kristian Brown
August 14, 2020
This is almost 100% the opposite way I’d want to remove products in bulk – by uploading all the details of the ones I want to keep?
I searched everywhere to find somewhere to help me delete products based on a list of SKUs given to me by a shop manager. In the end I’ve written some simple instructions using SQL to convert SKU’s to post_ids then clean up the post table and post_meta tables. I’ve shared it here; https://kristianbrown.co.uk/delete-woocommerce-products-using-skus/
Phil Birnie
October 22, 2020
I agree – it would be great if you could upload a CSV with a single column of SKUs and it would delete that set.
Alan
October 22, 2020
Hi,
Thank you for your valuable suggestion. We have included it in our development backlogs and will try to implement it in the upcoming releases.
Christian Brand
November 4, 2021
Is this feature already implemented? Currently this is exactly what I need 🙂
Alan
November 9, 2021
Hi,
Sorry to say that this feature is not yet implemented. Currently you can delete the products that are in the CSV file by setting the post_status as “trash” and those products will be moved to the trash.