Create WooCommerce Variations with AI: Every Combination at Once
To create WooCommerce variations with AI, you describe the product the way you would to a colleague, "a merino hoodie in black, grey and navy, sizes S to XL, 59 each", and the assistant builds every combination for you. MCP is the standard way an AI assistant such as Claude connects to outside tools, and the MCP server built into BEAR gives it controlled access to your catalogue: your sentence becomes a table of variations you read before anything is written, BEAR checks it for duplicates, missing prices and misspelt values, and the product is created only after you say yes. The same connection adds variations to products you already sell, changes which attributes a product varies by, and removes the variations you no longer want.
One request, every variation: a worked example
Here is a complete request for a new variable product:
Create a variable product "Merino Hoodie" in Black, Grey and Navy, sizes S, M, L and XL, 59 each, 10 of each variation, in the Hoodies category. Show me the table first.
This is what happens next. The numbers are illustrative.
- The assistant looks before it writes. It reads the shop's attributes and its category list. If the shop already has a Colour attribute (
pa_color) and a Size attribute, it uses them, so the hoodie appears in the same colour and size filters as the rest of the catalogue. It also looks up the id of Hoodies: BEAR accepts categories by id only, so a misspelt name cannot quietly create a new category. - BEAR answers with a preview, not a product. The assistant calls
woobe_create_previewand gets back a table: 12 variations (3 colours × 4 sizes), each with its attributes, price, sale price, stock and SKU, plus the product itself with its category. Nothing exists in the shop yet. - Warnings come with the table. If the shop's Colour attribute has no Navy, the preview says the value will be created. If the shop sells "Small" and you wrote "S", the warning names the existing value and asks which one you mean, because a second size value would split your filters. It also warns when variations would have no price, when a product with the same name already exists, and when the product's SKU is already used by another product.
- You correct or confirm. Strike rows ("no XL in Grey"), change a price ("XL is 64"), or say yes. The assistant then calls
woobe_create_productwith the same description and your confirmation. Without that confirmation BEAR refuses to create anything. - The product is created as a draft. BEAR registers the attributes on the product, creates the 12 variations with their prices and stock, and files the product in Hoodies and in every parent category above it, so customers browsing Clothing find it too. The answer lists the new variation ids and an edit link.
- You publish when you are ready. Look the product over in wp-admin, add photos, then say "publish it". That is one more field edit, and it is recorded in BEAR's history like any other.
The preview and the real creation are computed by the same code from the same description, so the table you approved is the product you get.
Before you start
You need BEAR 2.2.4 with Enable the MCP server set to Yes in its settings, and an AI assistant that can use MCP connectors, such as Claude in the browser, in the desktop app or in Claude Code. The assistant connects with the key shown under MCP secret key, or with a personal key a shop manager receives from the administrator. The connection steps are on the BEAR MCP server documentation page; this article starts where that page ends.
How BEAR turns a sentence into variations
A variable product varies along attributes such as Size and Colour. Each attribute has values (S, M, L; Black, Grey), and a variation is one value per attribute with its own price, stock and SKU. "Three colours in four sizes" is therefore twelve variations, and the difference between 12 and 120 is one misunderstood word. That is why the table always comes first.
Shop attributes and product-only attributes
An attribute is either a shop-wide (global) one, registered under Products → Attributes and stored as a taxonomy such as pa_color, or one that belongs to a single product. Filters and layered navigation work with global attributes, so use them for anything a customer filters by. In the preview, a global attribute is listed with its pa_ name; an attribute without one belongs to this product alone. If you see "Colour" without pa_color on a shop that has that attribute, say "use the shop's Colour attribute" before you confirm.
How values are matched
A value you name is matched to an existing value of the attribute by its name or its slug, so "navy" finds "Navy". A value the global attribute lacks is created when you confirm, and a look-alike such as "Gray" next to "Grey" is flagged first, as in the example above. Names in any alphabet work, Cyrillic, Chinese or Japanese included.
Every combination, or only some
Name only the attributes and their values and BEAR plans every combination. List the variations ("black and grey in all sizes, navy only in M and L") and it plans exactly those. A listed variation must have a value for every attribute: one without a value would be an "any" variation that sells every value of that attribute at once, so BEAR refuses it. The same combination listed twice is refused too, with a question about which price and stock it should have. And one request creates at most 200 variations, for a new product or an existing one: a number that large nearly always means an attribute was misunderstood.
Prices, stock and SKUs for the new variations
- Price. One price for every variation ("59 each") or a price per variation ("XL is 64"). A variation without a price exists, but WooCommerce does not sell it; the preview counts such variations and asks you to give a price. When you add variations to an existing product, BEAR also refuses a price that is not a number and a sale price that is not below the regular price.
- Stock. Ask for it per variation, "10 of each", and check the stock column of the preview: every row should show 10. A single stock figure given for a new variable product as a whole is stored on the product itself, as one shared stock for all variations that have none of their own, which is a different thing. When you add variations to an existing product, a stock figure given once is applied to each new variation and switches stock management on for it.
- SKU. Optional, per variation. WooCommerce keeps SKUs unique, so a SKU already used by another product is not applied and the variation is created without one. When adding variations, BEAR names every SKU it had to leave out; after creating a new product, ask the assistant to read the variations back if SKUs matter to you.
Changing prices or stock of variations later is not a structural change. "All XL hoodies 5 more" or "set the stock of the navy ones to 20" is an ordinary bulk edit: the assistant selects the variations, shows a before and after preview, asks you to confirm the number of products, and the change lands in BEAR's history, where the whole operation can be rolled back. How those edits work is explained in bulk editing WooCommerce prices with AI.
Add variations to products you already have
For an existing product the assistant starts by reading its structure with woobe_variations and showing it as a table: the attributes the product varies by with their values, and every variation with its price, stock, SKU and whether it is enabled. The same answer lists what is off, because people rarely remember what actually exists:
- Missing combinations that have no variation.
- Duplicates: two variations for the same combination. Checkout only ever sells one of them, so the price and stock of the other never matter.
- "Any" variations: a variation with no value for an attribute sells every value of it. One "any size, red" variation sells red in all sizes, and it overlaps with every explicit red variation added later. Shops usually have these by accident.
- Unmapped values: a variation uses a value the product itself no longer offers, so customers cannot choose it. Imports often leave these behind.
Then you ask for the change:
Add XL to the Merino Hoodie in all three colours, 64 each, 5 of each.
If the hoodie does not offer XL yet, BEAR adds the value to the product, and to the shop's Size attribute as well if the shop has never used it; the preview marks each value as new to the product or new to the shop. Every planned combination is checked against the existing variations, and the preview shows the count and the table. After your yes the variations are created and enabled at once, so they are live straight away if the product is published.
To fill the gaps of a product, ask for every missing combination: "Create all missing variations of the hoodie at 59". BEAR builds every combination of the values the product has now and skips those that exist, including those already sold by an "any" variation. Give a price in the same sentence, or the new variations cannot be bought.
A combination that already exists is refused: change that variation's price or stock instead, because a second one would never sell. So is a value for an attribute the product does not vary by; add the attribute first, as described below. The other refusals are collected in the table further down.
Two situations are allowed but announced. If an "any" variation already sells a combination you add explicitly, the preview names that variation, so you can decide whether the two should overlap or the "any" one should go. And if a variation exists but its value was taken off the product, for example one restored from the trash after its colour was dropped, listing the same combination puts the value back and makes that variation selectable again rather than creating a second one.
Bulk add variations to many products
The variation tools work on one product per request. "Add XL to all 30 hoodies" is done product by product, each with its own preview and confirmation, which is fine for a handful and slow for a whole category. For that scale use BEAR's Variations Advanced Bulk Operations panel in wp-admin, described in manipulations with variable products and their variations, or follow the walkthrough on bulk creating variations.
A simple product that should get variations
Ask for variations on a simple product and BEAR gives the assistant a four-step plan to read back to you first: note the current price, stock and SKU; switch the product type to variable; add the attribute; create the variations with the old price and stock. Two decisions are yours: stock stays as one shared number on the product or moves to the variations, never both, or it is counted twice; and a variation cannot reuse the product's SKU. In the free version the product type cannot be changed through the connection: change it on the product screen, then continue by chat. To convert many products in one go, see bulk converting simple products to variable.
Change variation attributes: add one, drop one, set the default
Changing which attributes a product varies by is one structural change per request, always previewed and confirmed.
- Add an attribute. "Add Material to the hoodie, Merino and Cotton; the existing variations are Merino." If the shop has a Material attribute, that one is used; otherwise the attribute belongs to this product alone. Existing variations take the value you name. If you name none, they become "any" and each of them sells in every material at its current price; the preview warns about that. No variations are created for the other values: that is a second request, "create all missing variations of the hoodie at 69".
- Remove an attribute. "Stop varying the T-shirt by colour." BEAR first checks whether two variations would become identical without it: Black M and Grey M would both become M. If so, it refuses and lists each group with its prices, so you decide which variation of each group to keep and remove the others first. Otherwise the variations stay, without that attribute. Add "keep it as information" and the attribute stays on the product page as a plain fact; without it, the attribute comes off the product.
- Set the default. "Preselect Black, M on the hoodie page", or "clear the preselection". The preview shows the current default and the new one.
One thing is left to wp-admin: an attribute that is already on the product as information, shown on the page but not a choice, cannot be turned into a variation attribute through the connection.
Remove variations
Remove all the grey variations of the Merino Hoodie.
Variations are removed by value or by id. By value, BEAR takes every variation carrying it; with two values, "grey in XL", only those matching both. A variation set to "any" colour is never taken by a value: it sells every colour, and removing it would take far more than you asked. To remove one of those, name it by its id from the variations table.
The preview lists each variation with its id, attributes and stock. When you remove by value, BEAR also takes off the product every value that no remaining variation uses, so the shop stops offering a colour nobody can buy, and the preview names those values. Removing by id leaves the values on the product unless you ask for that too. Removing every variation is allowed, with a warning that the product stays in the shop but nothing on it can be bought.
Removed variations go to the WordPress trash. "Restore variations 1234 and 1235" brings them back with the status they had. A value that was taken off the product does not come back with them: add the same combination again and BEAR puts the value back on the product and makes the restored variation selectable, without creating a duplicate. On a site where the trash is switched off in wp-config.php, WordPress deletes instead of trashing, so there is no way back.
Attributes and values the shop needs first
Usually there is nothing to prepare: values you name are created on the way, and a product-only attribute needs no setup. Create a global attribute first when a new characteristic will be shared by many products and should be filterable:
Create a Sleeve Length attribute with the values Short, Three-quarter and Long.
The assistant lists the existing attributes first. If one with the same name or slug exists, BEAR refuses a second one and points to it, because two attributes that mean the same thing split the catalogue. The slug may have at most 28 characters (WordPress allows 32 for a taxonomy name, pa_ included), and for sizes and numbers you can ask for numeric sorting, so 2 comes before 10. "Add XXL and 3XL to Size" adds values to an existing attribute and skips those already there; a new value is on no product until a variation or a bulk edit puts it there.
Creating attributes and values, including the values a variation request brings along, needs write access to the categories, tags and attributes part of the shop. A shop manager whose personal key closes that part can still add variations with existing values; a request that would create a new value is refused. Putting attributes on many products and tidying them up is covered in bulk assigning categories, tags and attributes with AI.
Limits and checks at a glance
| Situation | What BEAR does |
|---|---|
| More than 200 new variations in one request | Refuses and asks for a narrower request |
| A combination that already exists, or the same one listed twice | Refuses |
| A new variation without a value for one attribute | Refuses, because it would become "any" |
| A value for an attribute the product does not vary by | Refuses until the attribute is added |
| "All missing variations" when nothing is missing | Refuses; a new value has to be named |
| Variations without a price | Creates them on your yes, after a warning that they cannot be bought |
| A new value close to an existing one | Warns and names the existing value |
| A SKU already used by another product | Creates the variation without that SKU |
| Removing an attribute would make variations identical | Refuses and lists the groups |
| A new attribute with no value for existing variations | Warns that they will sell every value |
| Removing every variation of a product | Warns that nothing will be buyable |
| A product name that already exists | Warns before creating a second product |
In the free version of BEAR, creating products and adding, removing and reshaping variations work as described here. Changing a product's type is not available through the connection, and later bulk edits of prices and stock follow the free version's field rules and its allowance of 100 products per 30 minutes.
Undo: what goes back, and how
Structural changes are not part of BEAR's history, so they are not undone with a rollback. Each has its own way back:
| Change | Way back |
|---|---|
| A new variable product | It is a draft until you publish it; delete it if it is wrong, and it goes to the trash |
| Variations added | Remove them by the ids the answer gave; they go to the trash |
| Variations removed | Restore them from the trash, then add the same combinations again if values were dropped |
| An attribute added | Remove the attribute again |
| An attribute removed | Add it back with the previous values, which the answer lists, and set each variation's value again |
| A new default | Set the previous one, which the preview showed |
| Prices, stock, sale prices | Roll back the bulk operation in BEAR's history |
Because the variations table is the only record of the structure before a change, ask for it before anything larger than a single new size. The free version keeps the last two bulk operations of each person in its history.
Ready prompts
- "Create a variable product Linen Shirt in White and Navy, sizes S to L, 39 each, 15 of each variation, in Shirts. Show me the table first."
- "Create a T-shirt in Red and Blue, sizes S and M, but only Red in L, 25 each."
- "Show me the variations of the Merino Hoodie as a table and tell me what is missing or duplicated."
- "Add XL to the Merino Hoodie in every colour, 64 each, 5 of each."
- "Create all missing variations of product 1234 at 59."
- "Add a Material attribute to the hoodie with Merino and Cotton; the existing variations are Merino."
- "Remove all the grey variations of the hoodie and stop offering grey on it."
- "Stop varying the T-shirt by colour, but keep the colour on the product page as information."
- "Make Black, M the preselected variation of the hoodie."
- "Create a Sleeve Length attribute with Short and Long."
Questions
Can AI generate all variations of a WooCommerce product from its attributes?
Yes, up to 200 per request: name the attributes and their values, and BEAR plans every combination. For a product you already sell, "create all missing variations" fills only the gaps.
Which AI assistants can create WooCommerce variations?
Any assistant that connects to an MCP server with a key: Claude in the browser, the desktop app and Claude Code, coding assistants such as Cursor, Windsurf and Zed, or your own agent. ChatGPT's custom connectors currently expect a sign-in flow, so a direct connection may not be available there yet.
Can the assistant set a different price for each size?
Yes. Give the prices in the request, "S and M 59, L and XL 64", and each row of the preview carries its own price. For a product that already exists, a price change by size is a bulk edit of the matching variations, recorded in history.
Checklist
- The MCP server is on in BEAR's settings and your assistant is connected.
- You asked for the table first and read the variation count.
- Attributes in the preview are the shop's ones (
pa_names) where customers filter by them. - No warning about a value similar to one the shop already has.
- Every row has a price, and the stock column shows stock per variation where you meant per variation.
- For an existing product, you looked at the missing, duplicate and "any" rows before adding.
- The new product is a draft: review it, add photos, then publish.
- You know the way back for each change: trash for variations, history for prices and stock.
If something behaves differently on your shop, ask on the BEAR support forum.