WOOCOMMERCE → SHOPIFY · PRACTICAL CSV GUIDE

WooCommerce variable products
to Shopify CSV.

Preparing a WooCommerce variable product for Shopify means keeping one product together while giving every sellable variation its own options, price, SKU, and stock. Start with a complete parent-and-variation group, then inspect a draft import before moving the rest.

This guide explains the standard WooCommerce export, shows exactly how CatalogBridge prepares a two-variation example, and lists the checks the converter cannot perform for you.

Documentation and converter behavior reviewed . CatalogBridge is independent of Shopify and WooCommerce.

Audit my WooCommerce CSV

Free browser-local audit and a sample of up to five products. No store connection required.

01 · START WITH A COMPLETE GROUP

Export the parent and its variations together

In WooCommerce, go to Products → All Products → Export. Keep the original export as a backup and edit a copy. Include the variable product and all variations you intend to move. A variation-only file cannot tell CatalogBridge which parent title, description, or allowed option values to use. See the official WooCommerce CSV export and schema documentation.

  • The parent row uses Type = variable. It supplies the shared product information and lists the allowed values for each variation attribute.
  • Each child row uses Type = variation. Its Parent is either the parent's SKU, such as TEE, or its ID prefixed with id:, such as id:100.
  • Each variation option is explicit. For a Size and Color product, each variation needs one Size and one Color. A blank “any size” selection needs a deliberate expansion into the actual combinations you sell.

CatalogBridge reads the standard built-in export headers. Its required columns are Type, Name, and Regular price; every simple product and variation needs a name and a valid regular price. A variable parent can leave its price blank. Save a comma-delimited UTF-8 CSV within the tool's 5 MiB and 10,000 source-row limits. Variations count toward the row limit.

02 · A WORKED EXAMPLE

One cotton tee, two sellable variations

The following illustrative source CSV contains one parent and two variations. It is a small, valid input for CatalogBridge; it is not a Shopify import file. The parent offers Size S or M and Color Navy or Cream. Only the two combinations represented by child rows will be generated.

ID,Type,SKU,Name,Parent,Regular price,Sale price,Stock,Weight (kg),Attribute 1 name,Attribute 1 value(s),Attribute 2 name,Attribute 2 value(s)
100,variable,TEE,Cotton tee,,,,,0.2,Size,"S, M",Color,"Navy, Cream"
101,variation,TEE-S-NAVY,Cotton tee - S / Navy,TEE,24,,5,,Size,S,Color,Navy
102,variation,TEE-M-CREAM,Cotton tee - M / Cream,id:100,26,22,3,0.25,Size,M,Color,Cream

On a narrow screen, focus the example and scroll sideways. The quotes around "S, M" and "Navy, Cream" keep each comma-separated option list inside one CSV cell.

What CatalogBridge prepares

Both variations share the generated URL handle cb-cotton-tee-100. The first output row carries the parent title Cotton tee, Status = draft, and Published on online store = false. Product-level cells are blank on the next variation row. The table below is a shortened inspection view of the output, not a complete import template.

Selected Shopify output columns for the two variations
SKUOption1 nameOption1 valueOption2 nameOption2 valuePriceCompare-at priceInventory quantityWeight value (grams)
TEE-S-NAVYSizeSColorNavy24blank5200
TEE-M-CREAMSizeMColorCream22263250
  • The S/Navy row inherits the parent's 0.2 kg weight because its own weight is blank.
  • The M/Cream row uses its own 0.25 kg weight. Its sale price becomes Price = 22 and regular price becomes Compare-at price = 26.
  • Both rows use Shopify inventory tracking because they have explicit stock quantities. Review the single-location inventory warning before importing.
  • The audit should report 3 source rows, 1 product, 2 variants, and 2 output rows. Images would add extra output rows; source row count and output row count need not match.

Keep option columns attached to their variants when editing. Shopify documents the dependency between variant data and option columns in its product CSV reference.

03 · SHIPPING VALUES NEED UNITS

Check both the weight and where it came from

WooCommerce's shared shipping settings apply to variations unless a variation has its own setting. That is why an empty variation weight can mean “use the parent,” rather than “weight is zero.” Check your source setup against WooCommerce's shipping settings documentation.

CatalogBridge recognizes Weight (g), Weight (kg), Weight (lbs), Weight (lb), and Weight (oz). A bare Weight header needs the correct source unit selected in the audit. An explicit unit in a nonempty weight column takes precedence over a bare Weight value and raises a warning when both have values.

  • Check the source setting before selecting a unit. A number such as 0.2 is ambiguous without it.
  • Read the converted gram value. CatalogBridge converts kilograms to grams using ×1,000, pounds using ×453.59237, and ounces using ×28.349523125, then rounds to a whole gram. It warns when rounding changes the value.
  • Inspect blank weights. If neither variation nor parent supplies a weight, this tool leaves the output blank. It does not establish that the product is weightless.
  • Review shipping separately. A supported virtual type modifier sets Requires shipping = false. This does not transfer downloadable files or configure digital delivery.

Shopify's CSV expects whole-number grams; its display-unit column is a separate value. Check actual product weights in the draft import and review your shipping configuration before publishing. Shopify's current weight fields describe the destination format.

04 · READ THE ERROR, THEN FIX THE SOURCE

Common blockers and the change each needs

