Skip to content

A catalogue CSV

Columns are read by name, so you may reorder or omit them. Omitted columns leave stored values alone on an update; present-but-empty columns clear them. Money is integer cents. Lists inside a cell are |-separated.

slug,name,kind,description,bullet_points,tax_code,option1_name,option1_value,option2_name,option2_value,variant_sku,variant_price_cents,variant_compare_at_price_cents,variant_inventory_type,variant_inventory_quantity,variant_weight_grams,is_live
canvas-tote,Canvas Tote,physical,Heavyweight cotton canvas with a boxed base.,16 oz cotton canvas|Machine washable,,Size,Small,Colour,Natural,TOTE-S-NAT,3400,,finite,12,320,true
canvas-tote,Canvas Tote,physical,Heavyweight cotton canvas with a boxed base.,16 oz cotton canvas|Machine washable,,Size,Small,Colour,Black,TOTE-S-BLK,3400,,finite,8,320,true
canvas-tote,Canvas Tote,physical,Heavyweight cotton canvas with a boxed base.,16 oz cotton canvas|Machine washable,,Size,Large,Colour,Natural,TOTE-L-NAT,3900,,finite,5,410,true
canvas-tote,Canvas Tote,physical,Heavyweight cotton canvas with a boxed base.,16 oz cotton canvas|Machine washable,,Size,Large,Colour,Black,TOTE-L-BLK,3900,,finite,0,410,true
enamel-pin,Enamel Pin,physical,Hard enamel on brass with a rubber clutch.,,,,,,,PIN-01,1200,1500,infinite,,15,true
studio-wallpaper,Studio Wallpaper Pack,digital,Six desktop and phone wallpapers as a zip.,,txcd_10301000,,,,,WALL-01,500,,infinite,,,true
linen-apron,Linen Apron,physical,Coming soon.,,,,,,,APRON-01,6800,,finite,20,280,false
  • canvas-tote is one product with two axes and four variants. Every row repeats the product fields; the importer takes them from the first row and refuses the file if a later row disagrees. The Large / Black variant has zero stock, so it shows as sold out.
  • enamel-pin has no options and one variant, with a compare-at price above its price, so it shows a Sale badge. Compare-at is never sent to Stripe.
  • studio-wallpaper is digital: inventory must be infinite, weight is ignored, and it carries a digital-goods tax code.
  • linen-apron has is_live false, so it lands as a draft.

Products → Import CSV previews it: how many rows, creates and updates, and every error at once with its row and column. Nothing is written until you commit. An import never publishes; each live product still needs Publish before it can be bought.

By the API:

Terminal window
curl -b cookies -H "x-csrf-token: $CSRF" -H "content-type: text/csv" \
--data-binary @catalogue.csv \
https://your-store/api/admin/products/import/validate

Scripting the admin API shows where the cookie and the token come from. Catalogue CSV has the rules.