Products and variants
Create a product, add its images, and use attributes to generate the variant matrix — including the one thing that trips everybody up: price lives on a variant, not on the product.
Products live under Manage → Products. The list searches by name, slug or SKU, filters by status, and sorts by newest ID, name, price, stock or creation date.
Three statuses
| Status | vi | Means |
|---|---|---|
| Draft | Nháp | Not on the storefront. Put it up by switching to Active. |
| Active | Đang bán | Shoppers see it and can buy it. |
| Archived | Lưu trữ | Taken off the storefront but kept. Restorable. |
Draft and Archived are both hidden from the storefront, but they are two different things: one needs publishing, the other needs restoring.
Creating a product
New product. The form has four tabs, in screen order: General, Variants, SEO, Organization.
General
Name — required.
Slug — generated from the name, and part of the product page's address. Editable, but changing the slug of a product that is already selling changes the address every existing link points at.
SKU, Brand, Summary (one line), Description (the full text).
Images & videos. Upload files or paste links. The first image is the primary one — drag to reorder, or press Set as primary. Videos take an upload or a YouTube/Vimeo link.
Variants — and the thing people get wrong
A product that comes in one form is filled in under Pricing & Inventory: price, compare-at price, cost, stock, barcode.
Selling the same item in several sizes, colours or capacities? Turn on This product has variants. You do not type each variant in — you declare attributes, and the matrix is generated:
- Add attribute → a name, e.g.
Size. - Type each value and press Enter:
S,M,L. - Add a second attribute if you need one, e.g.
ColourwithBlack,White. - The matrix appears with every combination — 3 sizes × 2 colours = 6 rows.
Each row has its own Price, Compare-at, Cost, Stock, SKU, Barcode, and a Hidden box for a combination you do not sell.
Price lives on a variant, not on the product. A product's displayed price is the lowest visible variant price, recomputed every time you save. Turn on variants and leave the row prices empty and the product is worth nothing — with no error, because zero is technically a valid price.
The same holds through the API: a price sent at product level is dropped. See The public API.
Two more blocks share this tab:
- Wholesale pricing — a lower per-unit price for bulk. Each tier is a minimum quantity and the per-unit price from that quantity up.
- Override money display for this product — a rate of its own or a fixed price per currency, for goods priced firmly in a foreign currency. Blank inherits the site's settings. See Currency.
Variants are one item in several forms. Selling several different items as one set is a different thing — see Combos.
SEO
The title and description search engines read for this product. See SEO.
Once a product is saved, this tab also carries Display page: which template page renders it on the storefront. The default is the site's Product template; pick another for a product that needs its own layout. If the site has no default template for the type, the card says so — "items without an explicit page will not be reachable" — and the list's View page button is disabled with the reason "No display page renders this product yet". See Pages and the canvas.
Organization
Categories — which categories this product belongs to. Note: "Changes apply when you save the product." Ticking a category and leaving without saving records nothing.
Status & Tags — the status, a Featured product switch, and tags (type and press Enter). A featured product is favoured in featured collections and on the storefront.
Bulk import and export
Export Excel downloads the whole catalogue. Import Excel creates or updates in bulk.
How it recognises an existing product, worth knowing before the first run: it matches on slug first, then on SKU. So renaming a product still updates the right row rather than creating a duplicate — as long as the slug or the SKU stays put.
Categories named in the Categories column are created automatically if
missing. Press Download template first to see every column.
After an import, the result says how many were created, how many updated, and lists each failed row with its row number.
On save, it sometimes asks about leftover files
Remove images from a product and save, and if those files are no longer used anywhere, a dialog asks whether to delete them from the media library, naming each file.
It asks rather than deleting — removing a file you still need is not undoable. See The media library.
Updated 26/09/2026