Variants let one product cover multiple options — colors, sizes, capacities, brands, models. Customers see a clean picker on the product page; you keep one product record instead of a duplicate per colour. This page is the deepest reference in the Selling section because variants quietly drive most of the dashboard work for fashion, electronics and digital products.
Video
The vocabulary
Concept | What it is |
Variant group | One dimension of choice — |
Variant option | One value inside a group — |
Combination | A specific cross-pair — |
Price pill | The small pill on an option showing its price adjustment relative to the base price. |
A product with 3 colours × 4 sizes has up to 12 combinations. You don't have to use combinations — most products track stock at the option level or at the product level instead (see §Stock modes).
The four variant types
The type is chosen once per group — every option inside that group renders the same way:
Type | What customers see | Use when |
Color | A filled circle in the option's hex colour (or a large image card, see Show as card) | The colour is the whole story (Red, Blue, Black). |
Text | A text pill ( | Sizes, materials, capacities, generic options. |
Image-text | A card with a thumbnail and the option name underneath | Brand logos, model thumbs, anywhere a tiny image clarifies the text. |
Multiple choice | The same image-text cards, but the shopper can toggle several options on at once | Optional extras — engraving, accessories, add-on services. |
Two things that only apply to Multiple choice (also called selectable) groups: they are always optional, and they never appear in the combination-stock matrix.
The image-text type is newer than color and text. Use it whenever you have more than ~5 text options — the thumbnail prevents customers from misreading similar names ("iPhone 14 Pro" vs "iPhone 14 Pro Max"). When the option is bound to a product image, clicking it can scroll the product gallery to that image (see §Click-to-gallery).
Creating a variant group
Go to Dashboard → Products at /dashboard/products, then either:
Click Add product at
/dashboard/products/create, orOpen an existing product to edit at
/dashboard/products/:id/edit.
Scroll to the Variants card, then:
Click Add variant group.
Type a group name (e.g.
Color,Size,Brand).Pick the type (
Color,Text,Image-textorMultiple choice).Click Add option for each value.
Both groups and options can be drag-reordered, and the storefront renders them in that order. Dragging requires a desktop-sized screen with a mouse — there is no touch reorder, and the drag handles are not rendered on small screens. Reordering while combination stock is on regenerates the matrix.
Adding options
Each option carries:
Field | What it does |
Name | The label customers see ( |
Color code | Hex value, only for |
Linked image | Available on |
Show as card | Colour groups only. Renders that colour as a large image card instead of a circle — see below. |
Price adjustment | A delta on top of the base price. Can be positive ( |
Stock | Stock for that option. Only visible when Track variant stock is on and combination stock is off. |
SKU | Per-option SKU, shown alongside the option stock field under the same condition. |
The price pill — it's a delta, not the absolute price
This is the most common mistake when setting up variants:
If your base price is 2 500 DZD and the XL costs 2 700 DZD, the price adjustment for XL is +200, not 2700.
The pill shows the adjustment, never the total: +200 renders as a green +200 DZD pill, -150 as a red -150 DZD pill, and an option whose adjustment is 0 shows no pill at all. The product's running total recalculates as soon as the shopper picks an option.
The one surface that shows each option's full price is the Digital Product Variants addon.
The "Show as card" toggle {#show-as-card}
Show as card appears only on Colour groups. Turn it on to render that colour as a large image card instead of a 40 px circle — useful for fashion, jewellery and brand selectors. It needs a linked product image; without one the option falls back to the plain circle.
You never need it elsewhere: image-text and Multiple-choice options are always cards, and text options are always pills.
Required and optional groups
Every Colour, Text and Image-text group is mandatory — the shopper must pick one option from each, and the server rejects an order that arrives without a pick (a guard that mainly catches browser tabs left open before you added the group). There is no per-group "required" switch.
For a genuinely optional group — engraving, add-on accessories — create it with the Multiple choice type. Those are always optional and let the shopper tick several options at once.
Click → gallery scroll {#click--gallery-scroll}
When an option is bound to a product image, clicking it on the storefront can move the gallery to that image:
On the carousel gallery the slide always changes.
On the stacked gallery the scroll only happens on screens 768 px and wider. On phones the page deliberately stays put, because the gallery sits above the variants and scrolling would pull the shopper away from the order form.
Once a product exists, re-opening it and linking an image creates a stable link to that photo, so later reordering or replacing pictures does not break which thumbnail the option shows. Variants configured on the initial Create screen can only remember the image's position — reorder your photos afterwards and the option may end up pointing at a different one. The link becomes stable the first time you save from the edit page.
The gallery scroll itself always jumps to the image's current position in the gallery.
Stock modes {#stock-modes}
There are three stock modes. They are mutually exclusive and chosen explicitly with the switches in the Pricing & stock card — there is no fallback from one to another:
Mode | How to enable | What you get |
Product stock | Both variant switches off | A single quantity on the product. |
Option stock | Track variant stock on | A quantity and SKU per option. Product-level tracking switches off automatically. |
Combination stock | Track combination stock on as well | A quantity and SKU per |
The storefront still shows a single product-level total — it sums the option or combination counts for display — but the count that actually gates a sale is the one from the mode you enabled.
Once the shopper picks a variant, the quantity stepper is capped by that option's (or that combination's) stock, not by the product total, and the server re-applies the cap when the order is submitted. The one exception: multi-quantity offers are not reduced this way — a bundle whose quantity exceeds the selected variant's stock is rejected instead.
When to enable combination stock
⚠️ Warning — Prerequisites
The Track combination stock switch only appears once the product has at least two variant groups and Track variant stock is already on. If you can't find it, add the second group or turn on variant stock first. Switching it on hides the per-option stock inputs and generates the matrix immediately.
Use it when:
Different
(Color × Size)pairs really do have different stock (aRed XLpile that runs out before theRed Mpile).You need a per-pair SKU for inventory or accounting.
Otherwise leave it off. Combinations explode quickly: 4 colours × 5 sizes = 20 SKUs to manage. 4 × 5 × 3 storage tiers = 60.
🛑 Important — 1 000 combinations is a hard limit
Above 1 000 the matrix refuses to generate and shows a "too many combinations" message. If a payload somehow arrives with more rows, the server keeps only the first 1 000 and drops the rest without warning. Split the product or drop a dimension — support cannot raise the cap.
When combination stock is on, the Combination matrix card appears below the variant groups. Click Generate combinations to build the grid, then fill it in. The matrix gives you:
A bulk-edit toolbar above the grid to set the same stock across many rows at once.
A stock and SKU field per row.
A per-row enable/disable switch, so an impossible pair can be turned off.
Multiple choice (selectable) groups are excluded from the grid — a notice on the card says so.
What shoppers see on a combination product
Options are re-classified on every click, and there are two different "unavailable" looks. Merchants routinely report the second one as a bug:
Appearance | Meaning |
Red strike-through, not clickable | Out of stock in every combination. |
Dimmed with a grey slash, still clickable | In stock somewhere, just not with the shopper's current other picks. Clicking it swaps the conflicting pick so the shopper can't dead-end. |
Reordering images and the variant gallery {#image-reorder}
The product image grid (above the variant section) is where merchants spend most of their time:
Drag-and-drop to reorder on desktop.
Long-press for ~250 ms on mobile to enter reorder mode (with a small haptic tick).
The chevron
<and>buttons on each image card nudge it one slot left/right — handy for slow drag on mobile or precise placement.The primary image is locked to position 1 — reordering the rest doesn't move it. Click the star on another thumbnail to make it primary.
The order is saved with the product, and is what the storefront uses for the gallery and for the option-to-image binding.
Where variants render
Variants are painted by several different surfaces, each with its own picker. Check the one your shoppers actually use before you conclude something is broken:
The shared product page — Ariana, Bloom, Brico, Prestige, Promobi, Showcase and Starter themes. Everything on this page describes that surface.
The Digital theme's own product page, which has its own variant picker and repeats it in a sidebar and a dropdown.
The add-to-cart modal that opens from a product card on the home, catalogue and category pages — shoppers can pick variants without ever opening the product page.
Landing pages, which have their own variant picker and their own card styles.
Variant styles
/dashboard/themes has a Variants tab with 12 CSS re-skins of the picker. They restyle the shared product page's picker only — not the Digital theme's product page, not landing pages, and not the add-to-cart modal.
Style | Plan | Look |
Clay | Pro | Soft 3D clay shapes with a micro-press on click. |
Minimal | Pro | Plain buttons, thin borders, a discreet selection ring. |
Softplay | Pro | Soft pastels, rounded shapes, a small bounce on selection. |
Stacked | Pro | One option per full-width row — good for offers and bundles. |
Editorial | Unlimited | Fashion-magazine feel: serif numbering, hairlines. |
Material | Unlimited | Material 3 — state layers, soft elevation. |
Offer | Unlimited | Offer rows with a radio and a pink highlight — built for bundles. |
Brutal | Enterprise | Thick borders, hard offset shadows, neo-brutalist. |
Glass | Enterprise | Frosted glass, light transparency, a selection sheen. |
Lux | Enterprise | Cream paper, gold hairline, serif selection. |
Mashrabiya | Enterprise | Arabic geometric patterns with a gold hairline. |
Pixel | Enterprise | 90s pixels, monospace, hard shadow. |
Cascading Variants (addon)
Some catalogs have dependent options — Brand → Model. Selecting Apple should only show iPhones, not Samsung Galaxies. Install the Cascading Variants addon to enable parent-child groups:
Picking a parent option reveals that option's child group.
Picking a different parent option hides the previously revealed child group and any grandchild groups below it, and clears whatever was selected inside them.
The parent group's own options always stay visible — cascading operates at group level, and it supports more than two levels (Brand → Model → Variant).
Because it hides and reveals whole groups, it works with any group type, and it is compatible with combination stock. Multiple-choice (selectable) groups are not supported as a cascade parent.
One rough edge: on the product page the visual "selected" highlight is cleared only on colour and text options, so an image-text child group can keep a highlighted card after you switch parents — the selection itself is still discarded. Landing pages clear all three types correctly.
Activate it from /dashboard/addons — requires the Pro plan or higher.
Offer Variant Popup (addon)
When you sell multi-quantity offers ("Buy 3, get 1 free"), the customer needs to pick variants for each piece. DZBuild already does that with a built-in in-page accordion; the Offer Variant Popup addon replaces it with a modal:
Responsive popup, one piece at a time.
Two settings, both on by default and both configured from the addon's card on the addons page (there is no separate management page): Auto-advance to next piece and Show variant images.
Compatible with combination stock.
Activate it from /dashboard/addons — available on all plans, including Free.
Digital Product Variants (Digital theme only)
If your store uses the Digital theme, the Digital Product Variants addon transforms the variant selector into a sleek 2-step accordion:
Each option shows the final price (base + adjustment) directly on the card — the only surface in DZBuild that does.
Single-selection across all groups (no multi-pick).
Smooth keyboard-accessible animation matching the Digital theme.
Zero per-product setup — activate and it applies everywhere.
Requires the Pro plan or higher and the Digital theme.
Tips
Set the price pill as a delta, not the absolute price. Most setup mistakes come from typing
2700instead of+200.Use image-text once you pass ~5 options in a group. Thumbnails kill misreads on similar names.
Don't enable combination stock unless you really need it. 4 × 5 = 20 SKUs is a lot to keep in sync.
Cards are great for fashion and brands, overkill for sizes.
You don't have to mark anything required — colour, text and image-text groups are mandatory by default, and the server rejects an order that arrives without a pick.
The primary image is pinned to slot 1 automatically — you can't drag it out of place. Click the star on a different thumbnail if you want another photo to lead.
Test the popup on a phone. Multi-quantity offers should always be checked in mobile width — the popup is more critical than the inline selector.
What's next
Products — the page that hosts variants.