Migrating WooCommerce variable products to Shopify variants (2026)
How WooCommerce variable products map to Shopify variants — attribute handling, the 3-option limit, variant images, and migrating complex variable products correctly.
Variable products are the most complex product type to migrate from WooCommerce to Shopify. A WooCommerce variable product can have unlimited attributes and unlimited variations — Shopify, by contrast, has a hard limit of 3 options per product and 100 variants per product. Understanding this limitation before migration is critical to avoiding surprises on migration day.
How WooCommerce variable products work
In WooCommerce, variable products consist of:
- Product attributes: Custom attributes or global WooCommerce attributes (e.g., Color, Size, Material). Each attribute has multiple terms/values.
- Variations: Each unique combination of attribute values is a variation — stored as a child post in WordPress. Each variation has its own: price, sale price, SKU, stock quantity, weight, dimensions, and optionally its own image.
- No attribute limit: A WooCommerce product can have 10+ attributes. Variations grow exponentially with each added attribute.
How Shopify variants work
Shopify uses a simpler "options + variants" model:
- Options: Up to 3 options per product (e.g., Color, Size, Material). Each option has multiple values.
- Variants: Every combination of option values creates a variant. Hard limit: 100 variants per product.
- Variant data: Each variant has price, compare-at price, SKU, inventory, weight, barcode.
- Variant images: You can assign a product image to a variant (e.g., different image per color).
The 3-option / 100-variant limit
This is the most important constraint to understand before migration.
Products with 3 or fewer attributes: Migrate cleanly — no issues.
Products with 4+ attributes: Cannot be migrated as-is. Options:
- Combine less-important attributes into one option (e.g., "Color/Finish" as one option that includes both color and finish values)
- Use metafields for informational attributes that don't affect pricing (material, origin, etc.)
- Use apps like Infinite Options or Product Options by Hulk to add additional option fields (these store data in line item properties, not true variants)
- Split into separate products if the 4th+ attribute represents genuinely different products
Products exceeding 100 variants: Example — a clothing item with 10 sizes × 15 colors = 150 variants. Options:
- Split into multiple Shopify products (e.g., one product per color family)
- Use Shopify's Combined Listings app (Shopify Plus) — groups related products as a single storefront listing
- Remove low-selling variants before migration (rationalize your SKU count)
Attribute mapping: WooCommerce → Shopify
| WooCommerce | Shopify equivalent | Notes |
|---|---|---|
| Product attribute (used for variations) | Product option | Max 3 options in Shopify |
| Product attribute (not used for variations) | Product metafield or description | Informational attributes don't need to be options |
| Global attribute (e.g., WooCommerce Color) | Option name (same across products) | Shopify options are per-product, not global — no taxonomy link |
| Custom attribute per product | Option or metafield | Same rules apply |
| Variation SKU | Variant SKU | Migrates directly |
| Variation price / sale price | Variant price / compare-at price | Migrates directly |
| Variation stock | Variant inventory quantity | Migrates directly |
| Variation image | Variant-specific image | Requires image re-upload to Shopify CDN |
| Variation weight | Variant weight | Migrates directly |
How k-sync handles variable product migration
When k-sync migrates a WooCommerce variable product:
- Reads all variations from the WooCommerce REST API (
GET /wc/v3/products/{id}/variations) - Extracts unique attribute names → maps to Shopify option names (up to 3)
- Maps each variation's attribute values → Shopify variant option values
- Creates each variant with its own price, SKU, inventory, and weight
- Marks products exceeding 3 attributes or 100 variants with a validation warning
Products with validation warnings are flagged in the k-sync product table — you can review and decide how to handle each one before pushing to Shopify.
Variant images
WooCommerce variations can each have their own image. Shopify handles this differently:
- All product images are stored in the product's image gallery
- Each variant can be assigned one of these gallery images
- When a customer selects a variant (e.g., "Blue"), the product image switches to the assigned image
During migration:
- All variation images are uploaded to the Shopify product's image gallery
- Each variant is linked to its corresponding image
- The theme must support variant image switching (Dawn and most modern themes do)
If a WooCommerce variation had an image and the corresponding Shopify product image was successfully uploaded, k-sync can map the variant to that image automatically.
Products with many attribute values (but ≤ 3 attributes)
A clothing store might have:
- Size: XS, S, M, L, XL, 2XL, 3XL (7 values)
- Color: Black, White, Navy, Red, Green, Yellow, Pink, Purple, Orange, Teal (10 values)
- = 70 variants
This is within Shopify's limits (≤ 3 options, ≤ 100 variants). It migrates cleanly.
But add a third option:
- Length: Short, Regular, Long (3 values)
- = 7 × 10 × 3 = 210 variants — exceeds limit
Solution: audit your actual variant matrix. Often, not all combinations exist or are active. If only 80 of the 210 theoretical combinations are actually sold, that fits within Shopify's limits.
Attribute types: dropdowns vs buttons vs swatches
WooCommerce supports attribute types: text, select, color swatch, image swatch (with plugins). Shopify's native variant UI shows options as:
- Dropdown selects by default
- Buttons: configured in Dawn and modern themes via settings
- Color swatches: requires theme support or an app (Swatches King, Variant Image Automator)
After migration, check how your variant selectors display. If you had color swatches in WooCommerce, you'll need a Shopify theme that supports color swatches or a swatch app to replicate that UX.
Handling "Any" variation attributes
WooCommerce allows setting variation attribute values to "Any" — meaning the variation applies to any value of that attribute. For example, a variation with Color = "Any" and Size = "XL" sets a price for all XL variants regardless of color.
Shopify doesn't have an equivalent "Any" concept — each variant is a specific combination of option values. During migration, "Any" attributes need to be expanded to explicit combinations.
Variable product migration checklist
- Audit all variable products for attribute count (flag any with 4+ attributes)
- Audit all variable products for variant count (flag any approaching or exceeding 100)
- Decide handling for 4+ attribute products: combine attributes, use metafields, or split products
- Decide handling for 100+ variant products: split into multiple products or remove low-selling variants
- Verify k-sync's validation errors for variable products in the product table
- After migration, verify variant images are assigned correctly (check color variant switching)
- Verify variant prices, SKUs, and inventory transferred correctly for a sample of products
- Check how variant selectors display in your theme (dropdowns vs buttons vs swatches)
- Install a swatch app if your WooCommerce store used color swatches and your theme doesn't support them natively
For most stores, variable product migration is straightforward — the WooCommerce attributes map cleanly to Shopify options. The 3-option/100-variant limit affects a minority of products in most catalogs, but it's worth auditing before migration to avoid surprises.
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.