The Matrix Approach for WooCommerce WPML Imports
A one-file-per-language import can work, but it creates a coordination question: how does the importer know that row 42 in one file belongs to row 39 in another?
The Matrix approach keeps related translations in one row shape. Shared identity and operational values appear once; translated content appears in language-suffixed columns. The relationship becomes visible in the source instead of being reconstructed after separate imports.
A product Matrix
A simple product row might look like this:
sku,title|en,title|de,title|fr,regular_price
BRAKE-001,Brake Pad,Bremsbelag,Plaquette de frein,49.99
SKU identifies the standard WooCommerce product across stores. In more complex multilingual workflows, Matrix ID / External ID can provide a source-owned identity. WordPress post IDs are local and should not be treated as portable keys.
Translated titles sit beside one shared price. Descriptions, excerpts, slugs, and SEO fields can follow the same language-suffix pattern when they genuinely differ by language.
Matrix Mode does not create the translation itself. It carries the approved values and gives Shirely enough structure to create or update the related WPML records.
A category Matrix
Translated categories also need hierarchy:
source_id,parent_source_id,name|en,name|de,name|fr
brakes,,Brakes,Bremsen,Freins
pads,brakes,Brake Pads,Bremsbeläge,Plaquettes de frein
source_id identifies the category in the source. parent_source_id points to another source row, not a destination term ID. That keeps the hierarchy portable between staging and production even when WordPress assigns different local IDs.
Import and verify the category structure before relying on it in a large product batch.
Why one Matrix is easier to review
With related languages side by side, a reviewer can filter for missing values, compare terminology, and see which data is shared. A change to one row is less likely to become an invisible mismatch between files prepared on different days.
The structure also gives a repeat import stable identity. Re-import the same small sample and confirm it updates existing products and categories rather than creating parallel translation sets.
Variable products still need parent logic
Matrix columns do not remove WooCommerce's parent/variation model. Each variation needs a unique SKU and a reliable parent reference. Attributes must resolve to the intended terms, and the product must work in every storefront language.
For global attributes, Shirely 1.3 keeps shared behavior as the default and provides an explicit WCML Product Matrix opt-in for translated global attributes. The taxonomy must already be configured as translatable in WPML/WCML.
Use a measured performance claim carefully
One owner-measured reference catalog contained about 8,500 products, about 1,040 categories, and four languages. On SEOHOST SH3 shared hosting with 3 vCPU and 6 GB RAM, the Shirely run took about three hours versus more than twelve hours for the previous workflow. External image download was the main bottleneck.
That is useful context, not a runtime promise. Hosting, plugins, source quality, remote images, batch settings, and catalog shape can change the result materially.
A dependable Matrix workflow
- Define languages and stable identifiers.
- Separate translated fields from shared fields.
- Prepare category source IDs and hierarchy.
- Import a small representative sample on staging.
- Check products, variations, categories, attributes, and language switching.
- Re-import the sample to prove matching.
- Expand in controlled batches.
Shirely 1.3 can save supported import and catalog/content export configurations as Automation slots. Prove the Matrix manually first, then use Run now and Run History. Sequence jobs that could write the same products, terms, or WPML/WCML groups, and remember that WP-Cron does not guarantee an exact start time.
For implementation details, use the WPML import overview and the Shirely documentation.