What moves: products, options and variations (each variation with its own SKU, price, stock and image), prices and compare-to prices, stock, SKUs, categories, images with alt text, descriptions, enabled or disabled status, and in Shopify files also brands, UPC barcodes and SEO titles and descriptions. 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 Ecwid
- In your Ecwid admin, go to Catalog, then Data Import & Export.
- In the Export data block, click Export Catalog. The CSV file downloads to your device. Ecwid says it holds all the details of all your products and categories.
- To export only some products, go to Catalog, then Products, tick them and click Export Selected. Or search, then click Export All Found.
- Ecwid lists catalog export on the Venture, Business and Unlimited plans.
- Note your store's weight unit. Ecwid writes weights without a unit, so this page asks you for it before you download.
- Upload the file as it was downloaded. Ecwid separates columns with commas, or with semicolons when your price format uses a decimal comma. Both are read.
What to know about the Ecwid file
- One file holds several kinds of rows, named in the type column: product, product_option (one row for each option value), product_variation (one row for each variation), and category, product_file, site_redirect or customer rows. Only products, options and variations are converted. The other rows are skipped and counted.
- Every combination of a product's options becomes a variant, because Shopify and WooCommerce need one for each. A variation row gives its combination its own SKU, price, compare-to price, stock, weight, UPC and image. A combination with no variation row gets the product price plus all its option price modifiers, and the converter lists those combinations with their prices for you to check (the first 5, then a count). If that comes to zero or less, the product price is used instead and the combination is named, so nothing is sold for free by mistake. Ecwid does not document how a percent modifier combines with others; the converter takes the percent of the product price.
- Ecwid keeps stock for the whole product unless a combination has its own variation. Combinations with no variation row are written without stock tracking, with a note, so set their stock in the new store.
- Options made from drop-downs, radio buttons, swatches and sizes become variants. Checkboxes (the buyer may pick several) and input fields such as text, date and file upload are not variants, so they are named and not carried over.
- product_is_available true, yes, 1 or on becomes active, and false, no, 0 or off becomes a draft. A blank value also becomes a draft, as Ecwid itself creates such a product as disabled. Any other value becomes a draft and is quoted in a note.
- Stock: product_quantity is used when product_is_inventory_tracked is true. False or blank means unlimited stock in Ecwid, so stock is not tracked. ALLOW_PREORDER as the out-of-stock behaviour becomes continue selling when out of stock.
- product_compare_to_price, the price before a sale, becomes the compare-at price when it is higher than the price.
- Categories are paths such as Kitchen/Cups in product_category_1, product_category_2 and so on, and the first is the main one. They become Kitchen > Cups. WooCommerce files get every category; Shopify files get the last level of the first category as the product type (the Type column).
- The main image and the gallery images move in the order Ecwid numbers them, with their alt text. Brands become the Shopify vendor and UPC codes the Shopify barcode. WooCommerce's importer has no column for either, and the converter says so.
- Prices and weights in a semicolon file use a decimal comma, as Ecwid writes them. The converter reads 12,50 as 12.50 and says so once.
- Not carried over, and named when the file has them: translations, product attributes, videos, wholesale price tiers, subscriptions, ribbons and subtitles, related products, dimensions, shipping and tax settings, and the storefront URL, so redirects from old product links are not made.
- A customers or redirects export from Ecwid is refused with a message, so the wrong file is not converted by mistake. Ecwid's guide to exporting customers names no columns, so the customers check uses the customer column names from Ecwid's import column list; it was inferred from that list and not verified against a real customers export. Orders exports have no product columns and are not recognised.
- Stores that signed up before 24.05.2023 may still have Ecwid's older (legacy) product export. Ecwid documents only some of its column names and says it does not export variations, so the converter refuses it with a message.
- Built from Ecwid's Help Center (the list of supported CSV columns, the format guidelines and the export guide). Ecwid publishes no sample export file, and this was not verified against a real export. It was not tested by importing into a live store.
What the WooCommerce file gets
- The column labels of WooCommerce's built-in importer (checked against WooCommerce 11.2.2), so columns map automatically.
- Variable products with their variations, each variation linked to the parent by SKU. A parent SKU is made from the URL handle when the source has none.
- Weights converted to your WooCommerce weight unit, with the matching column label such as Weight (kg).
- Repeated SKUs left blank on the later rows, because WooCommerce rejects duplicate SKUs.
- Products hidden from the online store written with catalog visibility hidden, and products that need no shipping written as virtual.
- Attributes as product-level (not global) attributes.
2. Before and after
Before: the Ecwid catalog export CSV
type,product_internal_id,product_sku,product_name,product_name_fr,product_description,product_price,product_compare_to_price,product_cost... product,700000001,SAMPLE-MUG,Stoneware Mug,Tasse en grès,"<p>Hand glazed mug, 350 ml.</p>",18.00,22.00,6.50,true,0.4,10,true,30,SHOW,http... product_option,700000001,SAMPLE-MUG,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Size,SIZE,S,,true,,,,,,99000001 product_option,700000001,SAMPLE-MUG,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Size,SIZE,M,,true,,,,,,99000001 product_option,700000001,SAMPLE-MUG,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Size,SIZE,L,+2.00,true,,,,,,99000001 product_option,700000001,SAMPLE-MUG,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Cup color,DROPDOWNLIST,Sand,,true,,,,,,99000001
After: woocommerce-products.csv
| Type | SKU | Name | Published | Is featured? | Visibility in catalog | Description | Tax status | In stock? | Stock | Backorders allowed? | Weight (kg) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| variable | SAMPLE-MUG | Stoneware Mug | 1 | 0 | visible | <p>Hand glazed mug, 350 ml.</p> | taxable | ||||
| variation | SAMPLE-MUG-S-SAND | Stoneware Mug - S, Sand | 1 | taxable | 1 | 12 | 0 | 0.1814 | |||
| variation | Stoneware Mug - S, Black | 1 | taxable | 1 | 0 | 0.1814 | |||||
| variation | Stoneware Mug - M, Sand | 1 | taxable | 1 | 0 | 0.1814 | |||||
| variation | SAMPLE-MUG-M-BLACK | Stoneware Mug - M, Black | 1 | taxable | 1 | 0 | 1 | 0.2268 | |||
| variation | Stoneware Mug - L, Sand | 1 | taxable | 1 | 0 | 0.1814 |
12 of 29 columns shown (empty columns hidden, 14 more with data).
What the converter reported for this sample
3 products read, 3 written.
- Check this: Ecwid exports weights without a unit (its help center says not to type units in the cell; the unit is your store setting). With no unit chosen, weights were read as pounds. Choose your store's weight unit if it is kilograms, grams or ounces.
- Not carried over: One product is disabled in Ecwid (product_is_available false), so it was written as a draft.
- Not carried over: One product has variations. Each variation row gave its own SKU, price, stock, weight and image to the matching combination of options.
- Check this: 3 combinations have no variation row in Ecwid, so their prices were worked out as the product price plus the option price modifiers: Stoneware Mug (S / Black) 19.80, Stoneware Mug (L / Sand) 20.00, Stoneware Mug (L / Black) 21.80. Check them after import.
- Check this: "Stoneware Mug": Ecwid tracks stock for the whole product, not per option, unless a combination has its own variation. Combinations with no variation row were written without stock tracking. Set their stock in the new store.
- Check this: Text input fields ask the buyer for something at checkout and are not variants, so they were not carried over: "Stoneware Mug (Gift note)". Shopify and WooCommerce need an app or plugin for this.
- Not carried over: The export also has 1 category row. Those are not products, so they were skipped. Products keep their category paths; category descriptions and images, digital files and redirects do not move.
- Not carried over: Translations (fr) are in the export but not carried over. Only the main language moves.
- And 4 more.
Sample products made up for this page, laid out exactly like a real Ecwid export. The "after" file and the notes were produced from it by the same converter this page runs.
3. Import into WooCommerce
- In WordPress, go to Products, then All Products, and click Import.
- Choose woocommerce-products.csv and click Continue.
- On the column mapping screen, check that each column is matched. If the weight column is not matched, pick Weight for it.
- Click Run the importer. WooCommerce shows a count of imported, skipped and failed products at the end.
Before you import everything
- Vendor and barcodes are not written: core WooCommerce has no vendor column, and the barcode (GTIN) column does not map automatically in 11.2.
- Weight column labels other than Weight (lbs) are taken from WooCommerce's source code rather than a sample file. If yours is not matched on the mapping screen, match it by hand.
- Images are imported by WooCommerce downloading each link, so the links must be public.
- 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 WooCommerce CSV that fails? Use the WooCommerce CSV checker.
Questions
- Do my Ecwid variations move to WooCommerce?
- Yes. Each product with options becomes a variable product, with one variation for every combination. Variation rows in the Ecwid export keep their own SKU, price, stock and image; other combinations get the product price plus the option price modifiers.
- Do Ecwid categories move to WooCommerce?
- Yes. Every category path on a product, such as Kitchen/Cups, becomes a WooCommerce category, Kitchen > Cups. Category descriptions and images are not part of the product rows and do not move.
- Why are brands and UPC codes missing in WooCommerce?
- WooCommerce's product importer has no brand column and does not map barcodes on its own, so the converter leaves them out and says so. Shopify files keep both.
- 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 does not check the WooCommerce file before download, so run it through the WooCommerce CSV checker on this site. Import a few products first, look at them in your store, then import the rest.
Sources
- Ecwid Help Center, Exporting your store catalog (steps, plans, separator and decimal comma): https://support.ecwid.com/hc/en-us/articles/8677667799452-Exporting-your-store-catalog
- Ecwid Help Center, List of supported CSV columns (every column and its values): https://support.ecwid.com/hc/en-us/articles/5782224080540-List-of-supported-CSV-columns
- Ecwid Help Center, Format guidelines for the CSV file (row types, encoding, identifiers): https://support.ecwid.com/hc/en-us/articles/8578428241436-Format-guidelines-for-the-CSV-file
- Ecwid Help Center, Case study 3: a product with options and variations: https://support.ecwid.com/hc/en-us/articles/8678710875164-Case-study-3-Importing-a-product-with-options-and-variations
- Ecwid Help Center, Case study 2: a product with options or input fields: https://support.ecwid.com/hc/en-us/articles/8678451883036
- Ecwid Help Center, Getting started with importing products (Export Selected): https://support.ecwid.com/hc/en-us/articles/8574558112540-Getting-started-with-importing-products
- Ecwid Help Center, Exporting customers: https://support.ecwid.com/hc/en-us/articles/115005900189-Exporting-customers
- Ecwid Help Center, Exporting orders: https://support.ecwid.com/hc/en-us/articles/115005900169-Exporting-orders
- Ecwid Help Center, Exporting products (legacy): https://support.ecwid.com/hc/en-us/articles/207101289-Exporting-products-legacy
- Ecwid Help Center, Importing products to Ecwid store (legacy column names): https://support.ecwid.com/hc/en-us/articles/208079105-Importing-products-to-Ecwid-store-legacy
Related converters
- Etsy to WooCommerce CSV converter
- Wix to WooCommerce CSV converter
- Squarespace to WooCommerce CSV converter
- Shopify to WooCommerce CSV converter
- BigCommerce to WooCommerce CSV converter
- Square to WooCommerce CSV converter
- Magento to WooCommerce CSV converter
- PrestaShop to WooCommerce CSV converter
- Ecwid to Shopify CSV converter
- eBay to WooCommerce CSV converter