Skip to content
Product Catalog

How to Create a WooCommerce Variable Product Without Opening 36 Forms

Where the time really goes when you add a variable product, and a faster shape for the same job: generate every combination, fill the rows, save once.

About Quick Variable Products
Quick Variable Products — generate every WooCommerce variation in one click

A t-shirt in three colours and four sizes is twelve things to sell. In WooCommerce it’s also twelve forms to open, one at a time, each one asking for a price you already know and a stock figure you already have on a piece of paper next to you.

This walks through creating a WooCommerce variable product the standard way, where exactly the time goes, and a faster shape for the same job — plus the decisions worth making before you generate anything, because a variation matrix is much easier to get right the first time than to unpick later.

What actually takes the time

The standard flow looks like this:

  1. Set the product type to Variable product.
  2. Open the Attributes tab, add an attribute, type its values, tick Used for variations, save attributes.
  3. Repeat for each additional axis.
  4. Open the Variations tab and press Generate variations.
  5. Expand each generated row and type a price, a SKU and a stock quantity.
  6. Save.

Steps one to four are fine — they take a minute and WooCommerce does the combinatorial work for you. Step five is where the afternoon goes. Three colours times four sizes is twelve rows, each of which has to be expanded, filled and collapsed. Add a third axis and you are opening thirty-six forms to enter data that is mostly identical.

The frustrating part is that the information is uniform. Most variations share a price. Many share a stock figure. The SKUs follow a pattern you could write down in one line. You are not making twelve decisions; you are performing one decision twelve times.

A faster shape for the same job

The fix is not a different data model — it’s putting the whole matrix on one screen so you can fill it like a spreadsheet and save once.

Attribute values typed into two axes with a Generate matrix button, producing nine variation rows
Type the values for each axis, generate, and every combination appears as a real WooCommerce variation.

That’s what Quick Variable Products does. You pick your attributes, type their values, generate every combination in one click, then fill in price, SKU and stock per row without opening anything. No CSV, no spreadsheet round-trip, no leaving WordPress.

Worth being clear about what comes out: ordinary WooCommerce products. No custom tables, no parallel data. Deactivate the plugin and everything you built stays exactly as it is, editable in the standard product editor like anything else.

Step by step

1. Decide your axes before you type anything

An axis is an attribute that genuinely changes what the customer receives — colour, size, material. The test is simple: if it doesn’t affect price, stock or SKU, it shouldn’t be an axis.

Care instructions, country of origin, fabric composition: these are information, not choices. They belong in a display-only attribute or the description. Making them variation axes multiplies your matrix for no commercial reason, and it’s the most common cause of a product with four hundred variations that nobody can manage. The difference between attributes and variations is worth twenty minutes if this is new.

2. Use global attributes where you can

Global attributes (the ones under Products → Attributes) are reusable across products and can power filtering and archive pages. Product-specific attributes work for variations too — that part is often misreported — but they’re invisible to filters and can’t be reused, so you’ll end up retyping “Small, Medium, Large” for the rest of your career.

Practical rule: if you’ll use the attribute on a second product, make it global. If it truly applies to one product only, custom is fine.

3. Generate the matrix

Type the values for each axis — Red, Blue, Green and S, M, L — and generate. Nine real variations appear, ready for data. Whether you’re doing this in the core Variations tab or on a single-screen form, this is the step where you should sanity-check the count. Nine is fine. Ninety is a conversation. Nine hundred is a performance problem you’re about to create.

4. Fill the rows

Nine variation rows with individual stock, SKU and price fields and a single save button
Price, SKU and stock per row on one screen — instead of expanding twelve forms one at a time.

Three shortcuts remove most of the typing:

  • Set all quantities at once, then correct the handful that differ. Most products have one stock figure across most variations.
  • Generate the SKUs rather than typing them. Consistent by construction, no typos, no duplicates — see variation SKU schemes for what a good pattern looks like.
  • Enter moves you to the next row, so you can walk the list from the keyboard — or let a barcode scanner walk it for you, since a scanner is just a keyboard that types fast.

Only override the price on the rows that genuinely differ. If Large costs more, set Large. Everything else inherits.

