Managing a WooCommerce B2B Catalog in Multiple Languages
B2B catalogs change in batches. A supplier revises dimensions, a product team replaces datasheets, sales updates a price list, and translators need to adjust terminology across several hundred items.
Editing every product screen can work for occasional exceptions. It becomes difficult to review when the same structured change must reach many products and languages at once.
Treat the catalog as governed data
Begin by assigning ownership:
- product operations owns SKU and core specifications;
- commercial owners approve prices and availability;
- language owners approve translated copy;
- technical owners review claims and units;
- the WordPress operator controls the import and verifies the result.
A spreadsheet is not governance by itself. It becomes useful when columns have clear meaning, edits are reviewed, and the team knows which file or Sheet is authoritative.
Separate shared facts from translated content
A Matrix row can keep those responsibilities visible:
sku,title|en,title|de,description|en,description|de,regular_price
DRILL-100,Power Drill,Bohrmaschine,18V industrial drill,18-V-Industriebohrmaschine,149.99
SKU and base price are shared values in this example. Titles and descriptions are language-specific. Technical codes, dimensions, and stock are often shared, while explanatory copy may need translation.
Do not copy a field into every language column merely because the Sheet has space. Decide whether the store treats it as translated or operational data.
Use stable keys for every repeat batch
For normal cross-store products, match by SKU. Matrix ID / External ID can identify records in a multilingual Matrix workflow. WordPress post IDs are local and should not anchor data from another installation.
Product rows are processed on every import. Smart Sync's unchanged-row skip applies to posts, pages, and custom post types with a mapped Record ID, not WooCommerce products. A repeatable B2B price or specification update therefore depends on correct product identity and narrow mapping.
Keep price changes narrow
When the task is price, import SKU plus the intended price fields. Avoid mapping descriptions, categories, images, or stock from an older master export.
Check price display in every storefront language and any configured currency, tax, or pricing rules. Shirely updates the mapped WooCommerce field; it does not replace those other pricing systems.
For contract-specific or customer-specific pricing, verify the exact extension and data model on staging rather than assuming a base-price CSV covers it.
Let Google Sheets support review
A private Google Sheet can give product, sales, and language owners a shared working table. Private import and every export require a Service Account; a public published Sheet can be imported without credentials.
Shirely 1.3 can save supported import and catalog/content export jobs as Automation slots. Run now and Run History make the job observable. Each direction remains a separate, traceable run.
Schedule only after a manual sample is correct. WP-Cron does not guarantee exact timing, and jobs that can write the same products or WPML/WCML groups should run sequentially. System cron with WP-CLI is better suited to a predictable maintenance window.
Build a B2B verification sample
Include:
- a simple and variable product;
- a product with long technical copy;
- translated categories;
- a record with an existing SKU;
- a new record;
- a deliberate warning or missing value;
- the price and unit patterns your buyers actually see.
After import, check admin values, product pages, language switching, variation selectors, downloads, and the buyer-facing price context. Preserve the reviewed source and result counts.
Shirely handles the data pipeline. It does not decide account permissions, sales terms, market compliance, or translation approval.
For workflow choices, compare manual editing with CSV import and review the guide to bulk price updates.