Import Guide

How to Import WooCommerce Products to Shopify

CSV Format Guide — what breaks and how to fix it

Updated June 2026 · 6 min read

Migrating a store from WooCommerce to Shopify usually starts with a product CSV export — and ends with a wall of import errors. WooCommerce's default export (and the popular Product CSV Import Suite format) uses its own column names, SKU-per-row variation structure, and HTML-heavy descriptions that Shopify's importer doesn't understand. Import the file unchanged and Shopify will reject rows, drop variants, or create unpublished, zero-price products.

Why WooCommerce exports don't work in Shopify

Shopify's importer is strict: every column header must match the exact name and casing from Shopify's official product CSV template, and variants must be expressed as additional rows sharing the parent's Handle. WooCommerce exports use names like "Regular price", "In stock?", and "Categories" that Shopify silently ignores — so most of your catalogue data never lands.

Beyond column names, there are the structural problems Shopify cares about:

  • WooCommerce has no Handle column — Shopify generates URLs from it and requires it
  • Stock status is instock / outofstock, not a numeric quantity
  • Variable products store variations differently — Shopify needs one row per variant under a shared Handle
  • Prices may carry currency symbols or thousands separators that Shopify rejects
  • Descriptions contain WooCommerce shortcodes ([...]) that should be stripped from Body (HTML)

WooCommerce vs Shopify: column name differences

Every column in a WooCommerce export needs to be renamed before Shopify will recognise it.

WooCommerce columnShopify column
NameTitle
DescriptionBody (HTML)
Short descriptionBody (HTML) / SEO Description
CategoriesType / Tags
TagsTags
SKUVariant SKU
Regular priceVariant Price
Sale priceVariant Compare At Price (see note)
StockVariant Inventory Qty
In stock?Variant Inventory Policy / Published
Weight (kg/lb)Variant Grams
ImagesImage Src
PublishedPublished (TRUE/FALSE)
(missing)Handle — must be generated

Manual fix: step by step

If you want to fix the CSV yourself, here's the full process in Google Sheets or Excel:

  1. Export from WooCommerce via Products → Export (or your CSV Import Suite). Keep all columns so nothing is lost before mapping.
  2. Rename every header using the table above. Shopify is case-sensitive — title won't work, it must be Title.
  3. Add a Handle column. Use =LOWER(REGEXREPLACE(B2,"[^a-zA-Z0-9]+","-")) on the Title column, then de-duplicate by appending -2, -3.
  4. Restructure variations. For variable products, create one row per variant: repeat the Handle, leave Title blank on child rows, and fill Option1/Option2 values.
  5. Convert stock + published. Map instock → published TRUE, and turn the Stock number into Variant Inventory Qty.
  6. Clean prices & weight. Strip currency symbols; convert kg/lb weights to grams as an integer for Variant Grams.
  7. Strip shortcodes from descriptions, then export as CSV UTF-8 (Excel: Save As → CSV UTF-8; Sheets: File → Download → CSV).
  8. Test with 5–10 products before importing the full catalogue.

On a 500-product WooCommerce catalogue with variations, this process typically takes 2–4 hours — and the variant restructuring is where most migrations break.

Automatic fix: upload to EcomCSVFix

EcomCSVFix handles all of the above automatically in a single pass. Upload your raw WooCommerce export and the tool will:

  • Rename all column headers to Shopify's exact format
  • Generate a unique Handle for every product
  • Convert 1/0 and Yes/No to TRUE/FALSE across all boolean columns
  • Strip currency symbols and normalise prices to 2 decimal places
  • Fix encoding issues if the file was saved from Excel
  • Flag any rows it couldn't fix automatically with a warning

You get a full cleaning report showing every change made, then a download link for the fixed file. The whole process takes under 30 seconds.

Frequently asked questions

Does WooCommerce export variations correctly for Shopify?

No. WooCommerce stores variations in a format Shopify doesn't read directly. Shopify needs one row per variant that repeats the parent Handle, with Option columns filled in. EcomCSVFix restructures these automatically.

What happens to my product images?

WooCommerce lists image URLs in an Images column. These map to Shopify's Image Src, one image per row. As long as the URLs are publicly reachable over HTTPS, Shopify will fetch them on import.

Will sale prices transfer?

Shopify uses Variant Price for the current price and Variant Compare At Price for the 'was' price. If you want strikethrough pricing, map WooCommerce's Regular price to Compare At Price and Sale price to Variant Price.

Can I keep my SEO/URLs?

Product handles will likely change between platforms. Plan 301 redirects from old WooCommerce URLs to the new Shopify product URLs to preserve SEO equity after migration.

Fix your WooCommerce CSV automatically

Upload your WooCommerce export — get a Shopify-ready file in under 30 seconds.

Fix my CSV for free →

No account required · Up to 5 files free