How to import products to Shopify in 2026 (all methods compared)
Compare every method for importing products to Shopify: CSV upload, Admin API, GraphQL Bulk Operations, and migration tools. Includes speed benchmarks.
Shopify gives you several ways to import products, from a simple CSV file to the full GraphQL Admin API. Each approach has different speed, flexibility, and complexity trade-offs. This guide covers all of them so you can pick the right one for your situation.
Method 1: Shopify CSV Import
The simplest option. Available at Products > Import in your Shopify admin.
Format: Shopify has a specific CSV template. You can download a sample from the import page. Key columns include Handle, Title, Body (HTML), Vendor, Type, Tags, Image Src, Variant Price, Variant SKU, and more.
Pros:
- No coding required
- Works for stores with a few hundred products
- Can export from Shopify admin in same format for re-import
Cons:
- Complex for variable products (multiple rows per product)
- No metafields support
- Limited to ~5,000 rows per file
- Slow to prepare: column mapping must be done manually
Best for: Small catalogs (<200 products), simple product structures, one-time imports.
Method 2: Shopify Admin REST API
Programmatic product creation via POST /admin/api/2024-01/products.json.
Rate limit: Shopify REST API uses a leaky bucket — 40 calls capacity, restores at 2 calls/second. Each product creation = 1 call. Sustained speed: about 2 products/second.
Speed benchmark: 1,000 products ≈ 8–15 minutes (depending on rate limit headroom)
Pros:
- Full control over all product fields
- Supports metafields, images, variants
- Returns the new product ID immediately (useful for tracking)
Cons:
- Rate-limited to ~2 products/second sustained
- Each product = 1 API call (sometimes 2 for images)
- Must handle pagination, retries, and error handling manually
Best for: Medium catalogs (200–2,000 products), automated sync workflows, when you need per-product feedback immediately.
Method 3: Shopify GraphQL Admin API
Same underlying operations as REST, but with GraphQL's type system and more granular cost-based throttling (1000 points, 50/second restore).
Key mutations: productCreate, productUpdate, productVariantsBulkCreate
Speed benchmark: Similar to REST for sequential calls, but supports more efficient batch operations via productVariantsBulkCreate.
Pros:
- More efficient for creating products with many variants (one call creates all variants)
- Better error messages
- Access to newer features first
Cons:
- More complex query structure
- Cost-based throttling requires tracking query costs
Method 4: Shopify GraphQL Bulk Operations (fastest)
Shopify's Bulk Operations API is designed for large catalog imports. Instead of calling the API once per product, you:
- Upload a JSONL file (one product per line) to a staged storage URL
- Trigger a single
bulkOperationRunMutationcall - Shopify processes all products on their servers asynchronously
- Poll for completion (typically minutes, not hours)
- Download a results JSONL with the new Shopify IDs
Speed benchmark: 1,000 products ≈ 2–4 minutes (Shopify processes server-side, no per-product rate limit)
Pros:
- Dramatically faster for large catalogs
- No per-product rate limiting
- Single API call to start, single download to finish
Cons:
- Asynchronous — you can't get per-product status in real time
- More complex to implement (staged uploads, polling)
- Only one bulk operation can run at a time per store
- No support for updating existing products (create only)
Best for: Large initial migrations (1,000+ products), first-time imports, maximum speed.
Method 5: Migration tools
Tools like k-sync handle the entire import pipeline for you — WooCommerce connection, field mapping, validation, and pushing via the optimal API method for your catalog size.
k-sync's approach:
- New products (never pushed to Shopify): uses GraphQL Bulk Operations
- Updates to existing products: sequential REST API calls (Bulk Operations doesn't support updates)
Best for: Non-technical merchants, large migrations, stores that need ongoing sync between platforms.
Speed comparison summary
| Method | 1,000 products | Complexity |
|---|---|---|
| CSV Import | Manual + upload | Low |
| REST API | 8–15 min | Medium |
| GraphQL API | 8–12 min | Medium-High |
| Bulk Operations | 2–4 min | High |
| k-sync (Bulk) | 2–4 min | None (tool handles it) |
Which method should you use?
You have under 200 products and no technical background: Use Shopify's CSV import or a migration tool.
You're a developer building a custom integration: Use GraphQL Bulk Operations for initial imports, REST API for ongoing updates.
You're migrating from WooCommerce and want the fastest path: Use k-sync — it connects to your WooCommerce API directly, maps all fields automatically, validates data, and uses Bulk Operations for maximum speed.
Migrate your store with k-sync
Connect your WooCommerce store, validate your products, and push to Shopify in minutes. Free for up to 50 products.
Get started freeRelated reading
Migrating a luggage and travel accessories store from WooCommerce to Shopify (2026)
How to migrate a luggage, travel bags, or travel accessories WooCommerce store to Shopify — luggage specifications, airline compliance, TSA lock, warranty and durability claims, and luggage retail Shopify setup.
Migrating a motorcycle accessories store from WooCommerce to Shopify (2026)
How to migrate a motorcycle accessories, biker gear, or motorbike parts WooCommerce store to Shopify — helmet safety standards, CE-rated protective clothing, type approval for parts, fitment compatibility, and motorcycle retail Shopify setup.