Practical guides for WooCommerce product data.
Export cleaner catalogs, plan safer migrations and build workflows you can reuse.
Export cleaner catalogs, plan safer migrations and build workflows you can reuse.

Short answer
Choose the destination before the file extension. Use WooCommerce CSV for the WooCommerce product importer, Shopify CSV for Shopify, standard CSV for spreadsheet work or a system with its own mapping, and JSON when code needs the catalog structure. Three of those files end in .csv, but their columns are not interchangeable.
An export can open perfectly in a spreadsheet and still be wrong for the next step. A WooCommerce importer looks for product types, parent SKUs and numbered attribute columns. Shopify expects URL handles, option columns and image rows. A standard CSV can be easier to inspect, but it does not pretend to match either platform.
We compared the four formats produced by the current ScrapeWoo exporters. Every file came from the same controlled catalog, so the differences below come from the destination format rather than a change in source data.
The fixture contained two products. One was a variable trail shoe with two sizes, two gallery images, variant SKUs, separate stock quantities and a sale price. The other was a simple canvas bag. Across the fixture, ScrapeWoo handled two products, two variants and three product images.
| Format | Result from the test | Designed for |
|---|---|---|
| WooCommerce CSV | 30 columns and 4 data rows | WooCommerce product importer |
| Shopify CSV | 34 columns and 4 data rows | Shopify product importer |
| Standard CSV | 23 columns and 4 data rows | Spreadsheet review and custom mapping |
| JSON | 2 product objects with 2 nested variants | Code, automations and internal tools |
The three CSV files happened to contain four data rows, but not the same four rows. Their headers, relationships and image handling changed with the target. Matching row counts do not make the files compatible.
A platform CSV is closer to an instruction sheet than a neutral table. Column names and repeated rows tell the destination how to rebuild the catalog.
The generated WooCommerce file contained one parent row for the variable shoe and one row for each variation. The Parent column linked both size rows to the parent SKU. Product attributes used numbered groups such as Attribute 1 name and Attribute 1 value(s).
The file also carried WooCommerce fields such as product type, publication state, catalog visibility and sale price. Its images shared one cell as comma-separated URLs. These choices follow the structure described by the WooCommerce product CSV schema.
The Shopify file used the handle ridge-trail-shoe to associate the variable product, its variants and its additional image. Each size kept its own SKU, option values, price and inventory quantity. The second gallery image occupied a separate row with the same handle.
ScrapeWoo produced 34 Shopify columns and used the encoding required by the current Shopify product CSV documentation: UTF-8 without a byte order mark and LF line endings. The WooCommerce and standard CSV files included a byte order mark and CRLF line endings for spreadsheet use.
Same extension, different contract
Renaming woocommerce-products.csv to shopify-products.csv changes nothing inside the file. The destination reads headers and row relationships, not the filename.
ScrapeWoo's standard CSV is meant to be read and mapped. It gave each product and variant its own row, then used Row type and Parent SKU to keep their relationship visible. Categories, tags, attributes and image URLs remained in readable cells.
This is the useful choice when you need to audit a catalog in Excel or Google Sheets, send a clean table to someone, remove columns, compare stock, or prepare data for a destination with its own field mapper. It is not a universal import file. The receiving system still needs to know what each column means.
The JSON export contained two product objects. The two shoe variants remained inside the parent product's variants array instead of becoming separate spreadsheet rows. Images, attributes, categories and shipping values also stayed as arrays or nested objects.
That structure is useful for a script, an internal catalog service or an automation that needs to loop through products and their variants. JSON can represent objects and arrays directly, as defined by RFC 8259. A spreadsheet user will usually find the standard CSV easier. A developer may prefer JSON because it avoids rebuilding parent-child relationships from flat rows.
JSON is not automatically accepted by WooCommerce or Shopify product importers. Choose it only when the next tool explicitly reads JSON or when you control the integration code.
| Your next action | Choose | Check before using it |
|---|---|---|
| Import or update products in WooCommerce | WooCommerce CSV | SKUs, parent variations, attributes and category paths |
| Prepare products for Shopify | Shopify CSV | Handles, options, image URLs, weights and taxonomy |
| Review or edit the catalog in a spreadsheet | Standard CSV | Row types, parent SKUs and delimiter handling |
| Feed a script, automation or internal product tool | JSON | The schema expected by your code and any fields it ignores |
If the destination provides a template or import schema, use that schema. A clean standard CSV is a good working copy, but it should not be uploaded blindly to a platform importer.
We generated and inspected all four files with the current ScrapeWoo exporters. We did not upload them into every WooCommerce setup, Shopify store or third-party catalog tool. Extensions can add fields that the core platform does not recognize, and an undocumented importer can impose its own column names.
Run a small import when the destination changes live data. If the goal is only inspection, work from a duplicate and keep the original export intact. For a Shopify destination, continue with the guide to migrating WooCommerce products to Shopify with a CSV. If you still need to collect the source products, start with extracting WooCommerce products without admin access.