1. Your Shopify product CSV
From Shopify admin: Products, Export, All products, CSV for Excel, numbers or other spreadsheet programs.
Choose a file or paste the text, then click Convert.
Result
Notes
Preview
| Type | SKU | Name | Parent | Regular | Sale | Stock |
|---|
The mapping, and what it leaves out
- Products: Title to Name, Body (HTML) to Description, Type (else Product Category) to Categories, Tags to Tags, Image Src rows to Images in Image Position order. Draft and archived products become drafts.
- Variants: more than one variant makes a
variableparent (SKU = the handle in capitals) and onevariationrow per variant naming it in Parent; Option names become attributes. A variant with no SKU, or a repeated one, gets a generated unique SKU and a note. - Prices: Variant Price is the Regular price. When Compare At Price is higher, it becomes the Regular price and Variant Price the Sale price.
- Inventory: tracked quantities become Stock and In stock?; "continue selling" becomes Backorders allowed. Variant Grams becomes Weight (kg). Taxable FALSE becomes Tax status none; shipping not required becomes virtual.
- Not converted:
- Vendor: no field in the standard importer; add it as a tag or with a brand plugin.
- SEO Title / Description: belong to an SEO plugin; use that plugin's importer.
- Cost per item: no core field; cost-of-goods plugins have their own columns.
- Gift cards, metafields, Google Shopping columns: plugin-specific; not carried across.
- Collections: not in Shopify's product CSV; recreate categories from Type.
Also not covered: orders, customers, pages, blog posts and URL redirects, and whether either platform will accept the file today. Import two or three products first.
Common questions
How do I move products from Shopify to WooCommerce with a CSV?
Export your products from Shopify (Products, Export, all products, CSV for Excel), paste or drop the file here, and download the WooCommerce CSV. In WordPress, go to Products, Import, choose the file, map any unrecognised columns, and run it. Try two or three products on a staging copy first.
How are Shopify variants converted?
A product with more than one variant becomes a variable product plus one variation row per variant. The parent's SKU is the Shopify handle in capitals, each variation names it in Parent, and each Shopify option (Size, Color) becomes an attribute: all the values on the parent, one value on each variation.
What happens to Compare At Price?
Shopify's Compare At Price is the crossed-out original price and Variant Price is what the customer pays. WooCommerce stores the original as the Regular price and what the customer pays as the Sale price, so when Compare At is higher than Price the two are swapped into that arrangement. Otherwise Variant Price becomes the Regular price.
What about inventory and weight?
A variant tracked by Shopify becomes a stock quantity with In stock? set from the quantity, and Continue selling when out of stock becomes Backorders allowed. Untracked variants are in stock with no quantity. Variant Grams is divided by 1000 to give WooCommerce's kilograms, assuming the store's weight unit is kilograms.
Which Shopify fields are not carried across?
Vendor, SEO title and description, cost per item, gift card flags, metafields and Google Shopping columns have no equivalent in the standard WooCommerce importer, and Shopify's product CSV does not include collections. The page lists them, and every case where a SKU had to be generated or a price was unusable is listed as a note.
Are URLs, redirects and customers moved too?
No. This converts the product file only. Orders, customers, pages, blog posts and URL redirects are separate migrations, and Shopify's product URLs differ from WooCommerce's, so plan redirects to keep search rankings.
Is it safe to put my product catalogue into a web page?
The page runs in your browser, the file is read locally and nothing is uploaded; a test in the code asserts there are no network calls. Your own policies still decide what you may open in a browser.
Can I trust the converted file?
Treat it as a first draft: the column names and mappings are read from memory of public Shopify and WooCommerce documentation and no import was run. Import a few products on a staging site, check prices, variations and images, then run the full file. Our WooCommerce product CSV check can look over the result.