Everything moves, both ways
Import and export products, categories, terms, tags, posts, pages, custom post types, orders, customers, coupons and reviews. Work from CSV or Google Sheets, with WPML or without it, then save supported workflows as Automation slots.
Matrix Mode
Every language of a product on one row. The default-language item is created first, then each translation is created and linked through WPML.
Category Matrix
Import a category tree across every language from one file. Parent-child relationships and WPML links are created in the same pass.
Store Data
Move orders, customers, users, coupons and reviews through dedicated WooCommerce-aware import and export paths.
Automation
Save import and export slots, use Run now, schedule hourly, twice-daily or daily runs with WP-Cron, and review the result in Run History.
One row, every language
Put the language after a pipe in the column name. Shirely creates the default-language product, then creates and links each translation through WPML — in CSV or Google Sheets.
Two languages or twenty, the workflow does not change.
products.csv
sku,type,name|en,name|pl,attribute:color,price TEE-01,variable,T-Shirt,Koszulka,, TEE-01-R,variation,,,Red,29.00 TEE-01-B,variation,,,Blue,29.00
Released in 1.3.0
| Area | What Shirely handles | Boundary |
|---|---|---|
| Catalog | Products, product variations, categories, terms and tags | WPML Matrix Mode is optional |
| Content | Posts, pages and custom post types | Works with CSV or Google Sheets |
| Store data | Orders, customers/users and reviews | Built for WooCommerce data workflows |
| Coupons | WooCommerce-native coupon import and export | Review restrictions, dates and identifiers before a production import |
| Automation | Saved import/export slots, Run now, WP-Cron schedules and Run History | Scheduled export publishes supported catalog data to Google Sheets; use system cron + WP-CLI when timing must be reliable |
| Cross-store moves | Catalog provenance carried by exports | Stable natural keys and a staged test remain part of the migration workflow |
| SEO and custom fields | Yoast, Rank Math and other post meta through meta_ columns | Simple ACF fields are just post meta; Shirely does not include ACF-specific field-type handling |
Two ways out
| Standard Export | Matrix Export | |
|---|---|---|
| Shape | One row per item, flat | One row per translation group |
| Languages | One file per language | All languages in one file |
| Content | Any post type or taxonomy, including custom ones | Products, posts and pages, taxonomy terms |
| Format | CSV | CSV |
| Round trip | Re-importable | Re-importable and matched to existing records |
| Filters | Status, category, date range | Status, category, date range |
Matrix Export
All WPML translations grouped by TRID. One row per translation group.
Product Matrix Export
Export WooCommerce products with all WPML translations. One row per translation group.
Export Matrix CSVPosts & Pages Matrix Export
Export posts, pages and custom post types with all WPML translations.
Export Matrix CSVTaxonomy Matrix Export
Export taxonomy terms with all WPML translations. One row per translation group.
Export Matrix CSVStandard Export
Traditional format. One row per item.
Generated files stay listed — download again, or push straight to a sheet.
Two ways out of the same screen. Matrix Export groups every WPML translation by TRID — one row per translation group. Standard Export is the flat one row per item, for any post type or taxonomy, with filters.
A repeat import should update the catalog you have, not create another one.
Safe re-imports
Use post ID, SKU, an external ID column, or the WPML translation group to match an import row to an existing record. This lets you update an existing catalog without creating duplicates.
Batches and resume
Imports run in adjustable batches. If a run is interrupted, resume it instead of starting again, with row-level errors recorded in the log.
Variations, attributes and all
Parents and variations live in the same file. Global pa_* attributes and per-product attributes are handled separately, with price, stock and SKU on each variation.
Tested against
| WordPress | 6.0 – 7.0 |
| WooCommerce | 8.0+, tested up to 10.7 |
| PHP | 8.0+ |
| WPML | Matrix Mode, TRID linking, taxonomy hierarchy handling — optional, not required |
| HPOS | High-Performance Order Storage, and the legacy mode too |
| Matching | Post ID, SKU, Matrix ID / External ID, or WPML translation group |
| Input | UTF-8 CSV up to 50 MB per upload; larger catalogs in parts, or dropped on the server by FTP |