What moves: products, variants, prices, stock, SKUs, 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 Square
- In your Square Dashboard, open Items & services (it may be called Items & menus or Items & inventory), then Items, then Item library.
- Clear any search or filter first: the export only includes the items you are viewing. Click Actions, then Export Library, and choose All items.
- Choose CSV, not Excel. Square suggests Excel, but this converter reads the CSV file.
- Upload the file as it was downloaded. Opening it in a spreadsheet and saving again can change SKUs and the order of rows.
What to know about the Square file
- The Square export has no images, so no images move. Add pictures in the new store after import. Every converted file says so.
- Rows with the same Item Name next to each other become one product, and each row becomes a variation. Square writes no item number, so the converter looks for where a new item starts. In Square's export, columns such as Shipping Enabled and Pickup Enabled are filled only on the first row of each item. A later row with them filled starts a new product. So does a row with a different description, or a variation name the item already has.
- When two products end up with the same name, the converter names them so you can check them. If the file has none of those columns, or has them filled on every row (as after a fill-down in a spreadsheet), it groups by name only and tells you which products were joined from several rows.
- Option Name 1 and Option Value 1 become the product option. When an item has several variations but no option, or some option values are missing or repeated, the option is named "Variation" and each variation name is its value. Option Name 2 and higher are read the same way, but we have not seen a real export with them.
- Stock comes from the Current Quantity column of the first location in the file where the variation is switched on, and the note names the location used. A stock count with a fraction (items sold by weight) is rounded toward zero, and those variations are named. Stock at other locations, location prices and locations where an item is switched off are not carried over, and the converter counts them for you.
- A blank or "Variable" price has no price to carry over. Shopify rejects products without a price, so those items are left out of Shopify files and listed; WooCommerce imports them without a price.
- Online Sale Price is not described anywhere in Square's help. When it is lower than the Price, the file carries the sale price with the Price as the compare-at price, and every such variation is listed so you can change it. When it is not lower, the Price is kept and you are told.
- Square Online visibility "visible" publishes the product. "hidden", "unavailable", archived items and any unclear value become drafts, with a note, so nothing hidden is published by mistake. What "unavailable" showed shoppers is not documented by Square.
- Not carried over, and listed when present: modifier sets, taxes, units such as sold by weight, vendor details, stock alerts and the pickup, delivery and shipping switches. Digital, Service, Event and Donation items become products without shipping; the items inside a Bundle are not linked.
- The weight unit is taken from the column name, such as Weight (lb) or Weight (kg).
- Built from Square's help pages and the layout of real Square exports published on GitHub. Square publishes no sample 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 Square item library CSV
Token,Item Name,Variation Name,SKU,Description,Categories,Reporting Category,SEO Title,SEO Description,Permalink,GTIN,Square Online Item ... TKNMUGSMALL0000000000001,Speckled Mug,Small,MUG-S,<p>Hand-thrown <strong>stoneware</strong> mug.</p>,"Kitchen > Mugs, Gifts",Kitchen > Mu... TKNMUGLARGE000000000002,Speckled Mug,Large,MUG-L,,"Kitchen > Mugs, Gifts",Kitchen > Mugs,,,,,visible,Physical good,1,,,,,,,28.00,,N,,,,,S... TKNCANDLE00000000000003,Cedar Candle,Regular,CANDLE-CEDAR,"Soy wax candle. Burns for about 40 hours.",Home,Home,,,/cedar-candle,,visible,Physical good,0.5,,,Y,N,N,Y,18.00,15.00,N,,N,,N,,,,,,Y,20,,,,,Y,,,,,19.00,N,Y
After: shopify-products.csv
| Row | Title | URL handle | Description | Type | Published on online store | Status | SKU | Variant Barcodes | Option1 name | Option1 value | Price |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product | Speckled Mug | speckled-mug | <p>Hand-thrown <strong>stoneware</strong> mug.</p> | Mugs | TRUE | active | MUG-S | 0123456789012 | Size | Small | 24.00 |
| Variant | speckled-mug | MUG-L | Large | 28.00 | |||||||
| Product | Cedar Candle | cedar-candle | <p>Soy wax candle.</p><p>Burns for about 40 hours.</p> | Home | TRUE | active | CANDLE-CEDAR | Title | Default Title | 15.00 | |
| Product | Logo Tee | logo-tee | <p>Cotton tee with our logo.</p> | Apparel | TRUE | active | TEE-S | Variation | Small | 22.00 | |
| Variant | logo-tee | TEE-M | Medium | 22.00 | |||||||
| Product | Old Bowl | old-bowl | Kitchen | FALSE | draft | BOWL-OLD | Title | Default Title | 30.00 |
12 of 62 columns shown (empty columns hidden, 13 more with data).
What the converter reported for this sample
5 products read, 4 written.
- Check this: "Cedar Candle", variation CANDLE-CEDAR: Online Sale Price 15.00, Price 18.00. Square does not document this column; its name suggests the sale applied on Square Online only, while 18.00 applied in person. The file carries 15.00 with 18.00 as the compare-at price. Change it in the new store if the sale should not continue.
- Not carried over: Square item library exports contain no images, so no images were carried over. Add product images in the new store after import.
- Check this: 1 item has a variable price (Price blank or "Variable") in Square: "Pottery Class". It has no price in the file. Shopify rejects products without a price, so it is left out of Shopify files; WooCommerce imports it without a price. Set a price in the new store.
- Check this: 1 archived item was converted as a draft (hidden): "Old Bowl". Delete it in the new store if it is not wanted.
- Check this: 1 item uses Square modifier sets (Gift Wrap). Modifiers are add-on choices with their own prices; Shopify and WooCommerce product CSVs have no place for them, so they were not carried over.
- Not carried over: Square tax settings (the "Tax - ..." columns) were not carried over. Set up taxes in the new store.
- Check this: This export has 2 locations (Main Street Shop, Market Stall). Stock was taken from the first location where each variation is switched on ("Main Street Shop" for 4 variations); 1 item also has stock at other locations, which was not added. Set stock per location in the new store.
- Check this: 1 variation has a location price different from its Price. Only the Price column was carried over.
- And 4 more.
Sample products made up for this page, laid out exactly like a real Square 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
- Why are my Square product images missing?
- The Square item library export has no image column, so there are no images to carry over. Add images in Shopify after import.
- What happens to stock at my other Square locations?
- The Shopify product file has one stock number per variant, which Shopify puts at your default location. The converter uses the first location in the Square file and tells you how many items also had stock elsewhere. Set the other locations in Shopify after import.
- Was this tested by importing into a live Shopify store?
- No. It follows the layout of real Square exports and Shopify's documented import rules, and every file is checked against those rules before download. 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.
- 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.