Shopify to WooCommerce CSV Converter
Convert a Shopify product export into the column layout the WooCommerce product importer expects.
1. Shopify export
No file handy? (16 products, includes variants).
2. WooCommerce CSV
Drop a file to see the WooCommerce version here. Nothing is uploaded.
Runs in your browserNo uploadLast verified Source: WooCommerce product importer source
How it works
Drop the CSV from Products → Export in your Shopify admin. Your browser reads it; nothing is uploaded. Both the column names Shopify exports (Handle, Variant Price) and the newer Help Center names (URL handle, Price) are understood.
Rows are grouped by Handle. A product whose only variant is Default Title becomes a WooCommerce simple product. Any other product becomes a variable parent followed by one variation per Shopify variant. The parent lists every option value as an attribute used for variations, with the first variant as the default. Each variation’s Parent column holds the parent’s SKU, which is the Shopify handle.
When Variant Compare At Price is higher than Variant Price, the compare-at price becomes the WooCommerce regular price and the Shopify price becomes the sale price. Tracked inventory becomes managed stock; “continue selling when out of stock” becomes backorders allowed. Weight is converted from grams to the unit your WooCommerce shop uses. Variants that don’t require shipping become virtual products, and draft or archived products are imported as drafts.
Images are listed in Image Position order, so the first one becomes the featured image. Vendor is kept as a visible Brand attribute. The first barcode becomes the GTIN, UPC, EAN or ISBN field. Duplicate SKUs are cleared after their first use, because WooCommerce needs every SKU to be unique.
Gift cards and rows without a handle or title are skipped and listed by row number. The download uses the WooCommerce exporter’s own column names, so the importer maps every column automatically.
Example
The Hoodie in the sample Shopify export has two options, Color and Logo, and four variants. The red one has a compare-at price, so it’s on sale.
Shopify export (2 of 4 variant rows)
| Handle | Option1 Value | Option2 Value | Variant SKU | Variant Price | Variant Compare At Price | Variant Grams |
|---|---|---|---|---|---|---|
| hoodie | Red | No | woo-hoodie-red | 42.00 | 45.00 | 680 |
| hoodie | Green | No | woo-hoodie-green | 45.00 | 680 |
WooCommerce CSV output (parent and first 2 variations)
| Type | SKU | Name | Parent | Regular price | Sale price | Weight (lbs) | Attribute 1 | Attribute 2 |
|---|---|---|---|---|---|---|---|---|
| variable | hoodie | Hoodie | Color: Red, Green, Blue | Logo: No, Yes | ||||
| variation | woo-hoodie-red | Hoodie - Red, No | hoodie | 45.00 | 42.00 | 1.5 | Color: Red | Logo: No |
| variation | woo-hoodie-green | Hoodie - Green, No | hoodie | 45.00 | 1.5 | Color: Green | Logo: No |
The parent row carries the name, description, images and the full list of option values. Each variation points back to it through Parent. The red hoodie’s 45.00 compare-at price becomes its regular price, with 42.00 as the sale price. With the shop’s unit set to lbs, 680 grams becomes 1.5. Across the whole sample, 16 Shopify products become 14 simple and 2 variable WooCommerce products with 13 variations.
FAQ
Is my product file uploaded anywhere?
No. Your browser reads the Shopify export and builds the WooCommerce file on your own device. Nothing is sent to our servers or anyone else, so costs, stock levels and draft products stay private. Closing the tab discards everything you dropped in, and nothing is kept between visits.
How do I export products from Shopify?
In your Shopify admin, go to Products, click Export, choose All products and a CSV file, and Shopify emails you the file or downloads it straight away. Either CSV option works here. The tool also accepts files that use the newer column names from Shopify’s Help Center, such as URL handle and Price.
How do Shopify variants become WooCommerce variations?
A product with options becomes a variable product: one parent row listing every option value, followed by one variation row per Shopify variant. The parent’s SKU is the Shopify handle, and each variation’s Parent column points to it, which is how the WooCommerce importer links them. Products without options become simple products.
Why does the weight unit matter?
Shopify stores weight in grams. WooCommerce stores it in one unit for the whole shop, and its importer only recognises the weight column when the header matches that unit, for example Weight (kg). Pick the unit set under WooCommerce → Settings → Products, and the tool converts every weight from grams to it.
What happens to SKUs that repeat?
Shopify lets two variants share a SKU, but WooCommerce rejects a duplicate. The first product keeps the SKU and later ones are left blank, each listed as a warning with both row numbers so you can choose new SKUs. Parent products get the handle as their SKU, with “-parent” added if a variant already uses that text.
Are images, categories and SEO fields carried over?
Image URLs are kept in Shopify’s position order, and WooCommerce downloads them during import, so your Shopify store must stay online until it finishes. Product category, or Type if that’s empty, becomes the WooCommerce category. SEO titles and descriptions go into Yoast SEO or Rank Math fields, whichever you choose.
Does it move customers, orders or reviews?
No. This tool converts the product catalog only: products, variations, prices, stock, weights, images, tags, vendor and SEO fields. Customers, orders, reviews, blog posts and redirects need separate migrations. If you want the whole store moved for you, use the quote link that appears next to your converted file.