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.
Manage your products with k-sync
Connect your store, validate your products, optimize with AI, and push to Shopify in minutes. Free for up to 50 products.
Get started freeRelated reading
Managing products across Shopify and WooCommerce simultaneously (2026)
How to manage product data across both Shopify and WooCommerce at the same time — syncing catalogs, handling platform differences, inventory management, and choosing a central hub.
Shopify bulk editing: built-in vs k-sync — a complete comparison (2026)
A detailed comparison of Shopify's native bulk editing tools versus k-sync for product management — features, limitations, use cases, and when to use each approach.