← Blog·Tutorial

How to Export Shopify Products to CSV (and Import Them Back Safely)

S

Salync Editorial Team

Published 19 July 2026 · 9 min read · Updated regularly

Exporting from Shopify takes thirty seconds. Understanding the file it gives you — and re-importing without wiping half your catalogue — takes a bit more. Here's the whole cycle, including the variant-row behaviour that catches almost everyone the first time.

In this guide:

  • Exporting products, inventory and orders
  • How the CSV is structured — the variant row trap
  • The columns that matter most
  • Editing safely in a spreadsheet
  • Re-importing without overwriting good data
  • When CSV is the wrong tool entirely

Exporting products

  1. Shopify admin → Products.
  2. Optionally filter (by collection, vendor, status, tag) or tick specific products.
  3. Click Export.
  4. Choose the scope: all products, current search results, or selected products.
  5. Choose "CSV for Excel, Numbers or other spreadsheet programs".
  6. Click Export. Small exports download immediately; large ones are emailed to the store owner as a download link.

Exporting "current search results" is the underused option — filter to one vendor or one collection and you get a small, workable file instead of a 12,000-row monster.

Exporting inventory (multi-location)

The product CSV carries a single quantity column, which is fine for one location. If you hold stock in several locations, use Products → Inventory → Export instead. That file has a column per location and is the correct tool for stock adjustments across a multi-location store.

Exporting orders

Orders → Export, with a date range and a choice of order status. Note that orders export as one row per line item, so a three-item order occupies three rows sharing an order number — the same repeating-row pattern as products.

The variant row trap

This is the single thing to understand about Shopify CSVs. Shopify writes one row per variant, not per product.

A T-shirt in three sizes produces three rows:

  • Row 1 — Handle, Title, Body (description), Vendor, Type, Tags, plus the first variant's options, SKU, price and quantity.
  • Rows 2 and 3 — the same Handle, but Title, Body, Vendor and Tags are blank. Only variant fields are filled.

Those blank-looking rows are not junk. The Handle column is the glue — it tells Shopify which product each variant belongs to. Delete the rows because they look empty, and re-importing deletes those variants. Sort the spreadsheet by a column other than Handle and you scatter variants away from their parent rows, which corrupts the file just as effectively.

Rule:never sort a Shopify CSV without sorting by Handle first, and never delete rows that share a Handle with rows you're keeping.

Columns worth knowing

ColumnWhat it does
HandleThe unique URL slug and the key Shopify matches on during import. Change it and you create a new product instead of updating one
Title / Body (HTML)Product name and description. Body accepts HTML — beware spreadsheet programs mangling it
Variant SKUYour internal SKU. Essential if you sync with other channels
Variant BarcodeEAN/UPC/GTIN. Format the column as text or your spreadsheet will eat leading zeros
Variant Inventory QtyStock level (single location)
Variant Inventory Policydeny = stop selling at zero; continue = allow overselling. Check this one
Variant Price / Compare At PriceSelling price and the struck-through was-price
Statusactive, draft or archived — a quick way to bulk-unpublish
Image Src / Image PositionExtra images occupy their own rows with only Handle + image columns filled

Variant Inventory Policy deserves a special mention: set to continue, Shopify keeps selling after stock hits zero. That's occasionally intentional (pre-orders) and usually an accident that produces oversells — see our guide on stopping overselling.

Editing without breaking the file

  • Format SKU and Barcode columns as Text before editing. Otherwise 0501234567890 silently becomes 501234567890, and your barcodes stop matching anything on other channels.
  • Save as CSV UTF-8. Plain CSV turns £ and — into mojibake, which then publishes to your live storefront.
  • Don't reformat prices. Shopify wants plain numbers: 19.99, not £19.99 and not 19,99.
  • Leave Handle alone unless you deliberately intend to create new products.
  • Google Sheets handles Shopify CSVs more predictably than Excel for this job, largely because it's less aggressive about auto-converting number-like text.

Re-importing safely

  1. Keep an untouched copy of the original export. This is your undo.
  2. Cut your edited file down to a test batch of 2–3 products (all rows sharing those Handles) and import that first.
  3. Products → Import → upload → decide on "Overwrite any current products that have the same handle". Ticking it makes blank columns overwrite existing values — powerful and dangerous.
  4. Check the preview Shopify shows, then confirm.
  5. Verify the test products on the storefront — price, images, variants, stock — before importing the full file.

If your goal is only to change a couple of fields, an alternative to the full-file round trip is to import a minimal file: just Handle plus the columns you're changing. Fewer columns means fewer things that can be accidentally blanked.

When CSV is the wrong tool

CSV import/export is a point-in-time snapshot. It's excellent for migrations, one-off bulk rewrites, and backups. It's a poor fit for anything that changes continuously — above all, stock.

If you sell on Shopify plus eBay, Amazon or a marketplace, quantities go stale between every export and import, and the gap is where overselling happens. That job wants live syncing rather than files: Salync holds one central stock ledger, pushes changes to Shopify and every other channel in real time, and imports your existing catalogue by CSV once at setup so you never have to run the cycle again. Free for up to 50 SKUs.

Frequently asked questions

How do I export Shopify products to CSV?

Products → (optionally filter/select) → Export → choose scope → "CSV for Excel, Numbers or other spreadsheet programs". Large exports arrive by email.

Why does my CSV have blank rows?

They're variant and image rows. Shopify writes one row per variant; only the first row per product carries shared fields. The Handle column links them — deleting those rows deletes variants on import.

Can I update inventory by CSV?

Yes — Variant Inventory Qty in the product CSV, or the dedicated Inventory export for multi-location stores. For ongoing accuracy across channels, live sync beats repeated imports.

Will re-importing overwrite my products?

Shopify matches on Handle. With "overwrite same handle" ticked, blank columns can wipe existing values. Test on 2–3 products and keep the original export as your undo.

Import once. Sync forever.

Bring your catalogue in by CSV, then let Salync keep Shopify, eBay and Amazon in step automatically.

Start free — no credit card

Free plan · 50 SKUs · Set up in minutes