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.
How to Prepare Shopify Product CSV (Complete Import Guide)
Trying to bulk import products to Shopify? The CSV format is specific, and one wrong column can break your entire import.
Let me show you exactly what Shopify expects, how to avoid the common errors that waste hours, and how to get your products imported right the first time.
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.
Perfect 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.
Good news: Shopify provides a template you can download.
Bad news: The template has like 30 columns and it's confusing which ones are required.
Let me simplify it.
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, validate data, and ensure your import succeeds on the first try.
Related Articles
Anonymize CSV Data (GDPR/Testing)
How to mask sensitive data in CSV files. Anonymize names, emails, and phones for testing or GDPR compliance.
Batch Convert Multiple Excel Files to CSV
How to convert 100 Excel files to CSV at once. Use VBA macros, Python scripts, or batch converters to save hours of manual work.
Best Free CSV Viewers for Mac & Windows
Excel isn't the only way to open CSVs. Check out the best free CSV viewers like Tad, Miller, and online tools for large files.
Need to handle CSV files?
HappyCSV is the free, secure way to merge, split, and clean your data — all in your browser.