Skip to content
E-SAFQA
Migrating to Shopify

Bulk Import Products to Shopify: CSV and Matrixify Guide

How to bulk import products to Shopify with CSV or Matrixify: file structure, variants, images, metafields, and how to clean data before import to avoid rework.

Author: Mousa Alhelo · Published · 7 min read

To bulk import products to Shopify you use a CSV file that follows Shopify’s official structure, or a specialised tool such as Matrixify when the catalog grows or the data gets complex. Success depends less on the import tool than on what comes before it: cleaning the data, fitting options within the three-option limit, preparing public image URLs, then importing everything as drafts and reviewing a sample before publishing. This guide sums up what we learned importing catalogs of up to tens of thousands of products.

How Shopify reads a CSV file

The most important idea to grasp before opening any spreadsheet: in a Shopify file, one product occupies several rows. The first row carries the product data (title, description, vendor, type, tags) along with the first variant and its first image. Each additional variant is a new row with the same handle and its option values, price and quantity, and each additional image is a row with only the handle, image URL and position.

The handle is the key: lowercase Latin text with hyphens (such as arabian-oud-50ml) that identifies the product and becomes part of its URL at /products/handle. Rows sharing a handle are combined into one product.

The core columns in a Shopify file

Column Contents Note
Handle Product identifier in the URL Same on every row of the product
Title Product name First row only
Body (HTML) Description Accepts simple HTML
Vendor Brand Unify spelling (Samsung, not samsung)
Product Category / Type Shopify category and product type Helps Merchant Center and taxes
Tags Comma-separated tags The basis of automated collections and filters
Published / Status Published or draft Start with draft
Option1/2/3 Name and Value Options and their values Three options maximum
Variant SKU / Barcode Product code and barcode Barcode matters for ads
Variant Price / Compare At Price Price and pre-discount price No currency symbols
Variant Inventory Qty / Tracker Quantity and inventory tracking Needs one inventory location
Variant Grams Weight For shipping calculation
Image Src / Position / Alt Text Image URL, order and alt text Public URLs only
SEO Title / SEO Description Search engine title and description Carry them over from the old store

Shopify’s documentation provides a sample file; the easiest start is exporting one product from your store and filling the sheet in that pattern.

Options and variants: the three-option limit

Shopify allows three options per product (such as colour, size and material). A product coming from Magento or WooCommerce with four or more attributes needs a decision before import:

  • Merge two options into one (such as “Red / Cotton”) when combinations are few.
  • Move the attribute that does not affect price or stock into a metafield or tag (such as country of origin).
  • Split the product into two if the fourth attribute genuinely changes the product.

A practical rule: an option is whatever changes price, quantity or image; everything else is information to display, not a choice to make.

Images: the most common import failure

Image URLs in export files usually point to the old store’s hosting. If that hosting is shut down before the import is complete, products stay without images. What we do: confirm the URLs are public and work without login, keep the old hosting alive until import and review are done, put the main image at Position 1, and write alt text describing the product in Arabic or English because image search brings real traffic.

Metafields: what the core columns cannot hold

Information such as ingredients, country of origin, size charts, warranty length or technical specifications lives in metafields and is displayed by the theme or used in filters. Shopify supports metafield columns in the CSV once they are defined in store settings, and Matrixify supports them with more flexibility. Define the metafields before the import, not after, or you will need a second import round.

Native importer or Matrixify?

Situation Best tool
Hundreds of products with a simple structure Native importer in the Shopify admin
Thousands of products or files above the size limit Matrixify (or split into batches)
Updating specific columns only (prices, quantities) Matrixify partial update
Importing orders, customers and redirects with products Matrixify
Scheduled recurring import from a file URL Matrixify
Many complex metafields Matrixify

Matrixify (formerly Excelify) is a Shopify App Store app that imports and exports products, customers, orders and redirects from Excel or CSV files and produces a result report for every row. In large migration projects it is our primary tool; small stores do not need it.

Cleaning data before import

An hour of cleaning before import saves a day of fixing after it. Our fixed list:

  1. Unify vendors and types: one spelling per brand, and types from a defined list.
  2. Titles: a consistent structure (brand + product + size or variant), no all-caps, no symbols.
  3. Descriptions: strip broken HTML and styles inherited from the old editor.
  4. Prices: numbers only, with compare-at price higher than price or empty.
  5. Barcodes and SKUs: unique per variant, because duplicates fail the row and confuse Merchant Center.
  6. Dead products: anything not sold in a long time with no plan to return is not imported at all.
  7. Tags: an intentional tag list that serves automated collections, not everything you inherited.

How to run this on an existing catalog is covered in the Shopify product data cleanup guide.

Safe import steps

  1. Export one product from Shopify to get the template.
  2. Fill in only 10 products and import them, then review them in the admin and on the storefront.
  3. Fix the template based on the sample, then import the full catalog in draft status.
  4. Review a random sample of 50 products: images, options, prices, quantities, descriptions.
  5. Publish in batches by collection and watch the automated collections and filters.
  6. Keep the final import file as a reference along with the result report.

After publishing comes pricing and promotions: our app SalePilot (salepilot.esafqa.com) bulk edits prices and compare-at prices by collection, tag or SKU with a preview of every change at variant level before publishing, and restores prices automatically when a sale ends, so you never need to re-import a file for each promotion.

From our experience

For Toolmart, more than 35,000 products from 65 suppliers moved from Magento 2 to Shopify, and unifying vendors, types and barcodes is what made automated collections and catalog ads work later. For Sophie’s, more than 4,000 products arrived from Odoo with incomplete data, so the effort went into entering and enriching descriptions and images before import, and the store ended up with 4,286 published products. For merchants whose supplier stock changes daily, we built a sync engine for BrandVIP that matches 8,788 products automatically, the subject of sync supplier inventory with Shopify. A successful import is part of a larger plan described in migrate Magento to Shopify, and if you are starting a new store, begin with create a Shopify store step by step.

Conclusion

Bulk importing products to Shopify works when you understand the file structure (several rows per product), respect the three-option limit, prepare public image URLs and pre-defined metafields, clean the data before upload, then import as drafts and review a sample before publishing. For large catalogs and partial updates, Matrixify is the tool. All of this is part of E-SAFQA’s Shopify migration service.

Send us your product file or store link on WhatsApp and we will tell you what your catalog needs before import.

Want this applied to your store?

E-SAFQA builds and runs Shopify stores and their ads. Message us on WhatsApp for a free audit.

Frequently asked questions

What is the maximum CSV file size in Shopify?

Shopify's documentation sets a limit per file (about 15 MB), so large catalogs are split into several files or imported with a specialised tool.

Can images be imported through the CSV?

Yes, through the image URL column, provided the URL is public and downloadable. Images on old hosting that will be shut down must first be uploaded somewhere accessible.

When do I need Matrixify instead of the native importer?

When the catalog exceeds thousands of products, you need complex metafields, you want to update specific columns without re-uploading everything, or you need to import orders and redirects alongside products.

What happens if I import a file with errors?

Shopify sends a report of the rows that failed and why, and the valid products remain. That is why we always import a small sample first, then the full catalog as drafts.

Can I bulk edit prices after import?

Yes, either by re-importing a file with only the price columns, or with an app that edits prices by collection or tag with a preview before publishing, such as SalePilot.

← Back to the blog