How to import products in bulk
A CSV import can populate hundreds of products in minutes, or duplicate your whole catalogue in the same amount of time if the file is wrong.
Adding products one at a time through the WordPress admin is fine for a handful of items and unworkable for a real catalogue. WooCommerce's built-in importer handles a CSV file of any reasonable size, but a badly formatted file can just as easily create duplicate products, wipe out stock levels, or silently skip products that fail to match the expected format — so the preparation matters more than the import step itself.
What a WooCommerce product import file needs
WooCommerce expects a CSV with specific column headings — name, SKU, price, regular price, stock quantity, categories, and images among the most important. The exact required and optional columns are documented by WooCommerce itself and are worth checking directly rather than guessing, since column names have to match what the importer expects to map correctly.
Under Products > All Products > Export, export your existing products — even if you only have two or three test products in a fresh install — to see exactly the column format and layout WooCommerce produces. Building your import file to match that format is far more reliable than working from a generic template you found elsewhere.
The SKU is what prevents duplicates
SKU (stock keeping unit) is the field WooCommerce uses to recognise whether a row in your file is a new product or an update to an existing one. If every product in your file has a unique SKU that matches what is already in the store where relevant, re-running an import updates existing products correctly. If SKUs are missing or duplicated within the file itself, the importer can create duplicate products rather than updating the ones you intended.
If you re-import a file that has an outdated stock quantity for a product you have since sold or restocked manually, the import will overwrite the current, correct stock level with the stale number in the file. Keep your import file's stock column current, or exclude the stock column from re-imports where stock has since changed through sales.
Images in a bulk import
The images column in a CSV import file needs a URL the import process can fetch from — either a public URL where the images are already hosted, or images already uploaded to your WordPress media library referenced correctly. A column full of local file paths from your own computer will not work; the server needs to be able to reach the image over the web to pull it in during the import.
Test on staging first
Run the import against a staging copy of the store before touching the live catalogue, particularly for a large file or a first attempt at this process. A malformed file run directly against a live store can leave hundreds of half-correct products for a customer to browse while you are still fixing the formatting — testing on staging avoids that entirely.
Mapping columns during import
WooCommerce's importer shows a column-mapping screen that guesses which of your CSV columns correspond to which product field. Check every mapping rather than accepting the automatic guess by default, particularly for anything ambiguously named in your original file — a column called "cost" mapped to the wrong price field is an easy and expensive mistake to make without noticing.
After the import: spot-check, do not assume
- Open several imported products individually and confirm the price, stock quantity, category and at least one image are all correct.
- Check the shop and category pages to confirm imported products display properly, not just that they exist in the admin list.
- Place a test order for one imported product to confirm checkout, tax and shipping all calculate correctly against it — an imported product can be missing a shipping class or weight that a manually created one would have had set by default.
If you are bringing a whole catalogue over from a different platform rather than just adding new products to an existing WooCommerce store, treat this as one part of a larger migration — see migrating a store without losing orders for the rest of what needs to move alongside the catalogue.
Once products are imported, keeping stock levels accurate if you also sell elsewhere is the next thing worth setting up — see keeping stock in sync across channels.
Related reading
Installing the plugin is the easy part — this is the order to configure it in so nothing important gets skipped.
How to keep stock in sync across channelsSell the same product in two places without a single source of truth for stock, and overselling is a matter of when, not if.
How to migrate a store without losing ordersA store never stops taking orders just because you are moving it, so the migration has to account for orders placed mid-move.
How to add product structured dataStructured data is what lets a search result show a price and stock status without a customer ever clicking through.