30 days free. No credit card. Full access from the moment you connect your site.

Start free trial

Update Product Details

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

Abilitystore/update-product-details
ToolsetWooCommerce — toolset/woocommerce
GroupWooCommerce › Products & Variations
RequiresWooCommerce, active on the site
Capabilitymanage_options
SafetyWrites data
RepeatableIdempotent — running it twice leaves the same result
Ships inAcrossAI 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

NameTypeRequiredWhat it is
idintegerYesProduct ID.
weightstringNoWeight in the store’s unit.
lengthstringNoLength.
widthstringNoWidth.
heightstringNoHeight.
tax_statusstringNotaxable, shipping or none.
tax_classstringNoTax class slug. Empty string for standard.
shipping_class_idintegerNoShipping class term ID.
featuredbooleanNoWhether the product is featured.
catalog_visibilitystringNovisible, catalog, search or hidden.
menu_orderintegerNoOrdering within the catalogue.
purchase_notestringNoNote shown to the customer after purchase.
cross_sell_idsarrayNoProduct IDs to cross-sell.
upsell_idsarrayNoProduct IDs to upsell.

What comes back

NameTypeWhat it is
productobjectThe product after the write.
lookup_stateobjectWhether 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.
successbooleanWhether the call completed.
messagestringA one-line summary of what happened, suitable for showing a human.
error_codestringPresent 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_visibility set to hidden removes 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 the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager

Browse the rest: Every ability, by category


Keep reading