How to Bulk Import Products to Shopify with a CSV File (2026 Guide + Free Template)
1 free file — jump to downloadsOn this page
- What a Shopify product CSV actually is
- Step 1: Start from Shopify's own sample (or an export)
- Step 2: Understand the columns that matter
- Step 3: Add variants the right way
- Step 4: Add product images
- Step 5: Save the file correctly
- Step 6: Import, then check your work
- Common Shopify CSV errors and how to fix them
- "Invalid CSV header" or "missing column"
- Variants appear as separate products
- Images are missing
- Strange characters in titles or descriptions
- Stock levels did not update
- The import is stuck or times out
- Working faster with large catalogues
- After the import
- Download the files
Adding products one at a time is fine for a handful of items. Once you have fifty, five hundred or a supplier's whole catalogue, the manual route eats days you should spend on marketing. Shopify's CSV import lets you upload an entire catalogue from a single spreadsheet, and once you understand how the file is structured, it is one of the biggest time-savers in the whole platform.
This guide uses the column names Shopify uses in 2026, walks through variants and images with real examples, and finishes with a troubleshooting list for the errors I see most often on client stores. You can download a ready-to-edit Shopify CSV import template at the end of the article.
What a Shopify product CSV actually is
A CSV (comma-separated values) file is a plain spreadsheet saved in a simple text format. Each row describes either a product or one variant of a product, and each column holds one piece of information, such as the title, price or image link. Shopify reads the file from top to bottom and builds your products from it.
The two ideas that make everything click are:
- The URL handle groups rows together. Every row with the same handle belongs to the same product. The handle also becomes the end of the product's web address, for example
/products/organic-cotton-t-shirt. - Product details go on the first row only. Title, description, vendor and tags are written once. Following rows for the same product only repeat the handle and the variant-specific columns.
Step 1: Start from Shopify's own sample (or an export)
Column headers must match exactly, so never type them from memory. You have two reliable starting points:
- In your Shopify admin, go to Products and click Import. The import window has a link to download a sample CSV.
- Even better: create one real product by hand with a couple of variants and images, then click Export on the Products page. The exported file shows exactly how Shopify structures your kind of product.
Note: Shopify renamed several columns in its newer template. "Handle" became "URL handle", "Body (HTML)" became "Description" and "Variant Price" became "Price". Older files with the old names are still accepted, but do not mix old and new names in the same file.
Step 2: Understand the columns that matter
The full template has dozens of columns. Most stores only need these:
- Title: the product name. Required for new products.
- URL handle: lowercase words joined by hyphens, unique for each product.
- Description: the product description. Basic HTML such as
<p>,<ul>and<strong>works. - Vendor, Type, Tags: used for filtering and for automated collections.
- Status:
active,draftorarchived. Import asdraftif you want to review products before customers see them. - SKU: your stock code for each variant.
- Option1 name / Option1 value: the variant option, such as Size and M. Option2 and Option3 work the same way for colour and material.
- Price and Compare-at price: the selling price and, optionally, the crossed-out original price.
- Inventory tracker and Inventory quantity: set the tracker to
shopifyif Shopify should count stock. - Continue selling when out of stock:
denystops sales at zero stock,continueallows backorders. - Weight value (grams): needed if your shipping rates depend on weight.
- Product image URL, Image position and Image alt text: the photos and their descriptions.
- SEO title and SEO description: what Google shows in search results.
Step 3: Add variants the right way
Each variant gets its own row. The first row holds the product details plus the first variant. Every extra variant repeats only the handle and the columns that change. Here is a T-shirt in three sizes, simplified to the key columns:
Title,URL handle,Option1 name,Option1 value,Price,SKU,Inventory quantity Organic Cotton T-Shirt,organic-cotton-t-shirt,Size,S,799,TEE-ORG-S,25 ,organic-cotton-t-shirt,,M,799,TEE-ORG-M,40 ,organic-cotton-t-shirt,,L,849,TEE-ORG-L,30
Notice that the option name ("Size") appears only on the first row, while the option value changes on every row. If a product has two options, such as size and colour, you need one row for every combination: three sizes in two colours means six rows.
Tip: When you update existing products, always include the option columns. If you import a row for a product with variants and leave Option1 name and value empty, Shopify can remove those variants.
Step 4: Add product images
Shopify does not upload images from your computer during a CSV import. It downloads them from the links in the Product image URL column, so every link must be public. The simplest workflow:
- Upload your photos to Content > Files in the Shopify admin.
- Copy each file's URL and paste it into your spreadsheet.
- For extra photos of the same product, add rows with the same URL handle, a new image URL and an Image position of 2, 3, 4 and so on.
- Use Variant image URL if a specific variant, such as the blue colour, should show its own photo.
Write meaningful Image alt text for each photo, such as "white organic cotton t-shirt, front view". It helps accessibility, image search and your Shopify SEO.
Step 5: Save the file correctly
Most "mystery" import problems are really file-format problems.
- Google Sheets: File > Download > Comma-separated values (.csv).
- Excel: File > Save As > CSV UTF-8 (Comma delimited). Plain "CSV" can break symbols such as ₹, €, accents and emojis.
- Numbers on Mac: File > Export To > CSV, with Unicode (UTF-8) text encoding.
Excel also likes to turn long numbers, such as barcodes, into scientific notation like 8.9E+12. Format SKU and barcode columns as Text before you paste data into them.
Step 6: Import, then check your work
- Go to Products > Import and choose your file.
- Tick Overwrite products with matching handles only if you are deliberately updating existing products.
- Review the preview, which shows how Shopify reads the first product, then click Import products.
- Shopify emails you when the import finishes. Open three or four products and check the title, variants, prices, stock, images and SEO fields.
Tip: Always run a test import with five products first. Fixing five products takes two minutes; fixing five hundred takes an afternoon.
Common Shopify CSV errors and how to fix them
"Invalid CSV header" or "missing column"
A header was renamed, misspelled or has an extra space. Copy the header row again from Shopify's sample file.
Variants appear as separate products
The URL handles do not match exactly. Look for trailing spaces, capital letters or a hyphen versus an underscore.
Images are missing
The image links are private, broken or point to a page rather than the image file. Open the link in a private browser window: if you do not see the image itself, Shopify cannot either.
Strange characters in titles or descriptions
The file was not saved as UTF-8. Re-save it with the correct option and import again.
Stock levels did not update
Check that Inventory tracker is set to shopify. If you sell from several locations, use the separate inventory CSV on the Inventory page to set stock per location.
The import is stuck or times out
The file may be too large, or it may contain thousands of images that Shopify has to download. Split it into smaller batches and try again.
Working faster with large catalogues
Once the basics work, a few habits make big imports painless:
- Build handles with a formula. In Google Sheets,
=LOWER(SUBSTITUTE(TRIM(A2)," ","-"))turns a title into a draft handle. Check for duplicates afterwards. - Use tags as your collection system. Consistent tags such as
summer-2026let automated collections sort products for you. - Write original descriptions. Copied supplier text appears on hundreds of other stores. If you have many products, our guide to writing product descriptions with AI shows a safe, fact-based workflow.
- Keep a master sheet. Treat your spreadsheet as the source of truth and re-import changes, instead of editing hundreds of products by hand.
After the import
With products in place, the next job is making them sell. Work through our product page optimization guide, then run the Shopify launch checklist before you go live. The video above shows the whole import process on a real store if you prefer to follow along visually.
Download the free template below. It uses Shopify's 2026 column names, includes a product with three size variants and a simple product without variants, and is ready to edit in Google Sheets or Excel.
Download the files
Free to use in your own and client projects · no sign-up · tested before upload. Always try files on a staging site first and keep a backup.
-
Shopify product CSV template (2026 columns)shopify-product-import-template-2026.csv · 1.5 KB · v2026Download Shopify product CSV template (2026 columns) (1.5 KB)
Download not working? Tell me and I'll fix it.
Frequently asked questions
How many products can I import to Shopify with one CSV?
Shopify limits each product CSV to 15 MB rather than a fixed number of rows, which is usually thousands of products. For very large catalogues, split the file into batches of a few hundred products so errors are easier to find and fix.
Can I update existing products with a CSV?
Yes. Export your products, edit the columns you want to change and import the file again with "Overwrite products with matching handles" ticked. Shopify matches rows by the URL handle, so never change handles in the file unless you want new products.
Why are my product images not importing?
Shopify downloads every image from the URL in the Product image URL column, so the link must open in a private browser window without a login. Links to Google Drive, Dropbox previews or local computer paths will not work; upload images to Content > Files first and use those URLs.
Do I need every column in the template?
No. For new products only the Title is strictly required, and variants need the URL handle plus option names and values. Delete columns you do not use, but keep the exact spelling of the headers you keep.
Does a CSV import create collections?
Not directly in the basic template. The easiest approach is to fill the Tags column consistently and create automated collections that include products with those tags, so new imports drop into the right collection automatically.


