k-sync
Back to blog

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.

·By k-sync
6 min read · 1,114 words

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:

How Shopify variants work

Shopify uses a simpler "options + variants" model:

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:

Products exceeding 100 variants: Example — a clothing item with 10 sizes × 15 colors = 150 variants. Options:

Attribute mapping: WooCommerce → Shopify

WooCommerceShopify equivalentNotes
Product attribute (used for variations)Product optionMax 3 options in Shopify
Product attribute (not used for variations)Product metafield or descriptionInformational 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 productOption or metafieldSame rules apply
Variation SKUVariant SKUMigrates directly
Variation price / sale priceVariant price / compare-at priceMigrates directly
Variation stockVariant inventory quantityMigrates directly
Variation imageVariant-specific imageRequires image re-upload to Shopify CDN
Variation weightVariant weightMigrates directly

How k-sync handles variable product migration

When k-sync migrates a WooCommerce variable product:

  1. Reads all variations from the WooCommerce REST API (GET /wc/v3/products/{id}/variations)
  2. Extracts unique attribute names → maps to Shopify option names (up to 3)
  3. Maps each variation's attribute values → Shopify variant option values
  4. Creates each variant with its own price, SKU, inventory, and weight
  5. 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:

During migration:

  1. All variation images are uploaded to the Shopify product's image gallery
  2. Each variant is linked to its corresponding image
  3. 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:

This is within Shopify's limits (≤ 3 options, ≤ 100 variants). It migrates cleanly.

But add a third option:

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:

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

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 free

Related reading

Browse all migration guides