PRODUCTS
How to import products into Shopify from a CSV or Excel file
Adding products one at a time in the Shopify admin stops being practical after a few dozen. This guide shows how to create products in bulk from a spreadsheet, check the whole file before it runs, and remove the import again if something is wrong.
Step by step
Build the spreadsheet
Create one row per product. Title is the only required column. Handle, Description HTML, Vendor, Product type, Tags and Status are optional. Tags are separated by commas. Status accepts ACTIVE, DRAFT, ARCHIVED or UNLISTED.
Load the file into BulkCSV
Open BulkCSV in your Shopify admin and drop the file onto the import area. CSV, XLS and XLSX files all work, and you can also paste the link to a public Google Sheet.
Choose Products as the import type
Select Products above the upload area. BulkCSV shows the columns it expects, so you can compare them against your header row.
Validate and read the preview
BulkCSV checks every row before anything is sent to Shopify. Rows with problems are listed with the row number and the reason, so you can fix the spreadsheet and load it again. Nothing in your store changes at this stage.
Run the import
Confirm the import. Each row is created in Shopify and the result is logged per row, so you can see which products were created and which rows were skipped.
Example file
One row per product. Only Title is required.
| Title | Handle | Description HTML | Vendor | Product type | Tags | Status |
|---|---|---|---|---|---|---|
| Classic Canvas Tote | classic-canvas-tote | <p>Heavy cotton canvas with reinforced handles.</p> | Northfield | Bags | canvas, tote, new | ACTIVE |
| Weekend Duffel | weekend-duffel | <p>Carry-on sized duffel with a shoe pocket.</p> | Northfield | Bags | duffel, travel | DRAFT |
| Leather Card Holder | <p>Slim holder for six cards.</p> | Northfield | Accessories | leather |
Download this example as a CSV ↓
Good to know
- A blank Status creates the product as a draft, so nothing appears on your storefront until you are ready.
- If you leave Handle blank, Shopify generates one from the title.
- A blank Command column, or no Command column at all, means every row is created as a new product.
- Every import is tracked. If you imported the wrong file, rollback removes exactly the products that import created.
Try it on your own store
BulkCSV is free for your first 250 rows, with every feature included. No card needed.
Install BulkCSV free →Common questions
Can I import an Excel file instead of a CSV?
Yes. XLS and XLSX files load the same way as CSV, and so does a public Google Sheet link.
How do I add variants, prices and SKUs?
Variants go on their own rows under the product, using a Variant Command column. See the guide on adding variants in bulk.
Will this create duplicates if I run the same file twice?
Rows with no Command are always created as new products, so running the same file twice creates two sets. To change products that already exist, use the UPDATE command instead.