WooCommerce to Shopify CSV Converter
Turn a WooCommerce product export into a Shopify import file, with variations, sale prices, images and SEO fields mapped across.
Used for every product. WooCommerce's export has no vendor column.
So you can rebuild categories as automated collections based on tags.
Uses Shopify's Collection column, which creates missing collections. One collection per product.
Off: the short description is used only when the main one is empty.
How each WooCommerce column maps to Shopify
| WooCommerce | Shopify | Notes |
|---|---|---|
| Name | Title and URL handle | Handles are built the way WordPress builds slugs |
| Description | Description | Line breaks become paragraphs. The short description is used when the main one is empty. |
| Type: simple | One product with one variant | |
| Type: variable, plus its variation rows | One product with options | Variations are matched through the Parent column (SKU or id:123) |
| Attribute 1 to 3 name and value(s) | Option1 to Option3 name and value | A variation set to "any" becomes one variant per value |
| Regular price and Sale price | Compare-at price and Price | With no sale, Regular price becomes Price |
| Stock, In stock?, Backorders allowed? | Inventory quantity, Inventory tracker, Continue selling when out of stock | Products without stock management stay untracked |
| Weight (lbs, kg, g or oz) | Weight value (grams) and Weight unit for display | Variations without a weight use the parent's |
| Tax status | Charge tax | taxable is true, shipping-only and none are false |
| Categories | Type and Tags | Type is the deepest level of the first category |
| Images | Product image URL, one row per image | The first image is the featured image. Variation images become Variant image URL. |
| GTIN, UPC, EAN, or ISBN | Barcodes | |
| Cost of goods | Cost per item | Only when WooCommerce's cost of goods feature is on |
| Meta: _yoast_wpseo_title and _metadesc (or rank_math_title and _description) | SEO title and SEO description | Needs custom meta in the export |
| Published 1, 0, -1 | Status active or draft | Private, draft and pending products come in as drafts |
The sample export
- Organic Cotton Hoodie
- variable, 6 variations (Color × Size)
- Charcoal / L
- Regular 68, sale 54
- Weight
- 1.1 lbs on the parent
- Zero Waste Kitchen Set
- grouped product
4 products, 9 variants, 10 Shopify rows. Charcoal / L gets Price 54.00 and Compare-at price 68.00, every hoodie variant weighs 499 g (1.1 × 453.59), and the grouped product is left out with a warning.
Moving your products step by step
- 01
Export from WooCommerce
In WordPress, go to Products → All Products and click Export. Keep Export all columns, tick Yes, export all custom meta so SEO fields come along, and click Generate CSV.
- 02
Convert it here
Drop the file above, set a vendor name and choose the options, then download the Shopify CSV.
- 03
Check it
Run the download through the Shopify CSV validator if you edit it by hand afterwards.
- 04
Import into Shopify
In Shopify, go to Products → Import, add the file, click Upload and continue, then Import products.
- 05
Redirect old URLs
WooCommerce product URLs look like
/product/hoodie/and Shopify's look like/products/hoodie. Add a URL redirect for each product so links and rankings carry over.
What doesn't come across
- Grouped and external products. Shopify has no equivalent, so they're left out. Use a collection or a bundles app instead.
- Product slugs. WooCommerce's export doesn't include them, so handles are rebuilt from names. Check any slug you changed by hand.
- More than 3 variation attributes. Shopify allows 3 options, so extra attributes are dropped and the tool tells you which variations merged.
- Scheduled sales. Shopify's CSV has no sale dates. A sale running today is carried over, and you'll need to end it yourself.
- Attributes on simple products, downloadable files, upsells, cross-sells, reviews, customers and orders. Move these with metafields, apps or separate imports.
- Shared stock. If a variable product manages stock at parent level, each variant gets the full quantity, so split it after import.
Questions people ask
Does it keep my product URLs?
WooCommerce's export has no slugs, so handles are built from product names the way WordPress does by default. Shopify also uses /products/ instead of /product/, so set up URL redirects for your old links.
How are sale prices converted?
When the sale price is lower than the regular price, the sale price becomes Shopify's Price and the regular price becomes Compare-at price, so the product shows as on sale. Scheduled sales that aren't running today use the regular price.
Why are some of my variations missing?
Each variation's Parent column must point at a variable product in the same file, by SKU or id:123. Export parents and variations together, and don't filter the export by product type.
Will my Yoast or Rank Math SEO titles come across?
Yes, if you tick Yes, export all custom meta when exporting. Titles that use template variables like %%title%% are left blank so Shopify falls back to the product title.
Is my product data uploaded?
No. The conversion runs in your browser, and the file never leaves your computer.
Related tools
Last reviewed 30 September 2026.
Sources: WooCommerce: Product CSV Importer and Exporter · WooCommerce: Product CSV import schema · WooCommerce: Sample product CSV · WooCommerce source: product CSV exporter · Shopify Help: Using CSV files to import and export products · Shopify Help: Importing products with a CSV file
