Create a Variable Product in WooCommerce
A variable product is one WooCommerce listing sold in combinations such as size and colour. Set Product data to Variable product, add each attribute, tick Used for variations, save, then Generate variations and enter a regular price on every row — a row without a price never appears in the shop dropdown.
The attribute-to-variation workflow for Indian store owners, with the fixes for rows that will not show.
knowledge
- Read time
- 5 min
- Sections
- 7
- Updated
- 14 Nov 2026
- Written by
- WebJi® team
Last editorial update: 15 November 2026.
What is a variable product in WooCommerce?
A variable product is a single WooCommerce listing that shoppers buy in combinations — size, colour, material — where each sellable combination carries its own price, stock, SKU and image. It is the right product type when the same item ships in more than one option; a simple product covers the one-version-one-price case, and genuinely different goods belong in separate listings.
Three words do the work, and mixing them up is the only real difficulty in this workflow:
| Piece | Example | What it does |
|---|---|---|
| Attribute | Size, Colour | Names the choice the shopper sees |
| Term | M, L, Blue | One value inside that choice |
| Variation | Size M + Colour Blue | The sellable row holding price, stock and SKU |
Two rules prevent nearly every broken variable product: tick Used for variations on each attribute or no dropdown is ever built, and put a regular price on every row you intend to sell, because an unpriced row is silently left out of the shop.
Global attribute or per-product attribute — which do you need?
Use a global attribute (Products › Attributes) when the same choice repeats across products — every t-shirt has Size — and a custom per-product attribute when only this one listing needs it. Global attributes also become filterable terms shoppers can browse.
For the global route: open Products › Attributes, name the attribute (Size), save, click Configure terms, and add the values you actually stock (S, M, L). Repeat for Colour. Those attributes are then selectable on every product that follows.
For a one-off: on the product's Attributes tab, choose Custom product attribute, type the name, and type the values separated by a vertical bar — S | M | L. Both kinds must still be ticked Used for variations to build a dropdown.
How do you build the variable product, step by step?
The build is one straight sequence — attributes first, then the product type, then the rows — and each step unlocks the next screen in wp-admin. The Variations tab does not even appear until Product data is switched away from Simple product.
- Products › Attributes: create Size and Colour, and add their terms.
- Products › Add New: name, description, main image.
- In the Product data box, change Simple product to Variable product — the Variations tab now appears.
- Open the Attributes tab: select Size, click Add, tick the terms for this product, tick Used for variations; repeat for Colour.
- Click Save attributes — Generate variations stays empty until this save is done.
- Open the Variations tab, choose Generate variations, and confirm; one row is created per combination.
- Expand each row and enter its Regular price; delete or skip combinations you do not sell (or build rows individually with Add manually).
- Save changes, then Update, then open the product on the shop and select one combination — price and a working Add to cart button are the pass mark.
How do you set price, stock and SKU per variation?
Each variation row holds its own Regular price, SKU, weight, dimensions and stock — expand the row, fill what differs, and leave the rest blank. Regular price is the one field a sellable row cannot lack.
- Per-row stock: tick Manage stock on the row and enter its quantity, when a combination has its own count.
- Unsold combinations: delete the row, or leave it unpriced — it then stays out of the dropdown.
- Dimensions and weight: set per row when a large size changes the shipping cost; the shipping class field is on the same row.
- Save changes, then Update: the row-level save and the product-level save are two different buttons.
With hundreds of combinations, a CSV import beats clicking: the workflow, including images, is covered in importing products to WooCommerce from CSV.
How do defaults and variation images behave?
Default Form Values on the Variations tab pre-selects one combination (say M and Blue), and each variation's single image box makes the main photo switch when a shopper picks that combination. Both are optional polish, but they change how the page feels.
- Leave defaults empty if the shopper should start from “Choose an option”; Add to cart staying greyed-out until a valid selection is normal behaviour, not an error.
- One image per variation is what core WooCommerce keeps — set it by expanding the row, clicking the image box, and choosing that colour's photo. A whole second gallery per variation needs a plugin.
Why is a variation not showing on the product page?
Work down this list and stop at the first wrong item — the four causes cover almost every missing-variation ticket: wrong product type, an unticked box, an empty price, or hidden stock.
- Product data still says Simple product — change to Variable product and Update.
- Used for variations unticked — tick it, Save attributes, generate rows again.
- The row has no regular price — enter one; unpriced rows never reach the dropdown.
- Zero stock plus hidden out-of-stock — under WooCommerce › Settings › Products › Inventory, out-of-stock items can be hidden; add quantity or allow backorders on the row.
- A cached page — re-open the product URL in a private window after saving.
One subtler case: the dropdown exists but Add to cart never activates. That happens when a variation row still says Any for an attribute while the shopper selected a specific term — set a real term on every attribute of that row, save, and retry the same pair.
Where do shipping class, tax and hosting fit in?
Shipping class lives on each expanded variation — use it when a large size should cost more to deliver than a small one — and the zones that price those classes are configured separately. Setting up those zones for Indian shops, including flat rate and COD, is its own walkthrough in WooCommerce shipping zones for India.
Tax class on a variation pulls from the classes under WooCommerce › Settings › Tax, and prices are typed the way that screen is set — inclusive or exclusive — not with a guessed GST percentage on the row. GST-compliant invoices for an Indian store are covered in generating GST invoices in WooCommerce. The store itself runs well on WooCommerce hosting; a catalog with many variation rows is heavier than a brochure site and deserves the room. To have WebJi® build the catalog for you, email support@webji.services — the work is quoted before payment.
Frequently asked questions
What is the difference between an attribute and a variation?
An attribute is the label of the choice (Size); a term is one value of it (M); a variation is one sellable combination of terms (Size M, Colour Blue) holding its own price, stock and SKU. The attribute builds the dropdown; the variation is what the shopper actually buys.
Can every variation have a different price and stock count?
Yes. Expand the row and set its Regular price, tick Manage stock, and enter that combination's quantity. SKU, weight and dimensions can also differ per row. The only blank a sellable row cannot carry is the price — an unpriced row is excluded from the dropdown entirely.
Why does Add to cart stay disabled after I pick a size?
Either no variation matches the exact pair picked — often because a row is still set to “Any” for one attribute — or the matching row has no price. Give every row real terms and a regular price, save changes, and retest the same combination in a private window.
Should I make three colours three separate products instead?
No — that splits reviews, stock control and SEO across listings of the same item. Use one variable product when the option matrix differs (colour, size) but the good is the same. Separate products are for genuinely different goods, where descriptions and pricing diverge completely.
How many variations can one product have before it gets slow?
Core WooCommerce handles large counts, but the admin page and the product page both slow as rows multiply — a full set of every combination of many attributes is the worst case. Prune unsold combinations, and give a large catalog proper WooCommerce hosting rather than a small brochure plan.
Last editorial update: 15 November 2026.
Ready to get started with WebJi®?
Join 12,000+ businesses across India and overseas. INR pricing, 18% GST shown before payment and 24/7 email support in Hindi and English — average first reply under 60 minutes.