Woo CSV Repair — CSV check and automatic fixes

Demonstration report generated from a synthetic CSV (fictional products). It is not customer data.
File: demo-catalog.csv · SHA-256: b1d45792d7f4de760d658f2e7d462d8a4440afa5f8caebeed9ea327bf43fb2de
Delimiter: , · UTF-8 BOM: no · Generated: 2026-09-30T07:24:15.361Z · Tool version 0.2.0, rules checked against WooCommerce 11.1.2
Some problems need your decision before import
57
CSV records
57
Product records
6
Parents (variable)
47
Variations
4
Other products
12
Errors found
8
Errors fixed
4
Errors remaining
0
Warnings after fixes
0
Unsupported scenarios

"Errors found" counts errors in the original file. "Errors fixed" and "Errors remaining" come from the re-check of the corrected data for the whole file. The free sample CSV contains only the selected groups (50 of 57 product records); it is not the complete corrected file. These counters refer to the whole processed file.

Next steps

  1. Some problems remain after the automatic fixes. They need a decision from you: see "After automatic fixes" below for the code, record, SKU and recommended action.
  2. The free sample covers only part of the catalogue (50 of 57 product records). It is not your complete corrected file.
  3. Full processing (manual, on request) is possible only after we confirm by message that this file can be processed. Problems that need your decision are not fixed automatically.
  4. Before importing everything, test a few products on a staging copy of your store.

Supported scenario: Creating new products with the built-in WooCommerce CSV importer (Products → Import, without "Update existing products"). Parents (variable) and variations (variation) in one file, linked by SKU in the Parent column, local attributes. Passing these checks does not guarantee a successful import into every store.

Free sample

Free sample: 7 product groups, 50 of 57 product records. This is not your complete catalogue.

The sample contains only whole product groups (a parent with all of its variations, or a standalone product) that pass all checks after the automatic fixes. It was re-checked before being offered.

Automatic fixes

Value changes: 2. Moved records: 7. These are the changes full processing applies to the whole file.

Value changes

Original recordSKUFieldBeforeAfterReason
11000210-MParent·000210000210Leading/trailing spaces in Parent; without them the value unambiguously points to the parent in record #9.
12000210-LParent000210·000210Leading/trailing spaces in Parent; without them the value unambiguously points to the parent in record #9.

Reordering

