Migrating a large WooCommerce catalog to Shopify (500+ products, 2026)
Special considerations for migrating large WooCommerce stores to Shopify — Shopify's product limits, API rate limits, bulk operations, and what to know about performance at scale.
Migrating a large WooCommerce catalog — 500, 5,000, or 50,000+ products — introduces challenges that small catalog migrations don't face. Shopify has architectural limits, API rate limits, and performance considerations that all need to be understood before starting. This guide covers what's different about large catalog migrations and how to handle them correctly.
Shopify's product and variant limits
| Limit | Value | Notes |
|---|---|---|
| Products per store | No hard limit (tested to millions) | Shopify stores have handled 200M+ products in enterprise deployments |
| Variants per product | 100 (standard) / 2,000 (with Combined Listings app on Plus) | Hard limit — products exceeding this must be split |
| Options per product | 3 | Hard limit — additional options need app workarounds |
| Images per product | 250 | Rarely an issue |
| Collections | No hard limit | Tested to 100,000+ |
| Smart collection conditions | 60 per collection | Usually sufficient |
| Product description size | 65,536 characters | Very large — not a practical concern |
| SKU length | 255 characters | Not a practical concern |
| Tags per product | 250 | Not a practical concern |
Shopify API rate limits
Understanding API rate limits is critical for large migrations. Shopify uses a "leaky bucket" rate limit model:
REST API
- 40 requests per app per store per second (bucket capacity)
- Bucket refills at 2 requests/second
- Each request consumes 1 bucket point
- Response headers include
X-Shopify-Shop-Api-Call-Limit(e.g., "24/40") - Hitting limit returns HTTP 429 with
Retry-Afterheader
REST API practical throughput: ~2 products/second maximum sustained. For 10,000 products: ~5,000 seconds (~1.4 hours) at maximum rate.
GraphQL API
- Cost-based rate limiting: each query has a cost score
- Bucket: 1,000 cost per second, refills at 50/second
- Simple mutations: 10–20 cost. Complex bulk operations: higher.
- Much more efficient than REST for bulk operations
GraphQL Bulk Operations (recommended for large catalogs)
Shopify's GraphQL Bulk Operations API bypasses standard rate limits:
bulkOperationRunMutationsubmits a JSONL file with multiple mutations- Shopify processes asynchronously in the background
- No rate limit on the bulk operation itself — you're limited by file size (30GB max)
- Results delivered via a downloadable URL when complete
- k-sync uses Bulk Operations for large catalog pushes to Shopify
For 10,000 products via Bulk Operations: typically completes in 15–30 minutes, depending on product complexity and Shopify's queue.
WooCommerce import at scale
Reading from WooCommerce is also rate-limited by your server:
- WooCommerce REST API: no official rate limit, but your hosting limits requests per second
- Default WooCommerce pagination:
per_page=100(maximum 100 products per request) - For 10,000 products: 100 requests to read all products (plus variation requests)
- Variable products require additional requests: GET /wc/v3/products/{id}/variations (100 per request)
Tip for large migrations: Run the WooCommerce import during off-peak hours to minimize impact on your live store's performance. A 10,000 product import might take 20–40 minutes from WooCommerce, depending on server speed.
Image migration at scale
Images are the slowest part of any large migration. Each product image requires:
- Download from WooCommerce server (or S3)
- Upload to Shopify CDN
- Shopify processes image (resize, WebP conversion, CDN distribution)
Typical image migration speed: 2–10 images per second depending on image size and network. For a catalog with 10,000 products averaging 5 images each:
- 50,000 total images
- At 5 images/second: ~10,000 seconds (~2.8 hours)
- At 10 images/second: ~5,000 seconds (~1.4 hours)
Optimization: Upload images at their final optimized size before migration. Shopify's processing is faster for smaller files. Images under 1MB process significantly faster than 5–10MB raw files.
Collection setup for large catalogs
WooCommerce with 500+ products typically has complex category hierarchies. Shopify collections are flat (no hierarchy), so you'll need a strategy:
- Smart collections by tag: Add category tags to products during migration (e.g.,
category:shoes,subcategory:heels) and create smart collections using those tags. This scales well for large catalogs. - Smart collections by product type: Set
product_typeduring migration and filter collections by type. - Manual collection bulk import: For specific product groupings, use Matrixify to bulk-create custom collections with explicit product lists.
For a 500+ product catalog with deep category trees, automatic smart collections by tag are the most scalable approach.
Shopify plan considerations at scale
| Plan | Bulk products | API access | Location limit |
|---|---|---|---|
| Basic ($29/mo) | No limit | Standard REST + GraphQL | 10 locations |
| Shopify ($79/mo) | No limit | Standard REST + GraphQL | 10 locations |
| Advanced ($299/mo) | No limit | Standard REST + GraphQL | 10 locations |
| Plus ($2,300+/mo) | No limit + Combined Listings (2,000 variants) | Enhanced API + Flow | 200 locations |
For most large catalog stores (1,000–50,000 products), the Shopify or Advanced plan is sufficient. Shopify Plus is only necessary if you need 2,000 variants per product, advanced B2B features, or custom checkout.
Validation before pushing large catalogs
For large migrations, the pre-push validation step is critical. With 10,000 products:
- Even a 1% error rate means 100 products with issues
- Common issues at scale: missing SKUs, duplicate handles, products exceeding variant limits, malformed HTML in descriptions, oversized images
k-sync's validation step catches these issues before pushing:
- Flags products with 4+ options (Shopify limit: 3)
- Flags products with 100+ variants
- Flags duplicate handles within the catalog
- Flags products with no price on any variant
- Flags variant SKU conflicts (same SKU on multiple products)
For large catalogs, fix all validation errors before pushing — pushing partially-valid data creates a messy cleanup task.
Phased migration for very large catalogs
For catalogs with 10,000+ products, a phased migration reduces risk:
Phase 1: Migrate your top 500 products by revenue. These are your highest priority — get them perfect first.
Phase 2: Migrate the next 1,000 products. Validate batch by batch.
Phase 3: Migrate remaining catalog (bulk), accepting lower QA per product for the long tail.
This approach lets you launch on Shopify with your critical inventory ready while the long-tail catalog continues migrating in the background.
Large catalog migration checklist
- Count total products and variants in WooCommerce before migration
- Identify products exceeding 3 options or 100 variants (prepare splitting strategy)
- Plan collection structure using smart collections (tags/product type) for scalability
- Optimize images before migration (compress to <1MB, max 2048px)
- Schedule migration during off-peak hours
- Run k-sync validation before Shopify push — fix all errors first
- Consider phased migration for 10,000+ product catalogs
- Use Shopify GraphQL Bulk Operations for the push (much faster than REST at scale)
- After migration: verify top 50 products manually
- Use Shopify's product import/export CSV to spot-check data integrity across the full catalog
- Test storefront performance with full catalog loaded (check category/collection page load times)
Large catalog migrations are primarily an infrastructure and data quality challenge. With proper validation, phased migration, and the right API approach, catalogs of any size can be migrated reliably to Shopify.
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.