If you are setting up a WooCommerce store or moving a catalog over from somewhere else, you do not want to add products one at a time. This is the simple-product version. If your products have options like size and color, see the companion guide on importing variable products. Everything here still applies as a foundation.
What you need before you start
Three things:
- A WooCommerce store with the importer plugin installed.
- Your product data in a spreadsheet, saved as a CSV file.
- Image URLs if you want product photos pulled in automatically.
That is it. You do not need to touch code or the database.
Setting up your CSV
A CSV is just a spreadsheet saved in a plain, comma-separated format. Every row is one product. Every column is one piece of information about that product. The first row holds your column headers. Here is a minimal but complete set of columns for simple products:
| Column | What it holds | Example |
|---|---|---|
| sku | A unique code for the product | MUG-001 |
| name | The product title | Ceramic Coffee Mug |
| description | The full product description | A 12oz glazed ceramic mug... |
| short_description | The short summary | 12oz everyday mug |
| regular_price | The normal price | 14.99 |
| sale_price | Optional sale price | 11.99 |
| stock_quantity | How many you have | 50 |
| categories | Product category | Home > Drinkware |
| image | A URL to the product photo | https://.../mug.jpg |
| status | publish or draft | publish |
You do not need every column. Name and price are the essentials. Everything else fills in detail. A few tips that prevent headaches:
- Keep SKUs unique. The SKU is how the importer recognizes a product. Two products with the same SKU will collide.
- Use a consistent price format. Plain numbers like
14.99, not$14.99with a currency symbol, unless your importer is set to strip them. - For categories, a separator like
>creates a hierarchy.Home > Drinkwareputs Drinkware inside Home. - Save as CSV UTF-8 if your product names use accented characters or symbols, so they do not turn into garbled text.
Handling images
WooCommerce does not embed images in your CSV. Instead, the image column holds a URL, and during import the plugin downloads that image and saves it to your media library as the product's featured image. For images to import successfully:
- The URLs must be publicly accessible. A link that needs a login will not work.
- The links must actually load. Test a few in your browser.
- The importer should be able to handle URLs with or without a file extension, since many image hosts and CDNs serve images from links that do not end in
.jpgor.png.
If you want multiple images per product, a good importer lets you supply several URLs in one cell, separated by a comma, with the first becoming the featured image and the rest the gallery.
The import process
Step 1: Upload your CSV
Open the importer in your WordPress admin and upload the file. The importer reads your headers and shows a preview of the data so you can confirm it parsed correctly. If columns look shifted or merged, your CSV may have a formatting issue, such as an unescaped comma inside a description. Fixing it in your spreadsheet and re-saving usually solves it.
Step 2: Map the columns
Mapping connects each column in your file to the matching WooCommerce field. Quality importers auto-detect the obvious matches, so a column named regular_price lands on the regular price without you doing anything. You review the suggestions, fix any that are off, and move on. A live preview showing what a row will become as a finished product is the fastest way to catch a wrong mapping before it reaches your store. The docs go deeper on mapping columns if you want the full picture.
Step 3: Run it
Start the import. Larger files process in the background so you are free to do other things. The importer works through your rows, creating each product, assigning categories, and downloading images.
Step 4: Spot-check the result
Open a couple of the imported products. Confirm the title, price, description, category, and featured image all look right. If one product is correct, the rest of the batch followed the same path.
Re-running an import safely
One of the most useful habits is treating your spreadsheet as the source of truth. When you find a typo or need to update prices, you fix the spreadsheet and import the same file again. As long as the import matches on SKU, existing products update in place rather than duplicating. This means you are never stuck hand-editing products in the admin: you edit the sheet and re-import. The docs explain the available import modes (insert, update, or insert-or-update).
Common mistakes to avoid
Duplicate products on re-import. This happens when the import is not matching on SKU. Confirm your products have unique SKUs and that the importer is set to update existing matches.
Prices not importing. Usually a formatting issue. Remove currency symbols and thousands separators, or use an importer that cleans them for you.
Garbled characters in titles. Save your CSV as UTF-8.
Missing images. Confirm the URLs are public and load in a browser. If they do and images still fail, the host may be unreachable from your server, or the URLs lack a file extension and your tool rejected them. The troubleshooting guide walks through each cause.
Starting free
If you are just getting going, you do not need to pay for anything to do a basic import. The free Smacks! Simple Importer handles simple products, posts, and pages from CSV, XLSX, JSON, and XML, with drag-and-drop column mapping. It is a genuinely useful tool on its own.
When you outgrow it, usually when you start dealing with variable products, large variation-heavy catalogs, scheduled imports, or supplier feeds, SimpleImporter Pro picks up where the free version leaves off.