Original recordSKUOld positionNew positionReason
8TEE-10082Position shifted because variations were moved; relative order is preserved.
2TEE-100-S-W23Variation moved directly after its parent (original record #8).
3TEE-100-S-B34Variation moved directly after its parent (original record #8).
4TEE-100-M-W45Variation moved directly after its parent (original record #8).
5TEE-100-M-B56Variation moved directly after its parent (original record #8).
6TEE-100-L-W67Variation moved directly after its parent (original record #8).
7TEE-100-L-B78Variation moved directly after its parent (original record #8).

After automatic fixes (re-check)

Blocking problems remain after automatic fixes. After automatic fixes, the re-check still found errors that need a manual decision: 4. A fixed file is not produced, so an incomplete or incorrect catalogue cannot be mistaken for a finished one.

Record numbers below refer to the corrected order; "Original record" is the number in your original file.

LevelCodeRecordOriginal recordFile linesSKUFieldExplanationRecommended action
Error ATTRIBUTE_VALUE_NOT_IN_PARENT 2121 25 JKT-9-L Attribute 1 value(s) The value "Large" of attribute "Size" is not offered by the parent (record #18: "S, M, L"). Shoppers could not select this variation. Change the value to one of the parent's values or add it to the parent's list. The tool never treats different spellings (such as "L" and "Large") as the same value.
Error PARENT_NOT_FOUND 2222 26 BAG-1-BLK Parent No parent with SKU "BAG-1" exists in the file. WooCommerce would create an empty placeholder product and attach the variation to it instead of the intended product. Add the parent product to the file or correct the SKU in Parent. If the parent already exists in your store, that is an update scenario, which is not supported.
Error SKU_DUPLICATE 5555 59 NOTE-1 SKU The SKU "NOTE-1" is repeated (also records #56). WooCommerce creates only the first row and skips the others. Decide manually: either these are different products (they need different SKUs) or a duplicate (remove the extra row). The tool never deletes or merges products.
Error SKU_DUPLICATE 5656 60 NOTE-1 SKU The SKU "NOTE-1" is repeated (also records #55). WooCommerce creates only the first row and skips the others. Decide manually: either these are different products (they need different SKUs) or a duplicate (remove the extra row). The tool never deletes or merges products.
Info UNKNOWN_COLUMN —— — — Supplier note The column "Supplier note" is not part of the built-in schema, so WooCommerce does not import it by default. Its values are kept unchanged. If it is a custom field, rename the column to "meta:your_key" or choose "Import as meta data" on the column mapping screen.

Problems in the original file

LevelCodeRecordFile linesSKUFieldExplanationRecommended action
Error VARIATION_BEFORE_PARENT
auto-fixed in processed result
2 3 TEE-100-S-W Parent The variation (record #2) comes before its parent (record #8). WooCommerce creates a temporary placeholder parent without attributes, and the variation's attributes are lost. Fixed automatically: rows are reordered so the parent comes before its variations.
Error VARIATION_BEFORE_PARENT
auto-fixed in processed result
3 4 TEE-100-S-B Parent The variation (record #3) comes before its parent (record #8). WooCommerce creates a temporary placeholder parent without attributes, and the variation's attributes are lost. Fixed automatically: rows are reordered so the parent comes before its variations.
Error VARIATION_BEFORE_PARENT
auto-fixed in processed result
4 5 TEE-100-M-W Parent The variation (record #4) comes before its parent (record #8). WooCommerce creates a temporary placeholder parent without attributes, and the variation's attributes are lost. Fixed automatically: rows are reordered so the parent comes before its variations.
Error VARIATION_BEFORE_PARENT
auto-fixed in processed result
5 6 TEE-100-M-B Parent The variation (record #5) comes before its parent (record #8). WooCommerce creates a temporary placeholder parent without attributes, and the variation's attributes are lost. Fixed automatically: rows are reordered so the parent comes before its variations.
Error VARIATION_BEFORE_PARENT
auto-fixed in processed result
6 7 TEE-100-L-W Parent The variation (record #6) comes before its parent (record #8). WooCommerce creates a temporary placeholder parent without attributes, and the variation's attributes are lost. Fixed automatically: rows are reordered so the parent comes before its variations.
Error VARIATION_BEFORE_PARENT
auto-fixed in processed result
7 8 TEE-100-L-B Parent The variation (record #7) comes before its parent (record #8). WooCommerce creates a temporary placeholder parent without attributes, and the variation's attributes are lost. Fixed automatically: rows are reordered so the parent comes before its variations.
Error PARENT_WHITESPACE
auto-fixed in processed result
11 15 000210-M Parent Parent " 000210" has leading or trailing spaces and does not exactly match any SKU. Without the spaces it unambiguously points to record #9 ("000210"). Fixed automatically: the spaces are removed from Parent; the parent SKU is not changed.
Error PARENT_WHITESPACE
auto-fixed in processed result
12 16 000210-L Parent Parent "000210 " has leading or trailing spaces and does not exactly match any SKU. Without the spaces it unambiguously points to record #9 ("000210"). Fixed automatically: the spaces are removed from Parent; the parent SKU is not changed.
Error ATTRIBUTE_VALUE_NOT_IN_PARENT 21 25 JKT-9-L Attribute 1 value(s) The value "Large" of attribute "Size" is not offered by the parent (record #18: "S, M, L"). Shoppers could not select this variation. Change the value to one of the parent's values or add it to the parent's list. The tool never treats different spellings (such as "L" and "Large") as the same value.
Error PARENT_NOT_FOUND 22 26 BAG-1-BLK Parent No parent with SKU "BAG-1" exists in the file. WooCommerce would create an empty placeholder product and attach the variation to it instead of the intended product. Add the parent product to the file or correct the SKU in Parent. If the parent already exists in your store, that is an update scenario, which is not supported.
Error SKU_DUPLICATE 55 59 NOTE-1 SKU The SKU "NOTE-1" is repeated (also records #56). WooCommerce creates only the first row and skips the others. Decide manually: either these are different products (they need different SKUs) or a duplicate (remove the extra row). The tool never deletes or merges products.
Error SKU_DUPLICATE 56 60 NOTE-1 SKU The SKU "NOTE-1" is repeated (also records #55). WooCommerce creates only the first row and skips the others. Decide manually: either these are different products (they need different SKUs) or a duplicate (remove the extra row). The tool never deletes or merges products.
Info UNKNOWN_COLUMN — — — Supplier note The column "Supplier note" is not part of the built-in schema, so WooCommerce does not import it by default. Its values are kept unchanged. If it is a custom field, rename the column to "meta:your_key" or choose "Import as meta data" on the column mapping screen.

What cannot be checked without your store