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

Start free trial

Bulk Update Prices

store/bulk-update-prices changes the regular price across a set of products, either to a fixed amount or by a percentage.

It reports what it would do and changes nothing unless apply is true.

At a glance

Abilitystore/bulk-update-prices
ToolsetWooCommerce — toolset/woocommerce
GroupWooCommerce › Pricing & Sales
RequiresWooCommerce, active on the site
Capabilitymanage_options
SafetyWrites data
RepeatableNot idempotent — each call changes the row set, so re-running is not a no-op
Ships inAcrossAI Abilities Manager 0.0.34 and later

There is no undo

Repricing is not reversible from here: the old prices are not archived anywhere, and the only record of them is the report this call produces. Run it without apply first and keep that output. Every row comes back with the product, its old price and its new one, which is the closest thing to an undo that exists.

Why it will not reprice the whole store

The ability requires an explicit product list or a category. There is deliberately no “everything” option, and adding one would not be a convenience — it would be a single call that can change every price in a shop on the strength of one ambiguous sentence.

A category is the widest scope available, and it is wide enough for every legitimate bulk reprice while still being something a person can picture before agreeing to it.

The dry run is the default because the report is the only record of the old prices. Every row names the product, its old price and its new one, and that output is what you would need to put things back.

Percentage mode moves each price by a proportion; fixed mode sets them all to the same amount. Both are capped per call, and a hit cap is reported rather than silently truncating the change.

Sale prices are not touched. This is the regular price only — a product on sale keeps its sale price and gets a new price to return to.

Input

NameTypeRequiredWhat it is
modestringYesHow to apply the amount: a fixed price, or a percentage change.
amountstringYesThe new price, or the percentage to move by.
product_idsarrayOne of these twoProducts to change.
category_idintegerOne of these twoChange every product in this category instead.
applybooleanNo — defaults to falseMake the change. Without this the call only reports what it would do.
confirmbooleanYes — must be trueThe irreversibility gate. Without it the call is refused before anything is touched.

What comes back

NameTypeWhat it is
dry_runbooleanWhether this was a report rather than a change.
modestringThe mode used.
amountstringThe amount used.
countintegerHow many products are affected.
changesarrayOne row per product: its ID, its old price and its new price.
notestringAny cap warning.
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:

Put ten per cent on everything in the accessories category.

It resolves to one call:

{
  "ability": "store/bulk-update-prices",
  "parameters": {
    "mode": "percent",
    "amount": "10",
    "category_id": 44
  }
}

Worth knowing

  • Keep the dry-run output. It is the only record of the old prices.
  • A product list or a category is required — the whole store is not an option.
  • Regular prices only. Sale prices are untouched.
  • Capped per call; a hit cap is reported.

Related abilities


Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager

Browse the rest: Every ability, by category


Keep reading