Importing products

Bring your catalog into Cascade from a spreadsheet when your store isn't on Shopify, or when you'd rather not connect it yet. Import products before anything else: reviews, orders and wishlists all attach to a product.

Import your products

  1. Export your products from your current platform as a CSV file, then arrange the columns to match the list under For developers below. Each product is one row, and each of its variants (size, color) is a row of its own.

  2. Open Products, choose Import from the actions menu, and pick your file.

    The Import products dialog with a file chosen

  3. Start the import. It runs in the background, so you can leave the page.

  4. Check Settings → Imports when it finishes. Open the job to see anything that was skipped, with the row number and the reason.

    A finished products import listing the products and variants it created

Good to know

  • Importing the same file again is safe. Cascade recognizes each product by its URL handle and updates it in place rather than adding a copy, so you can fix a few rows and upload the whole file again.
  • Send whole products. A product's variant rows are treated as its full set. A variant that Cascade already has and your file leaves out is removed.
  • A bad row never stops the import. Rows Cascade can't place are skipped and listed on the job; everything else lands. Fix the listed rows and import again.

If something isn't working

  • Variants were skipped. Their product row is missing from the file. Add it and import again.
  • "No site with the slug ..." The sites column names a store you don't have. Check the spelling under Settings → Sites, or leave the column blank to list the product on every store.
  • The whole import failed. The file isn't a CSV, its header row wasn't recognized, or it's bigger than your plan allows. See Imports and exports.

Next steps

For developers

One row per record: a row is either a product or one of its variants, and every variant row names its product in product, so rows can be in any order. Files in the older format (variant rows following their product row with no product column) still import: a variant row with a blank product belongs to the product above it.

ColumnRequiredDescription
variantNotrue on a variant row. Blank for a product row.
productNoOn a variant row, the slug of its product. Ignored on product rows.
slugYesThe product's or variant's URL handle (the Shopify handle). Importing a slug again updates it.
titleYesDisplay name.
imageUrlNoURL of the main image.
metadataNoA JSON object of your own string key/value pairs.
descriptionNoLong-form description. Product rows only.
urlNoURL of the product page on your storefront. Product rows only.
tagsNoComma-separated tag names; unknown tags are created. Product rows only.
sitesNoComma-separated site slugs the product is sold on. Blank means all sites. Product rows only.
priceCentsNoPrice in the smallest currency unit (1999 for $19.99). Variant rows only.
currencyCodeNoISO 4217 code for priceCents, such as USD. Variant rows only.
availableNotrue or false for whether the variant can be bought. Blank keeps the stored value. Variant rows.
product,variant,slug,title,priceCents,currencyCode
,,classic-tee,Classic T-Shirt,,
classic-tee,true,classic-tee-black,Black,1999,USD
classic-tee,true,classic-tee-white,White,1999,USD

Where two rows claim the same product slug and disagree, the first non-empty value in the file wins and the ignored row is reported. A blank cell means "not specified" and never overwrites what another row said. A site link the file no longer lists is removed, as is a stored variant the file omits. The same import is available as POST /import-jobs.