You sell T-shirts. The same shirt comes in three sizes (Small, Medium, Large) and three colors (Black, White, Navy). How do you list that on your store?
You could create 9 separate products — one for each combination. That's painful for you to manage, and confusing for customers who land on "Plain T-shirt Black Small" and then have to hunt around to find Medium.
The better way is product options and variants. One listing for "Plain T-shirt", with pickers on the storefront that let the customer choose their size and color. That's what this post is about.
🧠 The two-minute mental model
Options are the questions you ask the customer — Size? Color?
Variants are the physical items they can buy — one Small Black shirt, one Medium Navy shirt, etc. Each variant has its own stock count.
Options vs. variants — what's the difference?
This is the part most merchants get tripped up on, so let's slow down.
An option is a category of choice. "Size" is an option. "Color" is an option. "Material" is an option. They're the things a customer needs to pick.
Each option has values. Size has Small, Medium, Large. Color has Black, White, Navy. Material has Cotton, Polyester.
A variant is one specific combination — one physical item sitting in your warehouse. A "Medium Black cotton T-shirt" is one variant. A "Small Navy cotton T-shirt" is a different variant. Each one has its own count of how many you have in stock.
So when you set up a shirt with two options — Size (S/M/L) and Color (Black/White/Navy) — you end up with 3 × 3 = 9 variants. One row for each combination.
A real walkthrough: setting up a T-shirt
Let me walk you through it like we're doing it together.
Step 1: Fill in the basics
Open New product in your dashboard and fill in the usual fields:
- Name: Plain T-shirt
- Description: Soft cotton tee, regular fit
- Category: Apparel
- Price: ¢50
For now, leave the Stock field empty. As soon as you add variants, that field becomes the total of all your variants and you don't type into it directly.
Step 2: Set up your options
Scroll down to the Options card and tap Add option. You'll see two fields:
Option name (the question): Size Values (the answers): [Small] [Medium] [Large]
The option name is the question you're asking the customer. The values are the possible answers. Type "Size" in the name field, then add Small, Medium, and Large as separate chips.
Tap Add option again to add Color:
Option name (the question): Color Values (the answers): [Black] [White] [Navy]
Now you've declared what kinds of choices the customer can make. But no variants exist yet — just the menu.
⚠️ Common mistake
Don't type your *values* in the *option name* field. "100ml", "Large", or "Red" are values, not names. If your option name has a list inside it, you've mixed them up. The name is the question; the values are the answers.
Step 3: Generate the combinations
Tap Generate variants from options. The system creates one row for every possible combination — 3 sizes × 3 colors = 9 variants:
| Variant | Size | Color | Stock |
|---|---|---|---|
| Small / Black | Small | Black | 0 |
| Small / White | Small | White | 0 |
| Small / Navy | Small | Navy | 0 |
| Medium / Black | Medium | Black | 0 |
| Medium / White | Medium | White | 0 |
| Medium / Navy | Medium | Navy | 0 |
| Large / Black | Large | Black | 0 |
| Large / White | Large | White | 0 |
| Large / Navy | Large | Navy | 0 |
Each one starts at zero stock and inherits the main product price. You don't need to type the names — they're generated for you.
Step 4: Set per-variant stock
Now go down the list and type how many of each you actually have:
- Small / Black: 4
- Small / White: 3
- Small / Navy: 2
- Medium / Black: 6
- Medium / White: 5
- Medium / Navy: 3
- Large / Black: 4
- Large / White: 2
- Large / Navy: 1
Look up at the main Stock field — it now reads 30 automatically, with a small caption: "Total of 9 variants. Edit per-variant stock below." You don't have to keep that number in sync — the system does.
If one variant costs more (say Navy is a premium dye and you charge ¢55 for it), you can override the price on that row too. Optional.
Step 5: Save
That's it. The product is live.
What your customer sees
When a shopper opens your storefront and clicks the T-shirt, they don't see 9 separate listings. They see this:
Plain T-shirt — ¢50
Size: [ Small ] [ Medium ] [ Large ]
Color: [ Black ] [ White ] [ Navy ]
🟢 30 in stock
[ Add to cart ]
Two pickers, one per option group. The page starts on the first in-stock combination. As they tap Medium, the stock counter updates to whatever Medium has across the colors. Tap Navy and the counter narrows further — that exact Medium/Navy combo.
When a combination is sold out, the page strikes through that button so they can see it's unavailable. They can switch to a different size or color and the available combos come back into focus.
What happens when someone buys
Say a customer buys 1 × Large / Navy. The moment they pay:
- Large / Navy drops from 1 to 0 in stock
- Total product stock drops from 30 to 29
Both happen in the same instant, atomically. No manual reconciliation, no spreadsheet, no waking up to wrong inventory counts.
The next shopper who picks Large and tries to choose Navy sees it greyed out as Out of stock. They can still buy Large/Black or Large/White.
Common patterns and how to handle them
👕
Only one dimension
A shirt that only comes in sizes (S/M/L), no color choice. Add one option, "Size", with three values. Generate. You get 3 variants. Storefront shows a single picker.
☕
No options at all
A plain coffee mug. Just one SKU. Skip the Options card entirely and type your stock number directly in the Stock field, like before. No picker on the storefront.
🎨
Asymmetric stock
You stock Navy only in Medium, not Small or Large. Generate all 9 variants, then delete the Small/Navy and Large/Navy rows. The storefront automatically strikes out Navy when Small or Large is selected.
💰
Different prices per variant
Large costs more than Small? Edit that variant's price directly. The storefront shows the right price the moment the customer picks that size.
A few rules to keep in mind
You can have up to 2 option groups per product today. So Size + Color is fine, Size + Color + Material isn't (yet). If you need three dimensions, combine two of them: "Cotton Black, Cotton White, Silk Black, Silk White…"
Variants are combinations, not standalone things. You can't have "Blue" as a variant if you haven't first added "Color" as an option group. Adding a stray variant called Blue without declaring Color as an option means customers will never see Blue as a choice — it's data the storefront has no way to surface.
Stock auto-syncs. Once you have variants, the main Stock field on the product is just the live sum. Don't try to edit it directly — edit the variant rows. If you delete every variant, the main field becomes editable again.
Generating preserves your work. If you've already set stock on a few variants and then regenerate (say, after adding a new color), the system carries over your existing stock numbers wherever the combinations still match. You don't have to retype everything.
When NOT to use variants
Not every product needs variants. Use them when you have the same product in different versions where someone genuinely needs to pick one. Don't use variants for:
- Bundles of unrelated items (sell those as separate products)
- "Add a gift card" type upsells (use a separate product)
- Two products that just share a name but are actually different things
If you're typing variant names like "Pink, red and white, blue, white etc" or "Set A (S,M,L), Set B (M,L,XL)" — that's a sign you're trying to cram too much into one product. Split them.
Try it on a test product first
The fastest way to feel comfortable with this is to make a fake product on your store, add Size and Color options, generate the combos, and walk through the storefront yourself. Mark the product as draft so customers don't see it. Once you've done it once, you'll never go back to listing duplicate products.
Variants and options exist for one reason: to let you sell the way you actually run your business, without making customers (or yourself) hunt for the right version. Set them up right once, and your storefront does the work from there.
Get weekly business tips
Join 1,000+ entrepreneurs growing their online businesses.
No spam, ever. Unsubscribe anytime.