Any error suppresses all prepared output. Fix the source file and run the audit again. Warnings still need review even when a sample download is available.

ORPHAN_VARIATION: a parent cannot be found

Include the matching variable parent in the same CSV. Use its exact SKU in Parent, or prefix the exact source ID with id:. A bare numeric parent ID is treated as a SKU. Parent references resolve inside the file; the audit does not look in your WooCommerce or Shopify store.

ANY_VALUE_VARIATION: an option is blank or has several values

Give the child exactly one value for every variation attribute. If “Any Size” sells S and M, create the intended explicit variations with their own accurate SKU, price, and stock. Do not invent stock allocations to satisfy the file.

ATTRIBUTE_NOT_ON_PARENT or ATTRIBUTE_VALUE_NOT_ON_PARENT

Make the attribute name and value match the parent's list, including capitalization. Navy and navy differ here. Add a legitimate missing parent value, or correct a child's typo.

DUPLICATE_COMBINATION or duplicate ID/SKU

Check for repeated export rows. Each source ID and nonempty SKU must be unique, and two variations of one product cannot have the same complete option combination. Confirm which record is correct before removing or renaming one.

SHARED_PARENT_STOCK

The tool cannot divide shared parent inventory between variations. Establish the intended stock policy and per-variation quantities first. Removing the number without resolving the inventory policy does not preserve stock.

UNKNOWN_WEIGHT_UNIT or MULTIPLE_WEIGHTS

Select the known source unit for a bare Weight column. If several unit-bearing columns contain weights for one record, reconcile them and keep one authoritative value.

MISSING_PRICE, invalid price, or SCHEDULED_SALE

Use nonnegative decimal numbers without currency symbols or thousands separators, for example 24.50. A sale price must be lower than the regular price. Scheduled sale dates block output because product CSV preparation cannot preserve their timing; decide the correct current pricing and handle scheduling separately.

More than three variation attributes, unsupported plugin product types, unsafe description markup, and spreadsheet formula markers can also block output. The issue list identifies the affected source row. Keep the original CSV when resolving a reported problem.

05 · PROVE A SMALL IMPORT FIRST

Treat draft status as the start of review

CatalogBridge prepares draft, unpublished products regardless of the source publication setting. It generates new handles beginning with cb-; it does not preserve WooCommerce URLs or inspect existing Shopify products. Run the following checks in an authorized test store before a full migration.

  1. Keep backups. Save the original WooCommerce export and a Shopify product export if the destination already contains products.
  2. Resolve every blocker and review every warning. Note nonempty columns the audit says it does not transfer. Confirm that the destination currency matches the source amounts; no currency conversion takes place.
  3. Download the free sample. It includes up to five product groups with their prepared variants and image rows. The worked example here is one product, despite its three source rows.
  4. Review Shopify's import preview. In Products → Import, leave Overwrite products with matching handles disabled. Review the option for publishing new products to sales channels and keep the test unpublished.
  5. Read Shopify's import results. Open every imported sample product and check draft status, title, description, exact option combinations, SKUs, prices, compare-at prices, quantities, tax flags, weights, and images.
  6. Resolve differences before repeating. Reusing the same handle without overwrite can skip an existing product; changing a source name or ID can generate a different handle. Track the test records and review the preview each time.
  7. Review the full migration separately. Verify inventory locations, shipping, taxes, sales channels, redirects, and any unsupported data before publishing the reviewed products.

Shopify explains how matching handles are skipped when overwrite is off and how imported blanks can replace existing values when it is on. Follow its official CSV import and overwrite guidance. A successful local audit cannot establish a successful Shopify import.

06 · CHOOSE THE TOOL THAT FITS THE JOB

Use the free migration alternative when it fits

Shopify offers its own free Store Migration app for importing WooCommerce product and customer CSVs. Shopify's WooCommerce migration guide explains that route and its limits. If your goal is a direct supported import, start there and review its import report.

CatalogBridge is useful when you want to inspect a WooCommerce CSV locally, understand blockers before import, and review prepared Shopify rows. It supports standard simple and variable products with up to three explicit variation options. It never connects to your store or overwrites products itself.

What needs separate work

  • Images: URLs are checked for syntax only. The tool does not fetch files or confirm access, file format, ownership, or a successful Shopify download.
  • Inventory: prepared product CSV quantities are intended for a single Shopify location. Multiple locations need a separate inventory workflow. Out-of-stock status with no quantity is warned about and remains untracked.
  • Attributes and product text: descriptive attributes that are not variant options, default option selections, and variation-specific descriptions or tags are not transferred.
  • Other source columns: nonempty unmapped fields are reported. Categories, dimensions, plugin metadata, and downloadable-file fields need a separate plan when present; retain their original values.
  • The rest of the store: customers, orders, reviews, redirects, themes, payment settings, and store configuration are outside this converter's product-CSV scope.

Free audit and offline toolkit

The free audit and five-product sample are available on the main page. A reusable offline HTML toolkit, delivered in a ZIP with setup notes, costs KWD 3.000 once, with full prepared CSV and review exports. Check the main page for currently available payment methods. KNET requires a supported Kuwaiti debit card; international card availability is shown separately. The paid product is offline convenience; the public conversion code is inspectable.

Read the current toolkit scope and availability.

Check my product CSV

Keep this guide alongside your original export and import results. Recheck the linked official documentation when you run the migration, as platform formats and import behavior can change.