store/update-product-details changes the parts of a product that WooCommerce’s own product update does not reach: weight and dimensions, tax status and class, shipping class, the featured flag, catalogue visibility, menu order, purchase note, and the cross-sell and upsell lists.
For name, SKU, price, description, status and stock quantity, use WooCommerce’s own product update — it already handles those correctly.
At a glance
| Ability | store/update-product-details |
| Toolset | WooCommerce — toolset/woocommerce |
| Group | WooCommerce › Products & Variations |
| Requires | WooCommerce, active on the site |
| Capability | manage_options |
| Safety | Writes data |
| Repeatable | Idempotent — running it twice leaves the same result |
| Ships in | AcrossAI Abilities Manager 0.0.34 and later |
Filling the gap rather than duplicating it
WooCommerce ships a perfectly good product writer for the common fields. Reimplementing those here would mean two ways to set a price with different behaviour in the corners, which is worse than having one.
What it does not cover is the merchandising and logistics half of a product: how heavy it is, how it is taxed, which shipping class it falls in, whether it is featured, whether it appears in the catalogue or only in search, what is suggested alongside it.
Those are exactly the fields a shop owner asks about and exactly the ones that are awkward to set any other way.
WooCommerce keeps a lookup table beside the product. SKU search, price sorting, the on-sale query and several report queries read that table rather than the product itself — so a product can look perfectly correct on its own page while the shop answers every query about it with older values. Writing product meta directly is how that happens.
The write goes through WooCommerce’s save path, so the lookup table is refreshed, and the response reports its state.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
id | integer | Yes | Product ID. |
weight | string | No | Weight in the store’s unit. |
length | string | No | Length. |
width | string | No | Width. |
height | string | No | Height. |
tax_status | string | No | taxable, shipping or none. |
tax_class | string | No | Tax class slug. Empty string for standard. |
shipping_class_id | integer | No | Shipping class term ID. |
featured | boolean | No | Whether the product is featured. |
catalog_visibility | string | No | visible, catalog, search or hidden. |
menu_order | integer | No | Ordering within the catalogue. |
purchase_note | string | No | Note shown to the customer after purchase. |
cross_sell_ids | array | No | Product IDs to cross-sell. |
upsell_ids | array | No | Product IDs to upsell. |
What comes back
| Name | Type | What it is |
|---|---|---|
product | object | The product after the write. |
lookup_state | object | Whether the product lookup table still agrees with the product after the write. A mismatch means the shop is answering SKU searches, price sorts and on-sale queries with stale values. |
success | boolean | Whether the call completed. |
message | string | A one-line summary of what happened, suitable for showing a human. |
error_code | string | Present only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation. |
Example
Ask your assistant:
Set the shipping weight and dimensions on product 812.
It resolves to one call:
{
"ability": "store/update-product-details",
"parameters": {
"id": 812,
"weight": "1.4",
"length": "30",
"width": "20",
"height": "8"
}
}Worth knowing
- Name, SKU, price, description, status and stock belong to WooCommerce’s own product update.
- Idempotent.
catalog_visibilityset tohiddenremoves the product from the shop without unpublishing it — a common cause of “the product exists but nobody can find it”.- Cross-sell and upsell lists are replaced, not appended to.
Related abilities
- Get Product — read the current values
- Set Product Categories and Tags — the terms side
- List Shipping Classes — find the shipping class ID
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category