Community owners · Commerce & products
Prepare products in Excel and import them into Commerce with CSV
Create or update simple products and size, colour or style variants from one reviewed spreadsheet.
Use Admin → Commerce → Import products (/app/your-slug/admin/store/import) to add or update simple and variable products in bulk.
Start with the template
Download the guided Excel template from the import page and keep its headings intact. Its dropdowns suggest category slugs, option names and active option values already used by your community. These are suggestions, not a closed list: you can type a new valid category or variation when the product needs one.
Complete the Products sheet, then use your spreadsheet application's Save As or Download command to export that sheet as CSV UTF-8. Upload the resulting .csv file for review. JollyBee does not accept or parse uploaded Excel workbooks. If you prefer, start with the plain CSV fallback instead; existing CSV import files remain supported.
An import may contain up to 500 data rows and the uploaded CSV file may be no larger than 1MB. Every row needs:
- slug — the stable product identifier, using lowercase letters, numbers and dashes;
- name;
- price — decimal currency such as
149.95, without a currency symbol or thousands separator; - track_stock — explicitly
yesorno; and - status —
active,draftorarchived.
To create a missing category, provide both categoryslug and categoryname. Optional parent fields include member price, cost, low-stock threshold, barcode, image URL, loyalty eligibility and sort order.
Simple products
A simple product occupies one row. Set product_type to simple, or leave it blank when every option and variant column is blank.
For tracked stock, provide stockquantity. For unlimited stock, use trackstock=no and leave stockquantity and lowstock_threshold blank.
Products with sizes, colours or other options
Do not add a separate parent-only row. Add one row for every sellable option combination. Repeat the parent columns from slug through producttype exactly on every row and set producttype=variable on each one. JollyBee groups the rows by slug and creates the parent automatically.
Set product_type=variable and use one row per sellable option combination. For example, a shirt offered in Small or Large and Blue or Red uses four rows. Keep those rows together and repeat every parent field exactly, including product slug, name, prices, category, status and stock-tracking choice.
Each variable row needs one to three complete, ordered option pairs:
option1nameandoption1value, for exampleSizeandSmall;- optionally
option2nameandoption2value, for exampleColourandBlue; and - optionally
option3nameandoption3value.
Use the same option names in the same order on every row for that product. JollyBee composes the variant name from the values, such as Small / Blue. Combinations are compared without case or surrounding spaces, so Small / Blue cannot appear twice.
Leave the parent stockquantity, lowstockthreshold and barcode blank on variable products. Put those values in the corresponding variant... columns instead. When trackstock=yes, every variant needs variantstock_quantity. When it is no, leave both variant stock columns blank.
The following variant values are optional:
variant_sku— unique within that product when compared without case or surrounding spaces;variantprice,variantmemberpriceandvariantcost— blank values inherit the applicable parent value;variantlowstockthreshold,variantbarcodeandvariantimageurl;variant_status—active,archivedor blank (blank defaults to active); andvariantsortorder.
Barcodes must be unique across all products and variants in the community.
Preview and update safely
Choose what to do when a product slug already exists:
- Skip existing creates only new product slugs and leaves an existing product and all its variants unchanged.
- Update matching slugs updates supported parent fields. For a variable product, JollyBee matches each CSV row to an existing variant by its ordered, normalised option combination. Matching combinations update and new combinations are created. Existing variants omitted from the CSV remain unchanged. Include an existing combination with
variant_status=archivedwhen you intend to archive it.
CSV import will not convert a simple product to a variable product, convert a variable product to simple, or change an existing variable product's option names or order. Make those structural changes on the individual product page.
An option value is part of the variant's identity. Changing Blue to Navy in the CSV creates a new combination; it does not rename the existing one. To replace a value safely, include the old combination with variant_status=archived and add the new combination as a separate row. Otherwise the omitted old combination remains unchanged.
Select Preview products and inspect every product and nested variant action. The import button is tied to that exact signed preview for 15 minutes and a preview can be used only once. If another admin changes a reviewed product, category, barcode or any child variant, JollyBee stops the import and asks for a new preview.
Categories, products and variants are saved in one transaction. If any row fails, none of that spreadsheet's changes are retained. The importer creates no orders, payments or suppliers and sends no messages.
A cautious first import
Import new parent products as draft, inspect their variants, prices, stock, images and storefront selectors in Commerce, and only then publish them. Keep the same product slug, option names and option order in later files. If JollyBee says the catalog changed, preview the current file again instead of retrying the old approval.