A shirt in 3 sizes and 4 colours is not 12 products — it is ONE product with 12 variations. The difference matters: for the buyer (one page, a clean choice) and for you (one stock, one description).
Step 1: attributes
Products → Attributes → create Size (S, M, L) and Colour (black, white…). Tick Enable archives if you want filtering by them. Attributes are created ONCE and reused everywhere.
Step 2: a variable product
- On the product → Product data → choose Variable product
- Attributes tab → add them → tick Used for variations
- Variations tab → Generate variations (creates all combinations automatically)
- For each variation: price, image, weight, SKU, stock
Step 3: stock that does not lie
WooCommerce → Settings → Products → Inventory:
- Manage stock — enable it; Woo deducts on every order
- Low stock threshold — a notice when few remain (e.g. 3)
- Out of stock visibility — hide sold-out items or keep them labelled
- Hold stock — reserve for unpaid orders (e.g. 60 min) so nothing sells twice
The costliest mistake
Sold but not in stock. The buyer pays, you call to cancel — they will not come back. So: stock per variation (not just per product) and a sync with the physical warehouse at least weekly.
Small things that help
- An image per variation — the buyer sees the colour they picked
- A SKU per variation — for the courier and accounting
- A notify me when available form for sold-out items — it collects clients instead of losing them
If you have many products
Entering 200+ products with variations by hand is days of work. A CSV import is the answer — we do that for clients, images included.