Preparing Shopify Product Data for a WooCommerce WPML Import
A product export from one commerce platform is not a ready-made import contract for another. Columns, variants, collections, images, IDs, and translation structures reflect the source platform's model.
When WooCommerce with WPML is the destination, the job has two stages: transform the source into a WooCommerce-friendly catalog, then make multilingual relationships explicit.
Shirely does not claim that an untouched Shopify export can be uploaded and migrated blindly. Build and test a Shirely-ready CSV or Google Sheet first.
Preserve the original export
Keep an unchanged copy of the source file. Work on a duplicate and record how each source field maps to the destination.
Inventory:
- product and variant identifiers;
- SKUs and missing SKUs;
- option names and values;
- product types, collections, and tags;
- prices and stock;
- image URLs and order;
- titles, descriptions, and SEO fields;
- publication status;
- translated data stored elsewhere.
Do not delete unfamiliar columns until you know whether they carry information needed later.
Establish destination identity
For standard cross-store WooCommerce matching, SKU is the practical key. Resolve missing, duplicate, and reused SKUs before import.
Source-platform IDs can be retained as reference data, but they should not be copied into WordPress post-ID fields. If a multilingual Matrix workflow needs a source-owned identity, use Matrix ID / External ID according to the Shirely field contract.
For categories, transform source collections into an intentional WooCommerce hierarchy. Use source_id and parent_source_id instead of guessing destination term IDs.
Reshape products and variants
WooCommerce variable products need a parent product plus variation rows. Each variation needs its own stable SKU and a parent reference.
A simplified transformed source could look like:
type,parent_sku,sku,title|en,title|pl,pa_color,regular_price
variable,,TSHIRT-100,T-Shirt,Koszulka,red|blue,
variation,TSHIRT-100,TSHIRT-RED,Red T-Shirt,Czerwona koszulka,red,29.00
variation,TSHIRT-100,TSHIRT-BLUE,Blue T-Shirt,Niebieska koszulka,blue,29.00
Do not assume source option labels map directly to existing WooCommerce global attribute taxonomies. Configure and test the destination attributes, especially when WPML/WCML translations are involved.
Add WPML language structure
Matrix Mode uses explicit suffixes such as title|en and description|pl. WPML must be active and the codes must match configured languages.
Shared values such as SKU, parent references, and base price remain single columns where the store treats them as shared. Translated content must be supplied and reviewed; the import does not translate it automatically.
If the source platform stores translations in a separate app or export, join them through a stable source key before building the Matrix. Do not align files by row number.
Validate remote images
Shirely recognizes supported product image fields including featured_image, image_url, _product_image_gallery, and product_gallery. Lists can use pipes or commas; the first successfully resolved image becomes featured and the rest form the gallery.
Test the actual exported URLs from the WordPress server. Short-lived, authenticated, blocked, or non-image responses will not make a reliable migration source. Keep image ordering intentional and plan alt text separately.
Import in stages
- Prepare and verify translated category hierarchy.
- Import a simple product sample.
- Import one variable parent and several variations.
- Check images, attributes, prices, stock, and WPML language switching.
- Re-import the sample to prove matching.
- Expand in controlled batches.
Keep a backup and avoid overlapping jobs that can write the same catalog or translation groups. For a large run, test performance with real remote images rather than a text-only sample.
Continue with importing WooCommerce products from CSV, the variable-products documentation, and the importing-data documentation.