Prepare a WooCommerce to Shopify product CSV
Choose the migration route and product scope
Start with a native WooCommerce CSV export and keep a backup. This browser-local Beta prepares new Shopify product drafts. For a broader migration, review Shopify’s official migration guide and the early-access Store Migration app for eligible stores.
Beta: native WooCommerce English CSV headers, up to 100 ordinary simple products and 15 MiB. Variable, variation, grouped, external, virtual and downloadable products block the entire export. CSV Import Suite and localized headers are not supported.
Variation Beta: simple products and variable parents with 1–3 named options and explicit variation rows in the same native English CSV. At most 100 products, 100 variations per variable product, 10,000 source rows and 15 MiB. Wildcards, missing parents and unsupported types block the whole output. No combinations are invented.
Try the public examples
These files select unchanged records from the official WooCommerce sample retrieved on 7 October 2026. They contain demonstration products; use them to learn the workflow, not to migrate your store.
Default mode: 12 simple products
Keep explicit variation mode off. The simple example has 12 ordinary simple products and produces 12 drafts. The Hoodie with Logo row uses woo-46, SKU woo-hoodie-with-logo and Regular price 45. Unsupported types are excluded only from this documented sample; an uploaded file with invalid or unsupported rows is blocked as a whole.
Download official simple-product exampleOpt-in mode: one parent and four variations
Enable explicit variable / variation mode. The Hoodie example contains 5 source records: one parent and four actual variations. It produces one woo-45 draft with the four Color / Logo combinations below, each priced at 45. The parent is not an extra variant, and the missing Red / Yes and Green / Yes combinations are not created.
Download official explicit-variation example| SKU | Color | Logo | Regular price → Price |
|---|---|---|---|
woo-hoodie-red | Red | No | 45 |
woo-hoodie-green | Green | No | 45 |
woo-hoodie-blue | Blue | No | 45 |
woo-hoodie-blue-logo | Blue | Yes | 45 |
Blocked example: wildcard variation values
The separate V-Neck example contains 4 records with blank child Size values. In explicit variation mode all 4 rows are blocked and no output is generated. Supply the actual supported variation data; do not delete rows or invent combinations to bypass the problem.
Download official wildcard failure exampleConvert, review and check the drafts
- Download one example and choose it in the converter. For your own task, use a native English-header UTF-8 CSV. Choose the variation mode explicitly when needed; it resets the previous result.
- Run the local preview. Check the target handles, child SKUs, option combinations, Regular price values, image URLs and every omitted field. The explicit example should show 1 product and 4 actual variants; the simple example should show 12 source rows.
- Review the new-product, same-currency and draft conditions, and the additional variation confirmation when shown. Confirm any zero prices separately, then generate and download the Shopify draft CSV and conversion report.
- Use Check drafts with Validator to pass the generated file to Validator in the same browser session. No second upload is needed. Review the results in the new-product scenario; the public success examples have no blocker, warning or review findings.
Review what is mapped and what is omitted
Name becomes Title, ID becomes a new woo-ID handle, and Regular price becomes base Price. There is no currency conversion or preservation of WooCommerce URLs. Variation output uses parent title/description, child SKUs/prices and exact option values. Stock, weight, tax, Sale price, Categories, Tags, Short description, plugin fields and defaults are omitted; parent SKU/price and child Name/Description are also omitted in variation mode. The report counts nonempty unmapped cells, including partial mappings. Shopify defaults need review before publishing.
Images must be comma-separated absolute HTTP(S) URLs without credentials or escaped commas. Extra images become continuation rows. URLs are not fetched, so availability and Shopify acceptance still need review.
Description is copied verbatim, including HTML. Short description is omitted. Preview text is displayed as text; review HTML and any WooCommerce links in the destination store. Catalog cells are preserved exactly; open CSV files as text if spreadsheet formulas are a concern.
What to verify in a destination store
When a test store is available, check destination handle and SKU conflicts, trial-import a small batch with overwrite off, and verify draft status, channel availability, variants, image associations, descriptions, currency, stock, tax and shipping. Without an admin, you can complete conversion, downloads and local validation; store acceptance remains unverified. A clean Validator report does not prove that images can be fetched or that a Shopify import will succeed.
Check a CSV