Skip to content

Variation matrix Pro

Pro: show a variable product's variations as a grid so a buyer can order several at once, and edit variations in bulk.

Updated September 14, 2026

A buyer who wants four sizes in three colours should not have to choose, add, and go back eleven times. The variation matrix lays a variable product’s variations out as a grid — one attribute down the side, another across the top — with a price in every cell and, in order mode, a quantity box beside it. They fill in what they want and submit once.

Two modes

Order mode shows a quantity box in every cell that can be bought. Blank cells are ignored.

Price mode shows the grid as a price list, with no quantity boxes at all. Useful for a wholesale price sheet or a size guide with prices on it.

Where it appears

Turn it on for every variable product, or product by product from a box in the product editor. It replaces WooCommerce’s own variation dropdowns on the products you choose.

You can also place a grid anywhere with [storemaster_variations id="123"], optionally with mode="price" or your own row and col attributes.

When it stands aside

Two situations, both deliberate:

  • A product with three or more variation attributes. A grid has two dimensions. Rather than collapse the third and quietly show the price for one arbitrary value of it, the matrix declines.
  • A product with more than 200 variations. A 40×40 grid is 1,600 cells and several thousand elements — a page a phone cannot render.

In both cases WooCommerce’s own selectors stay exactly where they are. The customer loses a convenience, never the ability to buy.

Prices are your prices

Every figure in the grid comes from the same pricing pipeline the product page uses, so a trade customer sees their trade price, a running campaign shows its discount, and tax display follows your settings. The matrix renders prices; it does not calculate them.

Adding is validated, and partial adds are explained

Every cell you fill in goes through exactly the validation a single add-to-cart does — stock, purchasability, your quantity rules and your access policies. Nothing is skipped because it arrived in a batch.

If some lines cannot be added, the ones that can still go in, and you are told which were refused and why, in the same words the product page would use. Nothing in your selection is silently changed to a quantity you did not ask for.

Combinations you do not sell

A cell with no variation behind it reads as unavailable rather than as an empty box a customer will try to click. Screen readers hear "Not available" rather than nothing at all.

Bulk editing

StoreMaster → Variations is where this lives. Choose a product, and its variations are listed with their SKU, price, stock and whether they are enabled.

Tick the rows you want, choose a field, give it a value, and apply. You can set:

  • regular price and sale price
  • stock quantity and stock status
  • SKU
  • weight
  • image
  • whether a variation is enabled

Leaving the value empty clears that field, which is how you take a sale price off forty variations at once.

One thing worth knowing about stock status: once a variation manages stock, WooCommerce works its status out from the quantity. Setting the status by hand on those variations will not stick — change the quantity instead, or turn stock management off for them. This is WooCommerce’s own rule and applies wherever you edit them, not just here.

A few things it does deliberately:

  • It changes the rows you ticked, and only those. There is no "apply to everything matching the filter" button, because a filter re-evaluated on the server can differ from the rows you were looking at when you pressed it.
  • It tells you what did not change. If WooCommerce refuses one — a duplicate SKU is the usual reason — that variation is reported as left alone rather than swallowed, so "12 changed, 3 left alone" means what it says.
  • It works in pages of 100. A product with 900 variations is edited a page at a time rather than in one request that times out half way through.

Narrow the list by name or SKU first if you only want some of them; the search runs on the server, so it finds variations that are not on the page you are looking at.

Still stuck? Email [email protected].