Esta versión en Español es un borrador pendiente de revisión por hablantes nativos.Leer en inglés

ES
Todas las publicaciones

Esta publicación está escrita en inglés.

Size and colour variant rows in a CSV: find and fix

A shirt in three sizes and two colours can take six rows in a product CSV. Trouble starts when the rows do not show how they belong together.

Two common layouts. Many store imports expect one of two; check your platform's import template to see which. In one, each variant row has its own SKU and the rows of a product share a group code. In the other, a parent row holds the shared details and child rows hold size, colour, price and SKU. Either way, each sellable variant usually needs its own unique SKU. (verify)

What goes wrong. Variants were copied and the SKU was not changed. A child row reuses the parent's SKU. Titles are mixed up: a row titled "Blue M" has Red in its colour column. A parent row has no price, which may be expected in one layout and an error in the other. More on shared SKUs: "Duplicate SKUs in a product CSV: find and fix".

Find it. On a copy, number the rows 1, 2, 3 in a spare column, then select the whole table and sort by group code or title, then by size and colour. In each group, check that every row has its own SKU, the title matches the size and colour columns, and no option is missing or doubled. (Not run.)

Fix it. Give each variant a unique SKU, for example product code plus size and colour: TEE-01-S-RED. If two rows are really different products, see "Duplicate SKU: what should I change?". Make titles agree with the option columns; a title shared by all variants can be right, so keep it unless your template says otherwise. (verify) Fill or leave the parent price as your template says. (Not run.)

Recheck. Sort back by the row numbers and delete that column, since some layouts need each child row directly under its parent (verify). Confirm no two rows share a SKU and the row count is right, then import one product with its variants as a test, into a draft or test area if your store has one. (Not run.)

In a local test with made-up files, the free CSV check flagged variant rows sharing one SKU, including a child reusing its parent's SKU, as duplicate SKUs. It flagged an empty parent price as a price that is not a number, and blank child titles as empty titles; if your layout leaves child titles blank on purpose, that report may not mean an error (verify). It did not flag different SKUs with identical titles, or a title whose colour disagrees with the colour column. It checks the first 20 data rows, in your browser.

Synthetic example (made up), before: rows 1-3 share SKU TEE-01 (row 1 is a parent with no price); row 3's title says Blue M but its colour column says Red
sku,title,price,size,colour
TEE-01,Basic Tee,,,
TEE-01,Basic Tee Red S,15.00,S,Red
TEE-01,Basic Tee Blue M,15.00,M,Red
TEE-01-S-BLU,Basic Tee,15.00,S,Blue
Synthetic example (made up), after: one row per variant, each with its own SKU; titles agree with the size and colour columns (a shared title such as Basic Tee can also be right; keep or drop a parent row as your import template says)
sku,title,price,size,colour
TEE-01-S-RED,Basic Tee Red S,15.00,S,Red
TEE-01-M-RED,Basic Tee Red M,15.00,M,Red
TEE-01-S-BLU,Basic Tee Blue S,15.00,S,Blue

Check your CSV on heloft.com (se abre en una pestaña nueva)

De dónde salen las cifras

  • HQ CEO chain draft, 27 September 2026; synthetic examples only, no customer file; find/fix/recheck steps not tried on a real table, marked (Not run.)
  • Free CSV check behaviour (heloft.com/m01): duplicate SKUs flagged after trimming, case compared exactly; an empty price cell reported as a price that is not a number; a blank title reported as an empty title; titles never compared with each other or with other columns; first 20 data rows (local run with synthetic files, 27 September 2026)
  • Layout paragraph (group code vs parent/child, one unique SKU per sellable variant): general practice, deliberately hedged ("many store imports", "usually", "check your platform's import template") and marked (verify); not tied to any named platform