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
- Sign in to your admin (bulk upload is desktop only).
- Go to Products.
- Click the dropdown next to Add product and choose Bulk Upload Products.
- 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.
| Column | What it is | Notes |
|---|---|---|
| Type | Row type | Use simple or variable for a product row, and variant for a variant row. |
| Product ID | Identifier used to link rows | On 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. |
| Name | Product title | Required on product rows. |
| Description | Long description (HTML allowed) | Fill on the product row. |
| Main Image URL | Primary product image | Public URL (your CDN, Drive, Dropbox, etc.). |
| Secondary Image 1–4 URL | Additional product images | One public URL per column. |
| Video URL | Product video | Optional public URL. |
| Sale Price | Selling price | Use your store currency (e.g., 49.00 for $49). No symbol. |
| Discount Price | Discounted (strike-through) price | Optional. |
| Stock | Quantity on hand | Numbers only. Defaults to 10 if left blank. |
| SKU ID | Stock-keeping unit | Optional. |
| Weight / Weight Unit | Shipping weight | Use your store's weight unit (e.g., kg or lb). |
| Tags | Comma-separated tags | For filtering and theme logic. |
| Digital Type | Digital delivery method | One of codes, dynamicurl, file, or service. Leave blank for physical products. |
| Digital Codes / Delimiter / URL / File URL / Service Info | Digital delivery details | Fill the column that matches the chosen Digital Type. |
Variant columns
On variant rows (Type = variant), fill the variant-specific columns:
| Column | What it is |
|---|---|
| Variant ID | Identifier for the variant (required on variant rows). |
| Variant Name | Option name, e.g., Size. |
| Variant Value | Option value, e.g., M. |
| Variant Image URL | Image specific to this variant. |
| Variant Price / Variant Discount Price | Pricing for this variant. |
| Variant Stock | Quantity for this variant. Defaults to 10 if blank. |
| Variant SKU ID | SKU for this variant. |
| Variant Weight / Variant Weight Unit | Weight for this variant. |
Rules for variants
- The product row holds product-level info (name, description, images).
- Each variant row uses
Type = variantand points back to its parent product through the Product ID column. - Give each variant row a unique Variant ID.
Upload the file
- Save the spreadsheet as CSV (UTF-8).
- On the import screen, choose Upload CSV and pick (or drag in) your file.
- 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.