WooCommerce ability reference
Reference for the GoBuildWP Pro 1.12.4 and Free 1.18.6 source. Installed schemas and policy remain authoritative.
This WooCommerce ability reference lists every call GoBuildWP Pro registers for WooCommerce products, orders, coupons and customers, with the exact slug an agent sends and what the plugin's own contract says it does. Of the 63, 25 read, 28 write and 10 are marked destructive in the source.
Read-only, write and destructive groups describe the source annotations. They do not establish a minimum safety profile, human approval or undo support. Those controls are separate: check the installed ability, the connected user and the active site policy before calling it. A read can still return sensitive data. These pages are not evidence that every operation passed an end-to-end runtime test.
What WooCommerce needs before these load
13 of the 63 also ship in GoBuildWP Free 1.18.6 under the same names, marked “Also in GoBuildWP Free” below. They need no GoBuildWP Pro licence, but each retains its own dependency, feature and permission checks. Where Free's copy does less, its own description follows Pro's. When Pro's richer copy passes its gates, it registers first and answers.
These 63 abilities come with GoBuildWP Pro 1.12.4. Pro registration requires the Freemius SDK to permit premium code and any companion dependency the module checks to be available. The floors below apply to the named dependencies or features; an optional add-on or newer feature floor does not necessarily disable the base module. wppilot/integration-health and the module's setup call describe the installed availability.
- Minimum (base)
- 9.0
WPPILOT_PRO_WOOCOMMERCE_MIN_VERSION - WooCommerce editions
- free
- Agent skills shipped
woocommerce-integration
Example WooCommerce input: wppilot/woocommerce-list-products
This one operation declares the 18 top-level input parameters below in wppilot/includes/kits/woo-basics/src/abilities/catalog.php, and none is required on its own. Other calls in this module take different arguments. Nested schemas and constraints are not expanded here; the complete live schema a connected client discovers is authoritative.
| Parameter | Type and meaning |
|---|---|
search | string. Substring match on title and sku. |
status | string one of publish, draft, pending, private |
type | string one of simple, variable, grouped, external |
category | string or integer. Slug or term id. |
tag | string or integer. Slug or term id. |
featured | boolean |
on_sale | boolean. true = only on-sale products; false = exclude on-sale products; omit for no filter. |
stock_status | string one of instock, outofstock, onbackorder |
sku | string. Exact match. |
include | array |
exclude | array |
modified_after | string. ISO 8601, server timezone. |
modified_before | string. ISO 8601, server timezone. |
limit | integer. Default 20, max 200 (clamped silently). |
offset | integer |
orderby | string one of date, title, sku, price, menu_order, popularity, rating |
order | string one of asc, desc |
fields | array. Opt-in extra sections per row. |
WooCommerce reads
| Ability | What it does |
|---|---|
wppilot/woocommerce-check-setupCheck WooCommerce SetupAlso in GoBuildWP Free | Reports the WooCommerce environment: whether WC is active, version, whether it meets the minimum (9.0), whether HPOS (High-Performance Order Storage) is the canonical order storage, whether the Block Checkout page is in use, store currency, default country, total published products (products_count counts published products only; to enumerate ALL products including drafts and pending, use list-products with no status filter), and known WC extensions detected on the site (subscriptions, bookings, brands, memberships, product-add-ons, advanced-shipping, stripe-gateway, woopayments, paypal-payments). Run this before any other WC ability to confirm the runtime is ready. |
wppilot/woocommerce-get-couponGet Coupon | Get one WooCommerce coupon by ID or code. |
wppilot/woocommerce-get-customerGet CustomerAlso in GoBuildWP Free | Get one WooCommerce customer account and aggregate order statistics. |
wppilot/woocommerce-get-orderGet OrderAlso in GoBuildWP Free | Get one order including addresses, items, totals, notes, and refunds. |
wppilot/woocommerce-get-productGet ProductAlso in GoBuildWP Free | Returns the full WC product object for one product, identified by id or slug (one is required). Includes augmented sections: images (with id, src, alt, position), categories ({id,slug,name}), tags ({id,slug,name}), attributes (id, name, slug, options[]), variations (id list, full variation objects via get-product-variation), meta_data (caller-visible meta only; underscore-prefixed system keys are filtered out), price_html (rendered HTML price string). Date fields normalized to ISO 8601 strings. |
wppilot/woocommerce-get-product-variationGet Product VariationAlso in GoBuildWP Free | Returns the full variation object for a single product variation, identified by id. Includes: id, parent_id, name (auto-derived from parent; use attributes_summary e.g. "M / Red" to identify the specific variation), sku, status, attributes (structured + summary), regular_price, sale_price, price, manage_stock, stock_quantity, stock_status, weight, dimensions, image_id, image_src, description, description_truncated, virtual, downloadable, shipping_class, is_default, date_modified. description_truncated is true when the stored description exceeded 64 KB and was truncated in this response. Price fields reflect WooCommerce's filter chain (same value the storefront sees). Plugins that filter price at runtime will affect this output. Possible errors: wc_invalid_input, wc_not_found (variation does not exist). |
wppilot/woocommerce-get-store-settingsGet WooCommerce Store SettingsAlso in GoBuildWP Free | Returns the store-level settings that affect product display and pricing: currency, currency symbol and position, thousand and decimal separators, number of decimals, weight and dimension units, default country, and the store base address. Pulled from a mix of WC helpers and direct option reads (woocommerce_* options). |
wppilot/woocommerce-list-couponsList Coupons | List bounded WooCommerce coupons. |
wppilot/woocommerce-list-customersList CustomersAlso in GoBuildWP Free | List bounded WooCommerce customer accounts without password or token data. |
wppilot/woocommerce-list-ordersList OrdersAlso in GoBuildWP Free | List bounded WooCommerce orders with pagination and status filtering. |
wppilot/woocommerce-list-payment-gatewaysList Payment Gateways | List gateway status and declared capabilities without returning secrets. |
wppilot/woocommerce-list-product-attribute-termsList Product Attribute Terms | Returns the terms (options) registered under a global product attribute. |
wppilot/woocommerce-list-product-attributesList Product Attributes | Returns all global product attributes (the ones defined under Products → Attributes in the admin). Each item carries the attribute id, name, taxonomy slug (with pa_ prefix as stored), display type, sort order, and the available terms with id/slug/name. Per-product attributes that are NOT registered as global attributes are not enumerated here; they appear inside get-product instead. |
wppilot/woocommerce-list-product-categoriesList Product CategoriesAlso in GoBuildWP Free | Returns the WooCommerce product categories. Tree-shaped: each item carries parent_id (term id) and parent_slug so callers can build the hierarchy. Includes empty categories by default. Use hide_empty: true to exclude categories that have zero published products. The search filter does substring match on the name field. Default limit is 50; pass limit to fetch more. Pass include_thumbnail: true to fetch the featured image id and URL per category; omitted by default to reduce payload. The parent and parent_id filter inputs are interchangeable; provide one or the other, not both. |
wppilot/woocommerce-list-product-shipping-classesList Product Shipping Classes | Returns all WooCommerce shipping classes (taxonomy: product_shipping_class). |
wppilot/woocommerce-list-product-statusesList Product Statuses | Returns the post statuses applicable to WC products: publish, draft, pending, private, trash. Use the slugs when filtering list-products by status or when picking a status in create-product or edit-product. |
wppilot/woocommerce-list-product-tagsList Product TagsAlso in GoBuildWP Free | Returns WooCommerce product tags as a flat list; tags have no parent hierarchy (unlike categories). In GoBuildWP Free: Returns WooCommerce product tags as a flat list; tags have no parent hierarchy (unlike categories). Pagination: |
wppilot/woocommerce-list-product-typesList Product Types | Returns the WC product types available on the site. The catalog distinguishes simple, variable, grouped and external product types from the virtual and downloadable flags. Custom types registered by third-party plugins are not enumerated in this release. |
wppilot/woocommerce-list-product-variationsList Product VariationsAlso in GoBuildWP Free | Returns a paginated compact list of variations for a variable product. Required: parent_id. Each row: id, parent_id, sku, attributes_summary (e.g. "M / Red"), regular_price, sale_price, stock_status, stock_quantity, is_default. Optional fields: ["full"] to include all variation fields per row. Pagination: limit (default 50, max 200), offset. Ordering: orderby (id|menu_order|date), order (asc|desc). The default compact shape is ~200 bytes per variation. Passing fields: ["full"] returns ~800 bytes per variation. Plan limit accordingly when expanding. Possible errors: wc_invalid_input, wc_not_found (parent does not exist), wc_not_variable_parent (parent is not a variable product, including WooCommerce Subscriptions variable-subscription). On multilingual sites (WPML, Polylang), translated copies of a variation may appear as separate rows. |
wppilot/woocommerce-list-productsList ProductsAlso in GoBuildWP Free | Returns a paginated list of WC products with a 15-field compact shape: id, name, slug, sku, status, type, stock_status, stock_quantity, manage_stock, price, regular_price, sale_price, featured, permalink, date_modified. Use fields to opt into extra sections per row: categories, tags, images, attributes, dimensions, meta_data, variations (id list), brands (only when WooCommerce Brands is active). Filters: search (title+sku), status, type, category (slug|id), tag (slug|id), featured, on_sale (true=only on-sale; false=exclude on-sale), stock_status, sku (exact), include[], exclude[], modified_after, modified_before. Paging: limit (default 20, max 200; clamped silently), offset. Ordering: orderby (date/title/sku/price/menu_order/popularity/rating), order (asc/desc). |
wppilot/woocommerce-list-refundsList Refunds | List refunds recorded against one order. |
wppilot/woocommerce-list-reviewsList Product Reviews | List bounded product reviews by approval state or product. |
wppilot/woocommerce-list-shipping-zonesList Shipping Zones | List WooCommerce shipping zones and configured methods. |
wppilot/woocommerce-list-tax-ratesList Tax Rates | List a bounded set of WooCommerce tax rates without exposing credentials. |
wppilot/woocommerce-sales-summarySales Summary | Aggregate bounded order counts and stored order totals for a date range. |
WooCommerce writes
| Ability | What it does |
|---|---|
wppilot/woocommerce-add-order-noteAdd Order Note | Add a private or customer-visible note to an order. |
wppilot/woocommerce-bulk-update-pricesBulk Update Prices | Change regular and/or sale prices on up to 100 products or variations in one call: set a price, or raise/lower by a percent or a fixed amount, with a rounding rule; optionally set or clear the sale schedule. Select by product_ids, skus, or category/tag (paginated with cursor/next_cursor). Run with dry_run: true first: it returns every item's before and after and writes nothing. The real write requires confirm: true. Each item is reported as updated, unchanged or failed; a failure never stops the other items. Every product written gets its own change-ledger entry (item_change_ids), so any one of them can be undone with wppilot/rollback-change. |
wppilot/woocommerce-bulk-update-stockBulk Update Stock | Change stock on up to 100 products or variations in one call, each by id or SKU: set or adjust the quantity, set stock status, turn stock management on or off, set backorders. apply sets the same change on every item; per-item fields override it. Run with dry_run: true first: it returns every item's before and after and writes nothing. The real write requires confirm: true. Each item is reported as updated, unchanged or failed; a failure never stops the other items. Every product written gets its own change-ledger entry (item_change_ids). Variable parents and grouped/external products are refused: stock is set per variation. |
wppilot/woocommerce-create-couponCreate Coupon | Create a validated WooCommerce coupon. |
wppilot/woocommerce-create-customerCreate Customer | Create a WooCommerce customer account (a WordPress user with the customer role) from an email address, with optional names and billing/shipping addresses. A username and password are generated; the password is never returned. send_account_email (default false) sends WooCommerce's new-account email, which lets the customer set a password. Customer accounts cannot be rolled back from the change ledger. |
wppilot/woocommerce-create-orderCreate Order | Create a WooCommerce order for a customer (customer_id) or a guest (billing, optional shipping), with line items, optional coupons, shipping lines and fees. Totals are calculated by WooCommerce. No payment is taken or recorded. Status defaults to pending; on-hold, processing and completed reduce stock and send WooCommerce's order emails, so they require confirm: true. send_invoice (default false) emails the customer the payment link. Orders cannot be rolled back from the change ledger. |
wppilot/woocommerce-create-productCreate Product | Creates a new WooCommerce product. Supported types: simple and variable. Grouped and external products cannot be created here. Returns the full product object on success. WP-native field aliases are accepted: post_title = name, post_name = slug, post_status = status, post_content = description, post_excerpt = short_description. Required: name (or post_title). For type=variable: at least one attribute must have variation: true; stock fields (manage_stock, stock_quantity, stock_status) are rejected (stock lives on variations). SKU must be unique across the catalog; duplicate returns wc_sku_exists (HTTP 409). Image fields (featured_image_id, gallery_image_ids) accept media-library attachment ids only. status must be one of publish, draft, pending, private. Prices must be non-negative numeric strings. When manage_stock: true on a simple product, stock_quantity is required. Text fields are stored exactly as given, backslashes included. Note: if a third-party plugin hooks save_post_product and throws after the product is inserted, the ability returns an error but the product may remain in the database. Brands are read-only; the input schema rejects a brands field. Possible errors: wc_invalid_input, wc_sku_exists, wc_not_found (for missing category/tag/brand slug), wc_attachment_not_found, wc_post_type_mismatch, wc_internal_error. |
wppilot/woocommerce-create-product-attributeCreate Product Attribute | Creates a new global WooCommerce product attribute (e.g. Size, Color). |
wppilot/woocommerce-create-product-attribute-termCreate Product Attribute Term | Creates a new term (option) inside a global product attribute. |
wppilot/woocommerce-create-product-categoryCreate Product Category | Creates a new WooCommerce product category (taxonomy: product_cat). Returns the full category object on success. |
wppilot/woocommerce-create-product-shipping-classCreate Product Shipping Class | Creates a new WooCommerce shipping class (taxonomy: product_shipping_class). |
wppilot/woocommerce-create-product-tagCreate Product Tag | Creates a new WooCommerce product tag (taxonomy: product_tag). Returns the full tag object on success. |
wppilot/woocommerce-create-product-variationCreate Product Variation | Creates a new variation for a variable product. Required: parent_id, attributes (must be non-empty). The attributes list must map every variation-enabled attribute on the parent to an option. Each entry: {"taxonomy_slug": "pa_size", "option": "M"} for global attributes, or {"name": "Material", "option": "Cotton"} for custom attributes. Exactly one of taxonomy_slug or name per entry. The option must be in the parent's attribute options list. Variation name is auto-derived (cannot be set via name). Pass is_default: true to mark this variation as the storefront default. SKU must be unique if provided. Note: if you set regular_price below an existing sale_price, WooCommerce automatically clears sale_price. To set both, supply them together. WP-native alias: post_excerpt = description. Text fields are stored exactly as given, backslashes included. Returns the full variation object on success. Possible errors: wc_invalid_input, wc_not_found (parent does not exist), wc_not_variable_parent (also returned for WooCommerce Subscriptions variable-subscription), wc_attribute_not_variable, wc_option_not_on_parent, wc_sku_exists, wc_attachment_not_found, wc_internal_error. |
wppilot/woocommerce-edit-productEdit ProductAlso in GoBuildWP Free | Partially updates (PATCH semantics) a WooCommerce product. Only fields present in the input are changed; absent fields stay as-is. Requires id OR slug to identify the product. WP-native field aliases are accepted: post_title = name, post_name = slug, post_status = status, post_content = description, post_excerpt = short_description. Changing product type is not supported; create a new product with the desired type instead. SKU must remain unique; collisions return wc_sku_exists (HTTP 409). status must be one of publish, draft, pending, private. Prices must be non-negative numeric strings; pass null to clear sale_price. Pass featured_image_id: 0 to clear the featured image. Trashed attachments are rejected. A trashed product cannot be edited here (the wc_not_found guard rejects trashed posts). To bring one back, restore it from the Trash with wppilot/restore-post or the "Restore" link under Products > Trash; WordPress usually returns it as a draft, so publish it again afterwards. A trash made by wppilot/woocommerce-delete-product can also be undone from the change log. Never force-delete a trashed product to get it back: force deletion permanently removes the product and its variations, and only a site backup can recover them. Text fields are stored exactly as given, backslashes included. Undo an edit with wppilot/rollback-change. On a product that manages its stock, an edit that does not pass manage_stock, stock_quantity or stock_status is undone with the live stock level kept (sales since the edit stay counted); an edit that does pass one of them cannot be undone, because restoring the old level would erase those sales. Brand assignment is read-only via this ability; agents can read but not write the brands field. Direct WP admin or wp_set_object_terms can assign brands. Passing categories: [] removes all explicit category assignments; WooCommerce then moves the product into the Uncategorized default category, so agents cannot intentionally leave a product with zero categories. Possible errors: wc_invalid_input, wc_not_found, wc_sku_exists, wc_attachment_not_found, wc_post_type_mismatch, wc_internal_error.In GoBuildWP Free: Basic product editor: changes a WooCommerce product's name, description, regular and sale price, and stock (manage_stock, stock_quantity, stock_status). PATCH semantics: only the fields given change. Identify the product with |
wppilot/woocommerce-edit-product-attributeEdit Product Attribute | Partially updates an existing global product attribute (PATCH semantics). Required: id. |
wppilot/woocommerce-edit-product-attribute-termEdit Product Attribute Term | Partially updates an existing attribute term (option) inside a global product attribute (PATCH semantics). |
wppilot/woocommerce-edit-product-categoryEdit Product Category | Partially updates (PATCH semantics) a WooCommerce product category. Only fields present in the input are changed. Requires id. |
wppilot/woocommerce-edit-product-shipping-classEdit Product Shipping Class | Partially updates an existing shipping class (PATCH semantics). Required: id. Optional: name, slug, description. |
wppilot/woocommerce-edit-product-tagEdit Product Tag | Partially updates (PATCH semantics) a WooCommerce product tag. Only fields present in the input are changed. Requires id. |
wppilot/woocommerce-edit-product-variationEdit Product Variation | Partially updates (PATCH semantics) a product variation. Only fields present in the input are changed; absent fields stay as-is. Required: id. Variation name is auto-derived and cannot be set (name is rejected). When the attributes field is present, it fully replaces the variation's attribute combination. List every attribute the variation should carry, not just the ones being changed. Price fields must be non-negative numeric strings; pass null to clear regular_price or sale_price. Note: if you lower regular_price below the current sale_price, WooCommerce automatically clears sale_price. To change both, set them together. Pass image_id: 0 to clear the variation image. SKU must be unique if provided. is_default: true marks this variation as the storefront default (replaces any prior default). is_default: false clears the default if this variation is currently default. When you set manage_stock: false, WooCommerce clears stock_quantity. To re-enable stock management, re-supply stock_quantity. WP-native alias: post_excerpt = description. Text fields are stored exactly as given, backslashes included. Returns the full variation object after the update. Concurrent edits on the same variation follow last-write-wins: the later save overwrites the earlier one, and nothing locks the variation or warns about a conflicting edit, so re-read it after a write when someone else may be editing. Possible errors: wc_invalid_input, wc_not_found (variation does not exist), wc_attribute_not_variable, wc_option_not_on_parent, wc_sku_exists, wc_attachment_not_found, wc_internal_error. |
wppilot/woocommerce-manage-shipping-zoneManage Shipping Zone | Create, rename or delete a shipping zone; replace its regions (countries, states, continents) and postcodes; add, update or remove its shipping methods and their settings (e.g. flat_rate cost, free_shipping min_amount). Omit zone_id to create a zone (name required). zone_id 0 is "Locations not covered by your other zones": it has methods but no name or regions and cannot be deleted. delete and remove_methods require confirm: true. Method settings are validated against the method's own form fields. Changes to method settings only are reversible from the change ledger; any change to the zone itself, its regions, or its method list is not. |
wppilot/woocommerce-manage-tax-rateManage Tax Rate | Create, update or delete a WooCommerce tax rate in a tax class (standard, or a class slug such as reduced-rate / zero-rate): country, state, postcodes, cities, rate percent, name, priority, compound, and whether it applies to shipping. delete requires confirm: true. Tax rates live in WooCommerce's tax tables and cannot be rolled back from the change ledger; the result includes the rate as it was. |
wppilot/woocommerce-moderate-reviewModerate Product Review | Change a product review moderation status. |
wppilot/woocommerce-update-couponUpdate Coupon | Update supported fields on a WooCommerce coupon. |
wppilot/woocommerce-update-customerUpdate Customer | Update a customer's email, names, display name, and billing/shipping addresses. Never changes password, username or role. Refuses accounts that hold any role other than customer or subscriber. Returns the previous values; customer accounts cannot be rolled back from the change ledger. |
wppilot/woocommerce-update-gateway-settingsUpdate Payment Gateway Settings | Enable or disable a payment gateway and change its title, description and other non-secret settings. Any field that holds a credential (a password field, or a key named like key/secret/token/password) is refused and never returned: the merchant enters credentials in WooCommerce. Enabling or disabling requires confirm: true, because it changes what customers can pay with at checkout. dry_run: true returns the gateway's current non-secret settings, the writable keys, and the planned change without writing. Reversible from the change ledger. |
wppilot/woocommerce-update-orderUpdate Order | Edit an existing order: billing/shipping address, customer note, add/remove/requantify line items (totals recalculated), add/remove coupons, add shipping and fee lines. Never touches payment, and does not change status (use update-order-status). Orders that have refunds, or are completed or refunded, need confirm: true. Stock is not adjusted for line-item changes. Adds a private order note "Edited by GoBuildWP: ..." listing what changed. Orders cannot be rolled back from the change ledger. |
wppilot/woocommerce-update-order-statusUpdate Order Status | Update an order status with an optional private order note. |
Destructive WooCommerce calls
| Ability | What it does |
|---|---|
wppilot/woocommerce-create-refundCreate Refund | Create a confirmed WooCommerce refund; gateway refunding is opt-in. |
wppilot/woocommerce-delete-couponDelete Coupon | Permanently delete a WooCommerce coupon. |
wppilot/woocommerce-delete-productDelete Product | Deletes a WooCommerce product. Requires id OR slug. Default behaviour is soft delete (product moves to trash; status returns trash in the response). Pass force: true for permanent deletion (returns deleted_id instead of the product object). Soft-deleting an already-trashed product is an idempotent no-op. Force-deleting an already-trashed product permanently removes it. For variable products, force: true also permanently deletes all child variations before removing the parent. Recovery: a soft delete can be undone from the change log or restored from the Trash with wppilot/restore-post; a force delete cannot be undone, and only a site backup can bring the product back. On a variable product with many variations, soft-delete may take several seconds while WooCommerce recomputes aggregate fields on the parent. Force-delete uses suspended cache invalidation to stay fast. Possible errors: wc_invalid_input, wc_not_found, wc_post_type_mismatch, wc_internal_error. |
wppilot/woocommerce-delete-product-attributeDelete Product Attribute | Deletes a global product attribute definition. Required: id. Optional: force (bool, default false). |
wppilot/woocommerce-delete-product-attribute-termDelete Product Attribute Term | Deletes a single term (option) from a global product attribute. Required: id (term id). Optional: force (bool, default false). |
wppilot/woocommerce-delete-product-categoryDelete Product Category | Deletes a WooCommerce product category. Requires id. |
wppilot/woocommerce-delete-product-shipping-classDelete Product Shipping Class | Deletes a WooCommerce shipping class. Required: id. Optional: force (bool, default false). |
wppilot/woocommerce-delete-product-tagDelete Product Tag | Deletes a WooCommerce product tag. Requires id. |
wppilot/woocommerce-delete-product-variationDelete Product Variation | Deletes a single product variation. Requires id. Default behaviour is soft delete (variation moves to trash; status returns trash in the response). Pass force: true for permanent deletion (returns deleted_id); a force delete cannot be undone, and only a site backup can bring the variation back. Soft-deleting an already-trashed variation is an idempotent no-op. If this variation was the storefront default, the default is cleared on the parent before deletion. The parent product is not affected. If the parent product is currently in trash, this ability still deletes the variation. To restore the parent and its variations later, untrash the parent before deleting individual variations. Possible errors: wc_invalid_input, wc_not_found (variation does not exist), wc_internal_error. |
wppilot/woocommerce-delete-reviewDelete Product Review | Delete a product review, using trash by default. |
For the task-level view of WooCommerce, with worked requests and what to check afterwards, see WooCommerce integration page.