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:

  1. A WooCommerce store with the importer plugin installed.
  2. Your product data in a spreadsheet, saved as a CSV file.
  3. 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
skuA unique code for the productMUG-001
nameThe product titleCeramic Coffee Mug
descriptionThe full product descriptionA 12oz glazed ceramic mug...
short_descriptionThe short summary12oz everyday mug
regular_priceThe normal price14.99
sale_priceOptional sale price11.99
stock_quantityHow many you have50
categoriesProduct categoryHome > Drinkware
imageA URL to the product photohttps://.../mug.jpg
statuspublish or draftpublish

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.99 with a currency symbol, unless your importer is set to strip them.
  • For categories, a separator like > creates a hierarchy. Home > Drinkware puts 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 .jpg or .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.