9 min read
By HappyCSV Team

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 (not 100.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: TRUE or FALSE
  • 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.991299.99
  • Spaces: 29 .9929.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:

  1. Products → Import
  2. Click "Download sample CSV"
  3. 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

  1. Shopify Admin → Products
  2. Click Import
  3. Choose your CSV file
  4. Click "Upload and preview"
  5. Review any warnings or errors
  6. 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:

  1. Create CSV with just 5 sample products
  2. Import those
  3. Verify everything looks perfect
  4. 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:

  1. Export existing products (Shopify Admin → Products → Export)
  2. Edit the downloaded CSV (update prices, quantities, etc.)
  3. Re-import
  4. 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:

  1. Start with Shopify's template
  2. Fill required columns correctly
  3. Validate data before upload
  4. Test with small batch first
  5. 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.

Need to handle CSV files?

HappyCSV is the free, secure way to merge, split, and clean your data — all in your browser.