Bulk controls copying a quantity into every row and generating SKUs for the whole matrix
Set all quantities at once, generate the SKUs, then override only the rows that genuinely differ.

5. Save once

One save writes the parent product and every variation. This is the step where things quietly go wrong on badly-behaved sites, and it’s worth knowing why: WordPress fires save_post for every variation, and a single third-party callback that throws an error partway through can abandon the loop and leave you with a half-built product — some variations written, some not, and no obvious sign which.

Quick Variable Products briefly detaches core post hooks while it writes, then re-fires the important ones once for the finished product, so Yoast, Rank Math, WPML, Polylang and search indexers still see it normally. That’s an unglamorous detail, and it’s the difference between a product that saves and a product you have to rebuild.

The decisions worth making up front

SKUs: generate, don’t type

Every variation should have its own SKU. Not because WooCommerce demands it, but because everything downstream does — picking, counting, reordering, supplier orders. A variation without a SKU can’t be scanned, which means it can’t be counted properly either.

Generating them from the attribute values gives you TSHIRT-RED-S, TSHIRT-RED-M and so on: predictable, readable off a label, and unique by construction.

Images per variation

One photo per attribute value is usually the right amount of effort — one image for Red, one for Blue, one for Green, shared by every size within that colour. Photographing all twelve combinations rarely tells the customer anything the three colour shots didn’t.

One stock pool, or one per variation?

This is the decision people get wrong most often, and it’s worth pausing on.

Per-variation stock is right when each variation is a distinct physical thing on a shelf. A Medium Blue and a Large Red are different objects; they need different numbers.

A shared pool — one quantity on the parent, drawn down by every variation — is right when the variations aren’t physically separate: made-to-order goods, print-on-demand, anything where the “variation” is a specification rather than an item in a box.

Choosing the shared pool when the items are physically distinct is the single most common cause of overselling in WooCommerce, because selling a Small silently reduces what’s available in Large. The full comparison is here if you’re not sure which you need.

Simple products from the same screen

Not everything needs axes. Leave the attributes empty and the same fast form saves an ordinary simple product, with the same fields for cost, tax, inventory, shipping, categories and tags. It’s a small thing that removes the “wrong tool, start again” moment when a product turns out not to have variations after all.

Before you build a hundred of these

Two habits that pay for themselves on the second product:

  • Fix your attribute vocabulary first. Decide whether it’s “Colour” or “Color”, “S/M/L” or “Small/Medium/Large”, once. Global attributes make this a decision rather than a habit, and filters only work when the values match.
  • Decide your SKU pattern once. Changing a SKU scheme after two hundred products means touching invoices, supplier orders and accounting exports — it’s a migration, not an edit.

Neither takes long. Both are considerably cheaper now than in six months.

Variable product FAQ


How do I create a variable product in WooCommerce?

Set the product type to Variable product, open the Attributes tab, add each attribute with its values and tick “Used for variations”, save attributes, then open the Variations tab and press Generate variations. WooCommerce creates every combination; you then set a price, SKU and stock quantity on each one.


Why does adding a variable product take so long?

Because the data entry is per variation and the interface is one form at a time. Three colours and four sizes is twelve forms to open, fill and collapse, mostly with identical information. The generation step is fast; filling in the rows is where the time goes.


Can I set price and stock for all variations at once?

Not in the core Variations tab, which expects you to expand each row. Tools that put the whole matrix on one screen let you set all quantities at once, generate every SKU in a click, and only override the individual rows that genuinely differ.


Does every variation need its own SKU?

Every stock-managed variation should have one, because picking, counting and reordering all happen at variation level. A variation with no SKU cannot be scanned, which makes stock counts far slower and less reliable.


Should all my variations share one stock quantity?

Only if they are not physically separate items — made-to-order goods, print-on-demand, or configurations assembled at fulfilment. If a Medium and a Large sit in different places and can run out independently, they need their own stock records.


Are products made this way still normal WooCommerce products?

They should be, and it is worth checking before you commit to any tool. Quick Variable Products writes ordinary WooCommerce products and variations with no custom tables, so deactivating the plugin leaves everything intact and editable in the standard product editor.


Keep reading

Related articles