Most multilingual WooCommerce import problems come from a small set of causes: missing WPML relationships, unstable identifiers, category hierarchy errors, wrong language context, or variation data that is not tied back to the right parent product.
1. Products import but translations are not linked
WPML needs translation rows for each language version. In Shirely, use Matrix Mode with language-suffixed columns and verify the language switcher after a small staging import.
2. Re-imports create duplicates
Use stable identifiers. For products, prefer SKU or Matrix ID / External ID. Use WordPress product IDs only for files exported from the same store, because IDs are local to one WordPress database.
3. Category translations do not connect
Use source_id and parent_source_id for categories. Slugs and names can change across languages; source identifiers give the import a stable structure for translated hierarchy.
4. Content lands in the wrong language
Before import, confirm that WPML is active and that the language codes in your CSV match the languages configured in WPML. In Matrix Mode, headers such as title|en and title|pl are part of the contract.
5. Variable products lose structure
Keep parent SKUs and variation SKUs stable. Test one variable product first and inspect both the default-language and translated product pages before running a large file.
What to verify before production
- Preview counts look plausible.
- Products and categories use stable identifiers.
- WPML language switcher points to the expected translated URLs.
- Product rows are treated as processed rows, not Smart Sync skipped rows.
Related: WPML icl_translations table explained.