How to Prepare Shopify Product CSV (Complete Import Guide)
Learn the exact Shopify CSV format for bulk product imports. Avoid common errors and import your products successfully on the first try.
Trying to bulk import products to Shopify? The CSV format is specific, and one wrong column can break your entire import.
The useful preparation happens before upload: start from Shopify's current template, preserve the required headings, and test a small product set before committing a full catalogue.
Why Use CSV for Shopify Imports?
Adding products one-by-one: Tedious when you have 50+ products.
CSV bulk import: Add hundreds or thousands of products in minutes.
This approach is useful for:
- New store setup (migrating from another platform)
- Seasonal inventory updates
- Wholesale catalogs
- Dropshipping product lists
Shopify CSV Format Overview
Shopify has strict requirements. Your CSV must have specific column names in a specific format.
Shopify provides a product CSV template. It contains many fields because the same format must represent simple products, variants, inventory, images, and other catalogue details. Use the current template from Shopify and retain the headings required for your import.
Start with the fields required for the products you are actually importing.
Required Columns (Minimum)
To import products, you must have these columns:
Handle
- What it is: Unique identifier for the product (like a URL slug)
- Format: Lowercase, no spaces, use hyphens
- Example:
blue-cotton-t-shirt - Rules: Must be unique per product
Title
- What it is: Product name shown to customers
- Format: Plain text, can have spaces and capitals
- Example:
Blue Cotton T-Shirt
Variant SKU
- What it is: Stock Keeping Unit for inventory tracking
- Format: Alphanumeric, must be unique across all products
- Example:
BLUE-TS-001 - Can be empty: But not recommended
Variant Price
- What it is: Product price
- Format: Number only, no currency symbols
- Example:
29.99(not$29.99) - Required: Yes, even if product is free (use
0.00)
Variant Inventory Qty
- What it is: How many in stock
- Format: Whole numbers only
- Example:
100(not100.5)
That's the bare minimum. Five columns and you can import products.
Important Optional Columns
These aren't required but you probably want them:
Body (HTML)
- Product description
- Can include HTML formatting
- Shows on product page
Vendor
- Brand or manufacturer name
- Example:
Nike,Acme Co
Type
- Product category/type
- Example:
T-Shirts,Shoes,Accessories
Tags
- Comma-separated keywords
- Example:
cotton, summer, casual - Used for filtering and organization
Published
- Whether product is visible in store
- Values:
TRUEorFALSE - Default if empty:
TRUE
Image Src
- URL to product image
- Must be publicly accessible HTTPS URL
- Example:
https://example.com/images/product.jpg
Handling Product Variants
Here's where it gets tricky. If your product has variants (sizes, colors, etc.), you need multiple rows.
Example: T-shirt in 3 sizes
Handle,Title,Option1 Name,Option1 Value,Variant SKU,Variant Price,Variant Inventory Qty
blue-tshirt,Blue T-Shirt,Size,Small,BLUE-TS-S,29.99,50
blue-tshirt,Blue T-Shirt,Size,Medium,BLUE-TS-M,29.99,75
blue-tshirt,Blue T-Shirt,Size,Large,BLUE-TS-L,29.99,60
Key points:
- Same Handle for all variants of one product
- Same Title for all variants
- Different Option1 Value (Small, Medium, Large)
- Different Variant SKU for each
- Can have different prices/quantities per variant
Multiple Option Types
Product with Size AND Color:
Handle,Title,Option1 Name,Option1 Value,Option2 Name,Option2 Value,Variant SKU,Variant Price
tshirt,T-Shirt,Size,Small,Color,Blue,TS-S-BLU,29.99
tshirt,T-Shirt,Size,Small,Color,Red,TS-S-RED,29.99
tshirt,T-Shirt,Size,Medium,Color,Blue,TS-M-BLU,29.99
tshirt,T-Shirt,Size,Medium,Color,Red,TS-M-RED,29.99
Shopify supports up to 3 option types (Option1, Option2, Option3).
Common Shopify CSV Errors
Error 1: "Handle is required"
Problem: Handle column is empty for some rows.
Fix: Every product row must have a Handle. Use the same Handle for all variants of a product.
Error 2: "Variant Price is not a valid number"
Problem: You included currency symbol: $29.99
Fix: Numbers only: 29.99
Also watch for:
- Commas in large numbers:
1,299.99→1299.99 - Spaces:
29 .99→29.99
Error 3: "Image Src is not a valid URL"
Problem: Image URL is not publicly accessible or not HTTPS.
Fix:
- Upload images to hosting (Imgur, Cloudinary, your own server)
- Ensure URL starts with
https:// - Test URL in browser - does image load?
Error 4: "Variant option mismatch"
Problem: Different variants of same product have different option names.
Wrong:
Handle,Option1 Name,Option1 Value
shirt,Size,Small
shirt,Colour,Red ← Different option name!
Fix: Use same option names for all variants:
Correct:
Handle,Option1 Name,Option1 Value,Option2 Name,Option2 Value
shirt,Size,Small,Color,Blue
shirt,Size,Medium,Color,Red
Error 5: "Inventory quantity must be a whole number"
Problem: You entered 10.5 or ten in quantity field.
Fix: Use whole numbers only: 10, 50, 100
Step-by-Step: Create Your Shopify CSV
Step 1: Download Shopify's Template
In Shopify Admin:
- Products → Import
- Click "Download sample CSV"
- Open in Excel or Google Sheets
Step 2: Fill Required Columns
Start with the big five:
- Handle (product-name-lowercase-hyphenated)
- Title (Display Name)
- Variant SKU (unique code)
- Variant Price (number only)
- Variant Inventory Qty (whole number)
Step 3: Add Product Details
- Body (HTML): Description
- Vendor: Brand name
- Type: Category
- Tags: Keywords (comma-separated)
Step 4: Add Variants (If Applicable)
For each variant:
- Duplicate the row
- Keep same Handle
- Change Option Value
- Update Variant SKU, Price, Qty as needed
Step 5: Add Images
- Upload images to accessible URL
- Paste HTTPS URLs in Image Src column
- Multiple images: Multiple rows with same Handle
Step 6: Validate Before Upload
Check:
- ✓ No empty Handles
- ✓ All prices are numbers (no $ symbols)
- ✓ All quantities are whole numbers
- ✓ Image URLs are valid HTTPS
- ✓ Option names match across variants
- ✓ SKUs are unique
Pre-Import Checklist
Run through this before uploading to Shopify:
✓ Required columns present: Handle, Title, Variant SKU, Variant Price, Variant Inventory Qty
✓ Handles are URL-friendly: Lowercase, hyphens instead of spaces, no special characters
✓ Prices formatted correctly: Numerics only, decimal point (not comma)
✓ Inventory quantities are integers: No decimals, no text
✓ Images are accessible: Test URLs in browser
✓ Variant options consistent: Same option names for variants of same product
✓ SKUs are unique: No duplicates across your entire catalog
✓ File encoding is UTF-8: Prevents issues with special characters
Importing to Shopify
- Shopify Admin → Products
- Click Import
- Choose your CSV file
- Click "Upload and preview"
- Review any warnings or errors
- Click "Import products"
Note: Shopify shows a preview before importing. Use this to catch errors before they're in your store.
After Import: Verification
Don't assume it worked. Check:
In Shopify Admin:
- Go to Products
- Verify product count matches what you imported
- Spot-check 5-10 products:
- Title correct?
- Price correct?
- Images loaded?
- Variants all there?
On Storefront:
- View products as a customer would see them
- Check product pages display correctly
- Verify "Add to Cart" works
- Test variant selection
Common Post-Import Issues
Issue 1: Images Didn't Load
Why: URL was broken, not public, or not HTTPS.
Fix:
- Upload images to reliable hosting
- Update CSV with corrected URLs
- Re-import (Shopify updates existing products)
Issue 2: Variants Are Separate Products
Why: Each variant had a different Handle.
Fix:
- Download products (export)
- Fix Handles so variants share same Handle
- Re-import with "overwrite" option
Issue 3: Prices Wrong
Why: Excel auto-formatted your CSV and added decimals or changed precision.
Fix:
- Open CSV in text editor (Notepad)
- Verify prices look correct
- If wrong, recreate CSV being careful with number formatting
Tips for Large Catalogs
Tip 1: Import in Batches
Importing 10,000 products at once = higher chance of errors.
Instead:
- Split into batches of 500-1000 products
- Import first batch
- Verify it worked
- Import next batch
If errors occur, you know which batch has the problem.
Tip 2: Test with 5 Products First
Before importing your entire catalog:
- Create CSV with just 5 sample products
- Import those
- Verify everything looks perfect
- Then import the rest
Catches format issues early.
Tip 3: Use Product Models
Shopify supports 3D models and videos, but they're harder to bulk import.
For images/videos:
- Upload them separately first
- Then associate with products
Don't try to include media URLs in initial CSV import unless you're confident.
Updating Existing Products
Already have products in Shopify? Want to bulk update prices or inventory?
Process:
- Export existing products (Shopify Admin → Products → Export)
- Edit the downloaded CSV (update prices, quantities, etc.)
- Re-import
- Choose "Overwrite products with matching handles"
Shopify matches by Handle and updates those products instead of creating new ones.
Be careful: Overwrite replaces product data. Any fields you leave empty in CSV will erase existing data.
Shopify CSV vs Other Platforms
Migrating from another platform?
- WooCommerce, Magento, BigCommerce all have different CSV formats
- You'll need to reformat columns to match Shopify's requirements
- Tools exist to convert between formats, but manual adjustment often needed
Column mapping:
- Their "ProductName" → Shopify "Title"
- Their "ProductID" → Shopify "Handle"
- Their "StockLevel" → Shopify "Variant Inventory Qty"
Check Shopify's documentation for your specific source platform.
The Bottom Line
Shopify CSV requirements:
- Specific column names (case-sensitive)
- Clean data (numbers without symbols, URLs that work)
- Consistent variant format (same Handle for all variants)
Success formula:
- Start with Shopify's template
- Fill required columns correctly
- Validate data before upload
- Test with small batch first
- Verify after import
Don't wing it. One malformed column can break your entire import. Take 10 minutes to verify your CSV matches Shopify's format, and you'll save hours of troubleshooting.
Prepare your Shopify CSV: Use HappyCSV's tools to organize columns, then compare the result with Shopify's current template and test a small import first.
Related Articles
How to Clean Email Lists Before Sending (5-Step Guide)
Clean your email list to improve deliverability and avoid spam complaints. Remove duplicates, validate formats, and fix common issues.
Import CSV to HubSpot (Contacts & Companies)
A complete guide to importing contacts, companies, and deals into HubSpot from CSV. Learn how to map properties, handle associations, and fix errors.
Import CSV to Salesforce (Step-by-Step Guide)
Learn how to import CSV data into Salesforce using Data Import Wizard and Data Loader. Tips for mapping fields, handling IDs, and avoiding errors.
Use the CSV Editor
Edit CSV cells locally in your browser, review changes, and download a clean copy without uploading your data. Your file is processed locally in the browser.