3 min read
By HappyCSV Team

Import Products to WooCommerce via CSV

Bulk upload products to WooCommerce using the built-in CSV importer. Handle images, variations, categories, and attributes correctly.

Import Products to WooCommerce via CSV

Adding products one by one in WordPress is slow. If you have a catalog of 500 items, you need CSV import.

WooCommerce has a built-in product importer that is surprisingly robust. It handles simple products, variable products (size/color), and even images.

The CSV Format

WooCommerce uses a specific schema. The easiest way to get a template is to Export a few existing products first.

Key Columns:

  • ID: Leave blank for new products. Use exact ID to update existing ones.
  • Type: simple, variable, grouped, or external.
  • SKU: Unique identifier.
  • Name: Product title.
  • Published: 1 (yes) or 0 (no).
  • Regular price: Number (no currency symbol).
  • Images: URL to the image (e.g., https://mysite.com/image.jpg).
  • Tax: product_cat: Category name.

Step-by-Step Import

  1. Go to Products:

    • In WordPress Admin, go to Products > All Products.
    • Click Import (top button).
  2. Upload CSV:

    • Choose your file.
    • Check "Update existing products" if you are modifying stock/prices (matches by ID or SKU).
  3. Map Fields:

    • WooCommerce maps columns automatically.
    • Review fields like "Price", "Description", "SKU".
  4. Run Importer:

    • Click Run the importer.
    • Wait for the progress bar.

Importing Images

This is the trickiest part. You cannot upload an image file via CSV. You must provide a URL.

  1. Upload your product images to your WordPress Media Library (or an external host).
  2. Copy the URL of each image.
  3. Paste the URL into the Images column in your CSV.
  4. For multiple images, separate URLs with commas.

WooCommerce will download these images to your server and attach them to the product during import.

Importing Variable Products (Size/Color)

This requires multiple rows.

Row 1 (Parent):

  • Type: variable
  • SKU: shirt-parent
  • Name: Cool Shirt
  • Attribute 1 name: Size
  • Attribute 1 value: S, M, L
  • Attribute 1 visible: 1
  • Attribute 1 global: 1

Row 2 (Variation):

  • Type: variation
  • Parent: shirt-parent (Must match Parent SKU)
  • Attribute 1 name: Size
  • Attribute 1 value: S
  • Regular price: 20.00

Row 3 (Variation):

  • Type: variation
  • Parent: shirt-parent
  • Attribute 1 name: Size
  • Attribute 1 value: M
  • Regular price: 20.00

Common Issues

1. "Invalid file type"

WordPress security sometimes blocks CSV uploads. Fix: Add define('ALLOW_UNFILTERED_UPLOADS', true); to wp-config.php (temporary) or use a plugin to enable CSV uploads.

2. Images Not Importing

Fix: Ensure the URLs are public (http/https). If your site is in "Maintenance Mode", the importer can't fetch the images.

3. Timeout / Memory Limit

Fix: If importing 10,000 products, split the CSV into chunks of 500. Or increase PHP max_execution_time.


Preparing a WooCommerce CSV? Use HappyCSV to merge supplier lists, calculate prices, and format your columns before importing.

Need to handle CSV files?

HappyCSV is the free, secure way to merge, split, and clean your data — all in your browser.