Upload products in bulk with CSV

Markdown

View as Markdown

Upload products in bulk with CSV

Loading hundreds of products one at a time is slow. The bulk CSV upload lets you add every product, variant, image, price, SKU, and stock level in a single file — perfect for migrations, catalog launches, and seasonal refreshes.

Open the bulk upload screen

  1. Sign in to your admin (bulk upload is desktop only).
  2. Go to Products.
  3. Click the dropdown next to Add product and choose Bulk Upload Products.
  4. Choose Upload CSV, then use the Download Sample CSV file link to get the template.

Fill in the CSV

Open the template in Excel, Numbers, or Google Sheets. Each row is one product or one variant. The Type column tells us whether the row is a product or a variant.

ColumnWhat it isNotes
TypeRow typeUse simple or variable for a product row, and variant for a variant row.
Product IDIdentifier used to link rowsOn a product row this is the product's own id; on a variant row it points to the parent product. Leave blank for new products and we'll generate one.
NameProduct titleRequired on product rows.
DescriptionLong description (HTML allowed)Fill on the product row.
Main Image URLPrimary product imagePublic URL (your CDN, Drive, Dropbox, etc.).
Secondary Image 1–4 URLAdditional product imagesOne public URL per column.
Video URLProduct videoOptional public URL.
Sale PriceSelling priceUse your store currency (e.g., 49.00 for $49). No symbol.
Discount PriceDiscounted (strike-through) priceOptional.
StockQuantity on handNumbers only. Defaults to 10 if left blank.
SKU IDStock-keeping unitOptional.
Weight / Weight UnitShipping weightUse your store's weight unit (e.g., kg or lb).
TagsComma-separated tagsFor filtering and theme logic.
Digital TypeDigital delivery methodOne of codes, dynamicurl, file, or service. Leave blank for physical products.
Digital Codes / Delimiter / URL / File URL / Service InfoDigital delivery detailsFill the column that matches the chosen Digital Type.

Variant columns

On variant rows (Type = variant), fill the variant-specific columns:

ColumnWhat it is
Variant IDIdentifier for the variant (required on variant rows).
Variant NameOption name, e.g., Size.
Variant ValueOption value, e.g., M.
Variant Image URLImage specific to this variant.
Variant Price / Variant Discount PricePricing for this variant.
Variant StockQuantity for this variant. Defaults to 10 if blank.
Variant SKU IDSKU for this variant.
Variant Weight / Variant Weight UnitWeight for this variant.

Rules for variants

  • The product row holds product-level info (name, description, images).
  • Each variant row uses Type = variant and points back to its parent product through the Product ID column.
  • Give each variant row a unique Variant ID.

Upload the file

  1. Save the spreadsheet as CSV (UTF-8).
  2. On the import screen, choose Upload CSV and pick (or drag in) your file.
  3. Click Import.

You'll be taken to your product list once the import finishes.

FAQ

How many products can I upload?

Your catalog size depends on your plan: up to 100 products on Starter, 1,000 on Gold, and 5,000 on Platinum. If an import would push you past your plan limit, the extra rows are rejected — upgrade your plan to add more.

Can I update existing products with the same CSV?

Yes. If a row's Product ID matches a product that already exists in your store, that product is updated rather than created. Rows without a matching id create new products.

Can I import digital products via CSV?

Yes. Set Digital Type to codes, dynamicurl, file, or service and fill the matching delivery column (codes list, dynamic URL, file URL, or service info).

What if my CSV has special characters?

Save as UTF-8. Excel sometimes defaults to Windows-1252 which breaks accented characters. In Google Sheets, "Download as CSV" is already UTF-8.

How do I set stock across multiple warehouses?

The CSV imports a single stock quantity per product or variant. To split that stock across warehouses, open the product after import and set the per-warehouse quantities from the product page.

Was this article helpful?