wc_get_product_variations: list variations
Lists every variation of a variable product.
Arguments
| Argument | Required | Meaning |
|---|---|---|
product_id |
Yes | The parent product |
Permissions
mcp:read and woocommerce:catalog:read, plus manage_woocommerce or edit_products.
What it returns
items, each variation carrying id, parent_id, sku, price, regular_price, sale_price and attributes.
Not paginated — every variation is returned. A product with sixty variations returns sixty.
An empty result is ambiguous
The tool returns an empty list, without an error, when:
- the product has no variations;
- the product is not variable at all;
- the ID does not exist.
All three look identical. Read the product first with wc_get_product and check its type before concluding anything from an empty response.
That is the main gotcha here: an assistant told "this product has no variations" may simply have been given a simple product's ID.
This listing is your recovery record
Variations have no revision history for price or stock. Before any variation work — and especially before a batch — this listing is the only snapshot of the previous state.
List the variations for product 219 with every field, then stop.
Keep it. It is what you would restore from.
attributes explains which variation is which
Each variation's attributes map identifies its combination — size, colour and so on. That is how you tell variation 2204 from 2205 in a list where prices and SKUs may be similar.
It is also how you check the set is complete: a variable product with three sizes and four colours should have twelve variations, and a missing combination is a combination customers cannot buy.
Reading before a price rule
The listing exposes all three price fields per variation, so it answers the questions a bulk price change needs:
- Which variations are currently on sale?
- Do they share a regular price, or vary?
- Are any missing a price entirely?
A variation with no price is not purchasable, and it is easy to miss in the admin. This listing makes it obvious.
Using it well
List the variations for product 219 with their IDs, attributes, prices and SKUs.
Which variations of product 219 currently have a sale price?
Do the variations of product 219 cover every size and colour combination?
What it does not return
- No stock quantity. The listing omits it;
wc_get_variationincludes it. - No description. Also full-read only.
- No indication of purchasability. A variation missing a price is listed like any other.
That first point matters for stock work: you need the individual read for each variation, which makes a stock audit across a large product several calls.
Common problems
| Symptom | Cause |
|---|---|
| An empty list | No variations, not a variable product, or a wrong ID |
pom_ai_mcp_wc_forbidden |
Missing shop capability |
| Fewer variations than expected | Some combinations were never created |
| No stock in the response | Use wc_get_variation per variation |
| Prices that look inconsistent | Some variations are on sale |