Craftshift logo

How to Import Products to Shopify: The Complete 2026 Guide

how to import products to shopify complete guide

When you first start importing 500 products into Shopify, it will break. Usually in a pretty stupid way (like a comma in a product title, or an image URL that 404s). This guide explores the 3 different ways to do Shopify imports, the relevant columns in the csv file, and the most time-wasting errors.

Short version: if you have under 200 products, the native CSV parser is fine. If you have thousands of products, just pay for use of Matrixify to avoid the pain of the native parser. If you are migrating from WooCommerce or BigCommerce, just use an appropriate migration app and clean up afterward. The whole decision tree for this module can be succinctly stated above, but there are many details that will be discussed in the following posts.

On this page

Three import methods compared

MethodGood forCostPain
Native CSVUnder ~500 products, simple catalogsFreeUnhelpful errors, slow UI
MatrixifyLarge catalogs, complex variants, scheduled importsPaid, free tier existsLearning curve on column names
Migration appsMoving from Woo, BigCommerce, Magento, WixPaid per productMappings lie, always verify
Shopify API scriptsRecurring syncs, custom ERP pipesDeveloper timeYou own the bugs

Native CSV import, step by step

  1. In Shopify admin, go to Products, then click Import.
  2. Click “Download sample CSV template”. Always start from this file. Do not write one from scratch.
  3. Fill in your data in a spreadsheet. Save as UTF-8 CSV. Not UTF-8 BOM. Not Mac OS Roman. UTF-8.
  4. Upload the file. Shopify shows a preview. If there are errors, fix the sheet and re-upload.
  5. Hit “Upload and continue”. Large files take a while. Do not close the tab; you will get an email when it finishes.

My rule of thumb for testing is to import the code first with 5 rows of data, NOT 5000. If it works with 5 rows, it should work with 5000. And if it doesn’t work with 5 rows, you’ll waste an hour of your time that you can’t get back.

CSV column reference (the ones that actually matter)

ColumnWhat it doesGotcha
HandleThe URL slug. Groups variant rows together.All variants of one product share the same handle.
TitleProduct title. Only fill on the first row per handle.Leave blank on variant rows.
Body (HTML)Product description. HTML allowed.Commas inside quotes, always.
Option1 Name / ValueFirst variant option (e.g. Color / Red).Max 3 option types per product.
Variant SKUStock keeping unit.Must be unique across the store.
Variant Inventory QtyStock count.Only applies to your default location.
Variant PriceSelling price.Use a dot as decimal, not a comma.
Image SrcPublic URL of the image.Must be publicly accessible. Google Drive share links do not work.
Image PositionOrder of images.Matters for gallery order and variant image assignment.
Variant ImageURL of the variant-specific image.Must already be in Image Src somewhere on the product.
Statusactive, draft, or archived.New imports default to active. Surprise.

Shopify supports up to 2048 variants for a product via combined listings, but only 3 option types. If your spreadsheet has 4 option types, you will either need to merge 2 of the options together, or use Combined Listings for the product instead of variants.

Common errors and how to fix them

After the import: the part nobody talks about

This is the hardest part of importing products. Eventually you will complete the import and have to correct a bunch of errors on your product page. It wont be broken, it just wont look correct. Variants will be there, but clicking on a color will take you to a different product, all colors will display all images, swatches will look and act nothing like swatches. They might look like a dropdown nobody wants them.

This is the default behavior for Shopify, where each variant has 1 image, which is treated as the featured image for that variant. There are steps to change this to have multiple images per variant, or to have the gallery change when a swatch is clicked. Rubik Variant Images handles these cases with a “bulk assign” mode that can read the order of images in a gallery from a CSV and automatically group images by variant. No need to open up a second CSV to assign these images.

Rubik Variant Images AI auto-assign for imported product catalogs

If you imported different colors as separate products (one handle per color), then that is a totally different job. We call this product Rubik Combined Listings, which can bulk combine products by title pattern, tag, or metafield, and does not require Shopify Plus.

Make sure you test the data on http://csvvalidator.io/ and also use http://www.craftshift.com/sku-generator/ to generate clean SKUs before importing. Both of these are free tools, that don’t require us to sign up. Also, in case you have a folder full of 800 images and each image has been downloaded and named as IMG_0001.jpg, you can use http://www.craftshift.com/bulk-image-renamer/.

Demo, tutorials, docs

live demo at rubikdemo.com. Video tutorials on import and assigning. Full documentation at rubikvariant.com and rubikswatch.com. Both apps have free plans.

https://www.youtube.com/watch?v=j4lIS42Ao-s

“Hands Down the best customer support of all the variation/swatch apps I have used till date. The app does everything. From individual variant gallery to really detailed customizable swatch’s. AI has been integrated, HELPS ALOT WITH SORTING IMAGES.”

Bellissima Covers, Rubik Variant Images reviews

FAQ

What is the max number of products I can import at once?

Native CSV files do not have a hard product limit, but you may find files to reach timeout around ~15MB or ~50k rows. See: Matrixify for larger files.

Can I import products with variant images from CSV?

Yes, via Variant Image column. Image URL must already exist in the product’s Image Src column for another row of the same handle.

What format should image URLs be?

Direct supports direct, public, HTTPS URLs. Not Google Drive or Dropbox share links, or authenticated URLs.

How many variants can a product have?

This configuration allows up to 2048 options by combining listings, with three option types per product allowed at most.

Will the import overwrite existing products?

Only if you check “Overwrite existing products that have the same handle.” Read the confirmation dialog for this feature. Note: this is the default.

Can I import metafields via CSV?

Native CSV has limited metafield support. Matrixify handles it cleanly.

What happens if an image URL is broken?

Product imports without the image and a warning appears in the import row. Fix URL and re-import the single row.

Our Shopify Apps

Smart Bulk Image Upload

Bulk upload product images from Google Drive & save time!

Rubik Variant Image & Swatch

Show only relevant variant images on your product pages.

Rubik Combined Listings Swatch app

Rubik Combined Listings

Link separate products as variants with beautiful swatches

CS – Export Product Images

Bulk export product images by vendor, collection or status

Blog Posts