What moves: products, variants, prices, stock, SKUs, images, tags, descriptions and SEO fields where both platforms have them. What does not: customers, orders, reviews, gift card balances, blog posts, pages and URL redirects are not in a product export, so CatalogHop does not convert them.
1. Export your products from WooCommerce
- In WordPress, go to Products, then All Products.
- Click Export at the top of the list.
- Leave the column and product type choices on "Export all", then click Generate CSV.
What to know about the WooCommerce file
- Simple and variable products are converted. Grouped and external (affiliate) products are skipped, with a note naming each one.
- Products hidden from the catalog stay unpublished. Virtual and downloadable products are marked as not needing shipping, but download files are not part of the export and must be attached again.
- A sale price with start or end dates is used only if the sale is running today, with a note: import files cannot carry sale dates.
- Short descriptions, featured flags and attributes that are not used for variations are not carried over.
- Variations set to "Any" value are expanded into every value of that attribute.
- The first category becomes the Shopify product type.
What the Shopify file gets
- The 61 columns of Shopify's current product template, as UTF-8 with no byte order mark.
- One row per variant, with extra rows for additional images, and all rows of a product kept together.
- Weights in whole grams, with your display unit kept.
- Products with no options get the usual "Title" / "Default Title" option.
- Products Shopify would reject (more than 3 options, more than 2,048 variants, repeated option combinations, a blank or negative price, or anything else the Shopify checker on this site finds) are left out of the file and listed on screen so you can fix them in the source.
- Image paths that are not full web links are left out with a note, so the product itself still imports.
- Files over Shopify's 15 MB limit are also offered as smaller parts, each product kept whole.
2. Before and after
Before: the WooCommerce product export CSV
ID,Type,SKU,"GTIN, UPC, EAN, or ISBN",Name,Published,Is featured?,Visibility in catalog,Short description,Description,Date sale price sta... 101,simple,CANDLE-01,,"Soy Candle ""Fig & Cedar""",1,0,visible,Hand poured.,"<p>Burns 40 hours.</p>\n<p>Cotton wick, 8 oz.</p>",,,taxable... 200,variable,HOODIE,,Café Hoodie,1,1,visible,,Brushed fleece hoodie.,,,taxable,,1,,,,,,,,,,,,,Clothing > Hoodies,hoodie,,https://shop.exa... 201,variation,HOODIE-RED-S,,"Café Hoodie - Red, S",1,,,,,,,taxable,,1,4,,0,,1.2,,,,,,45.00,55.00,,,,https://shop.example.com/wp-content/u... 202,variation,HOODIE-RED-M,,"Café Hoodie - Red, M",1,,,,,,,taxable,,0,0,,notify,,1.3,,,,,,,55.00,,,,,,,HOODIE,,,,,,2,,Color,Red,,1,Size,M... 203,variation,HOODIE-BLU-S,,"Café Hoodie - Blue, S",1,,,,,,,taxable,,1,9,,0,,1.2,,,,,,,55.00,,,,,,,id:200,,,,,,3,,Color,Blue,,1,Size,S,,1,,
After: shopify-products.csv
| Row | Title | URL handle | Description | Vendor | Type | Tags | Published on online store | Status | SKU | Option1 name | Option1 value |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product | Soy Candle "Fig & Cedar" | soy-candle-fig-and-cedar | <p>Burns 40 hours.</p> <p>Cotton wick, 8 oz.</p> | Hearth Co | Candles | candle, soy, natural | TRUE | active | CANDLE-01 | Title | Default Title |
| Extra image | soy-candle-fig-and-cedar | ||||||||||
| Product | Café Hoodie | cafe-hoodie | Brushed fleece hoodie. | Hoodies | hoodie | TRUE | active | HOODIE-RED-S | Color | Red | |
| Variant | cafe-hoodie | HOODIE-RED-M | Red | ||||||||
| Variant | cafe-hoodie | HOODIE-BLU-S | Blue | ||||||||
| Extra image | cafe-hoodie |
12 of 62 columns shown (empty columns hidden, 16 more with data).
What the converter reported for this sample
3 products read, 3 written.
- Not carried over: "Soy Candle "Fig & Cedar"": the short description was not carried over (the destination has no such field).
- Check this: "Partner Book" has the WooCommerce type "external", which this converter does not support yet, so it was skipped.
- Check this: "Candle Duplicate SKU": Price "1.234,50" written as 1234.50.
- Left out or rejected: Line 9: this option row (variation) belongs to a product "NOPE" that is not in the file as a product with options, so it was skipped. Export all products at once so each option row has its main product.
Sample products made up for this page, laid out exactly like a real WooCommerce export. The "after" file and the notes were produced from it by the same converter this page runs.
3. Import into Shopify
- In Shopify admin, go to Products and click Import.
- Click Add file and choose shopify-products.csv.
- Leave "Publish new products to all sales channels" and the overwrite option as you need them. Overwrite replaces products that have the same URL handle.
- Click Upload and preview, look over the first product, then Import products. Shopify emails you when it finishes, including any rows it skipped.
Before you import everything
- A few of Shopify's rules are our best reading rather than something Shopify states outright: that the 2,048 variant limit also applies to CSV imports, that decimal gram weights should be rounded, and that "Title" is the option name for products without options. Try a small file first.
- Images are imported by Shopify downloading each link. Links that are private, slow or removed fail on Shopify's side, which no file check can see.
- Inventory quantity in the file only applies to stores with a single location. With more than one location, set stock after import (or with Shopify's inventory CSV).
- Import the file as it is. Opening it in Excel or Google Sheets and saving again can change prices, SKUs and accents.
- Import a handful of products first, open them in your store and check variants, prices, stock and images. Then import the rest.
Already have a Shopify CSV that fails? Use the Shopify CSV checker.
Questions
- Are grouped and external products converted?
- No. Only simple and variable products are converted. Grouped and external products are skipped, and each one is named in the list of problems.
- Is my file uploaded anywhere?
- No. The page reads the file with your browser and converts it there. The only thing the site records is an anonymous count: which converter was used, a rough row count, and whether it worked. The privacy page lists every field.
- Will the import definitely work?
- Nobody can promise that from a file alone. The converter follows each importer's documented rules, leaves out products that would be rejected and tells you about them, and checks the Shopify file against Shopify's documented import rules before download. Import a few products first, look at them in your store, then import the rest.
- Does it move customers, orders or reviews?
- No. Only products move. Customers, orders, reviews, gift card balances, blog posts, pages and URL redirects are not in a product export, so CatalogHop does not convert them.
- Is it free?
- Yes. There is no account and no limit on how many files you convert.