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 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 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: shopify-products.csv
| Row | Title | URL handle | Description | Vendor | Type | Published on online store | Status | SKU | Variant Barcodes | Option1 name | Option1 value |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product | Stoneware Mug | stoneware-mug | <p>Hand glazed mug, 350 ml.</p> | Sample Pottery | Cups | TRUE | active | SAMPLE-MUG-S-SAND | 000000000017 | Size | S |
| Variant | stoneware-mug | 000000000017 | S | ||||||||
| Variant | stoneware-mug | 000000000017 | M | ||||||||
| Variant | stoneware-mug | SAMPLE-MUG-M-BLACK | 000000000017 | M | |||||||
| Variant | stoneware-mug | 000000000017 | L | ||||||||
| Variant | stoneware-mug | 000000000017 | L |
12 of 62 columns shown (empty columns hidden, 20 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 2 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 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
- Do my Ecwid variations move to Shopify?
- Yes. Every combination of a product's options becomes a Shopify variant. A combination with a variation row in the Ecwid export keeps its own SKU, price, stock and image. A combination without one gets the product price plus the option price modifiers and no stock tracking, and the converter lists those combinations with their prices for you to check.
- Why are some of my Ecwid options missing in Shopify?
- Checkbox options and input fields such as text, date or file upload ask the buyer for something at checkout. They are not variants, so they are not carried over, and the converter names them. Shopify needs an app for them.
- Why are some products drafts in Shopify?
- Products that are disabled in Ecwid (product_is_available false or blank) are written as drafts, so nothing hidden in Ecwid is published by mistake. Set them to active in Shopify when you want to sell them.
- Was this tested by importing into a live Shopify store?
- No. It follows Ecwid's Help Center description of the catalog export and Shopify's documented import rules, and every file is checked against those rules before download. It was not checked against a real Ecwid export, so import a few products first and check them.
- 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.
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 Shopify CSV converter
- Wix to Shopify CSV converter
- Squarespace to Shopify CSV converter
- WooCommerce to Shopify CSV converter
- BigCommerce to Shopify CSV converter
- Square to Shopify CSV converter
- Magento to Shopify CSV converter
- PrestaShop to Shopify CSV converter
- Ecwid to WooCommerce CSV converter
- eBay to Shopify CSV converter