Guide + converter

Shopify CSV import, without the guesswork.

Shopify’s importer is strict about column names and forgiving about almost nothing else. This page explains the fields that matter, then lets you convert a supplier file and download a valid one — in the browser.

Convert your file first

1 · Source fileno file loaded
Nothing is uploaded. The file never leaves this tab.
Or paste CSV text
3 · Shopify import filewaiting for a file
Nothing to preview yet.

Load a supplier CSV above, or use the example button.

What Shopify receivesimport format
  • Handle generated from the title; duplicates get a number suffix.
  • Prices stripped of currency symbols and rounded to two decimals.
  • Extra image URLs become additional image rows on the same handle.
  • Plain-text descriptions become safe HTML paragraphs.

Upload the file in Shopify under Products → Import. Import a small batch first and check the result.

The format

Columns that carry the product.

You do not need every column. These are the ones that decide whether the import works and the product is sellable.

ColumnRequiredWhat it doesCommon mistake
HandleYes, to group rowsThe URL slug and the key that ties variants and images to one product.Using a handle that already exists; Shopify may update that product instead of creating one.
TitleYes, on the first rowThe product name shown in the admin and on the storefront.Repeating the title on every variant row with conflicting text.
Body (HTML)NoThe description. Plain text is allowed; HTML gives you paragraphs and lists.Pasting unescaped HTML with stray quotes that break the CSV row.
Variant PriceEffectively yesThe selling price, as a number with a dot decimal.Leaving a currency symbol or a comma decimal in the cell.
Variant Inventory QtyNo, but recommendedStock count for the variant.A decimal or a unit suffix; Shopify expects a whole number.
Image SrcNo, but recommendedA public http(s) URL. Additional rows with the same handle add more images.A local path or a page URL instead of a direct image file.
Option1 Name / ValueOnly for variantsDefines the variant axis, such as Size / Medium.Using a different option name on rows that share a handle.

The import

Five steps in Shopify.

  1. In Shopify admin, open Products and choose Import.
  2. Select the CSV you downloaded above. Shopify previews the first rows before committing anything.
  3. Choose whether to overwrite products with matching handles. For a first import, leave it off.
  4. Run the import and open the result summary. Shopify lists every row it skipped and why.
  5. Open two or three imported products and check price, image, inventory and description on the storefront.
Import in small batches. Five products first, then the rest. A bad handle or option setting is much easier to correct before it touches the whole catalogue.

Troubleshooting

Why an import gets rejected.

“Handle has already been taken”

Another product already uses that handle. Change the source title so the slug changes, or edit the Handle cell to a unique value. Do not reuse a handle for a different product.

“Price is invalid”

Remove currency symbols, spaces and thousands separators. Use a dot decimal: 24.90, not €24,90. The converter above does this automatically.

Images do not appear

The URL must point to the image file itself and be publicly reachable. Google Drive share links, supplier product pages and local paths will not work. Open the URL in a private window to confirm it loads without a login.

Variants split into separate products

Rows only group when they share the exact same Handle. Check for trailing spaces, capitalisation differences and duplicated rows that each carry a different title.

The description shows raw HTML

Either the HTML is malformed or the cell was not quoted correctly. The converter’s “Descriptions already contain HTML” option keeps existing markup; otherwise plain text is converted into safe paragraphs.

Next

After the import.

A valid file gets products into the admin. These tools help with the part buyers actually read.