Variants
One product sold in several forms — a shirt in S, M and L, a mug in three colours. Each combination gets its own price, stock and SKU.
Attributes come first
A variant is built from attributes: reusable option sets like Size or Colour. Create them once and use them on every product.
Sidebar → Products → Attributes. Each attribute has:
- Name — the internal key, lowercase, like
color - Label — what customers see, like
Colour - Type — how the options are presented
- Options — the values themselves, added one at a time and reorderable by dragging
Drag the options into the order you want customers to see. Sizes read naturally as S, M, L, XL — alphabetical order would give you L, M, S, XL.
Colour attributes accept a hex code or a colour name, so the storefront can show a swatch rather than a word.
Building variants on a product
In the product form, the variants section works in two steps.
1. Pick an attribute and its values
Choose the attribute, then tick which of its values this product comes in. A shirt might use Size with S, M and L only, even though the attribute also holds XL and XXL.
2. Generate the combinations
Generate SKUs creates a row for every combination. With Size (3 values) and Colour (2 values) you get six rows — each with its own Price, Stock, Disc. Price and SKU.
Adding a second attribute afterwards cross-joins it with what you already have, so the existing rows are kept and multiplied rather than thrown away.
Filling in the numbers
Typing a price into six rows is tedious, so use Apply to All SKUs: enter a price, discount price, stock or SKU prefix once, press apply, and every row takes it. Then correct the handful that differ — the XL that costs more, the colour you have less of.
On an existing product the same bar reads Apply to All Active SKUs, and also covers Purchase Price.
Each variant row can be set Inactive, which keeps its history but takes it off the storefront. Use this for a size you have stopped stocking rather than deleting it.
The rule that catches everyone
When a product has variants, the product-level price is not used. The price comes from the variant the customer picks.
So leave the product’s own Price field blank and put the real prices on the variants. A product showing ৳0 on your storefront is nearly always this: prices were entered at product level on a product that has variants, or one variant was left at zero.
Stock works the same way — each variant has its own count, and the product is out of stock only when every variant is.
Images per variant
Variant values can carry their own image, so choosing “Red” shows the red photo. Set it against the attribute value when you add it.
For a product sold only in variants, the first variant image is used as the product’s main picture if you have not set one.
Common problems
“My product shows ৳0.” Prices are on the product rather than the variants, or a variant was saved with an empty price. Check every row.
“Publish is refused and I cannot see why.” A variant combination has no price. The form scrolls to it.
“I added a size and lost my prices.” Adding an attribute cross-joins with what exists — the old rows keep their prices and the new combinations start empty. Fill the new ones in.
“A variant still shows on my storefront after I stopped selling it.” Set it Inactive rather than leaving it active with zero stock.
“The sizes are in the wrong order.” Reorder the options on the attribute itself, in Products → Attributes.