<!-- BusyBot node reference — https://busybot.net/tools/woocommerce/ -->

> Node: WooCommerce (`woocommerce`) · Action · v1
> Category: Sales · Credentials: WooCommerce API (`woocommerceApi`)
> Updated: 2026-08-16

# WooCommerce

> Manage products, orders, and customers on WooCommerce

## Overview

WooCommerce is an open-source e-commerce plugin for WordPress. This tool interacts with the WooCommerce REST API v3 to create, read, update, and delete products, orders, and customers. It supports Basic Auth and query parameter authentication, page-based pagination for listing operations, and handles all standard WooCommerce data structures including line items, billing/shipping addresses, coupons, fees, metadata, and product attributes.

**Category:** Sales  
**Tool Name:** `woocommerce`  
**Version:** 1

**Appearance:** Icon: `si-woocommerce` | Color: `#96588a`

## Node Type

**Action** — processes input items and produces output

## Input / Output

| Direction | Port(s) |
|-----------|--------|
| Input | `Input` |
| Output | `Output`, `Error` |

## Credentials

This tool requires **WooCommerce API** credentials.
See the [Credentials Guide](https://busybot.net/credentials/woocommerce-api/) for setup instructions.

### Resources

| Resource | Value |
|----------|-------|
| Customer | `customer` |
| Order | `order` |
| Product | `product` |

### Operations

All three resources offer the same five operations. Pick the resource first, then the operation.

| Operation | Value |
|-----------|-------|
| Create | `create` |
| Delete | `delete` |
| Get | `get` |
| Get Many | `getAll` |
| Update | `update` |

### Parameters

Fixed collections nest their entries under a group key — `dimensionsValues`, `imagesValues`, `metadataValues`, `billingValues`, `shippingValues`, `lineItemsValues`, `couponLinesValues`, `feeLinesValues`, `shippingLinesValues`. **Dimensions**, **Billing** and **Shipping** hold a single record each; the others hold a list.

#### Product: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Name | `string` | Yes | — | Product name. |
| Additional Fields (`additionalFields`) | `collection` | No | `{}` | Optional properties to set on the new product. |
| — Backorders | `options` | No | `no` | If managing stock, this controls if backorders are allowed. |
| | | | | Options: `no`, `notify`, `yes` |
| — Button Text (`buttonText`) | `string` | No | — | Product external button text. Only for external products. |
| — Catalog Visibility (`catalogVisibility`) | `options` | No | `visible` | — |
| | | | | Options: `catalog`, `hidden`, `search`, `visible` |
| — Categories | `string` | No | — | Comma-separated list of category IDs. Find IDs in WooCommerce admin under Products > Categories. |
| — Cross Sell IDs (`crossSellIds`) | `string` | No | — | Comma-separated list of cross-sell product IDs. |
| — Date On Sale From (`dateOnSaleFrom`) | `string` | No | — | Start date of sale price, in the site timezone (ISO8601). |
| — Date On Sale To (`dateOnSaleTo`) | `string` | No | — | End date of sale price, in the site timezone (ISO8601). |
| — Description | `string` | No | — | Product description. |
| — Downloadable | `boolean` | No | `false` | Whether the product is downloadable. |
| — External URL (`externalUrl`) | `string` | No | — | Product external URL. Only for external products. |
| — Featured | `boolean` | No | `false` | Whether the product is featured. |
| — Manage Stock (`manageStock`) | `boolean` | No | `false` | Whether stock management is enabled at product level. |
| — Menu Order (`menuOrder`) | `number` | No | `1` | Menu order, used to custom sort products. |
| — Parent ID (`parentId`) | `string` | No | — | Product parent ID. |
| — Purchase Note (`purchaseNote`) | `string` | No | — | Optional note to send the customer after purchase. |
| — Regular Price (`regularPrice`) | `string` | No | — | Product regular price. |
| — Reviews Allowed (`reviewsAllowed`) | `boolean` | No | `true` | Whether to allow reviews. |
| — Sale Price (`salePrice`) | `string` | No | — | Product sale price. |
| — Shipping Class (`shippingClass`) | `string` | No | — | Shipping class slug. |
| — Short Description (`shortDescription`) | `string` | No | — | Product short description. |
| — SKU | `string` | No | — | Unique product identifier. |
| — Slug | `string` | No | — | Product slug. |
| — Sold Individually (`soldIndividually`) | `boolean` | No | `false` | Whether to allow one item to be bought in a single order. |
| — Status | `options` | No | `publish` | Product status. |
| | | | | Options: `draft`, `pending`, `private`, `publish` |
| — Stock Quantity (`stockQuantity`) | `number` | No | `1` | Stock quantity. |
| — Stock Status (`stockStatus`) | `options` | No | `instock` | Controls the stock status of the product. |
| | | | | Options: `instock`, `outofstock`, `onbackorder` |
| — Tags | `string` | No | — | Comma-separated list of tag IDs. Find IDs in WooCommerce admin under Products > Tags. |
| — Tax Class (`taxClass`) | `string` | No | — | Product tax class. |
| — Tax Status (`taxStatus`) | `options` | No | `taxable` | — |
| | | | | Options: `taxable`, `shipping`, `none` |
| — Type | `options` | No | `simple` | Product type. |
| | | | | Options: `simple`, `grouped`, `external`, `variable` |
| — Upsell IDs (`upsellIds`) | `string` | No | — | Comma-separated list of up-sell product IDs. |
| — Virtual | `boolean` | No | `false` | Whether the product is virtual. |
| — Weight | `string` | No | — | Product weight. |
| Dimensions (`dimensionsUi`) | `fixedCollection` | No | `{}` | Product dimensions. Holds one record under `dimensionsValues`. |
| — Height | `string` | No | — | — |
| — Length | `string` | No | — | — |
| — Width | `string` | No | — | — |
| Images (`imagesUi`) | `fixedCollection` | No | `{}` | Product images (by URL). Holds a list under `imagesValues`. |
| — Alt | `string` | No | — | Image alternative text. |
| — Src | `string` | No | — | Image URL. |
| — Name | `string` | No | — | Image name. |
| Metadata (`metadataUi`) | `fixedCollection` | No | `{}` | Product metadata. Holds a list under `metadataValues`. |
| — Key | `string` | No | — | — |
| — Value | `string` | No | — | — |

#### Product: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Product ID (`productId`) | `string` | Yes | — | ID of the product to update. |
| Update Fields (`updateFields`) | `collection` | No | `{}` | Product fields to change. Only the fields you add are sent. |
| — Backorders | `options` | No | `no` | — |
| | | | | Options: `no`, `notify`, `yes` |
| — Button Text (`buttonText`) | `string` | No | — | — |
| — Catalog Visibility (`catalogVisibility`) | `options` | No | `visible` | — |
| | | | | Options: `visible`, `catalog`, `search`, `hidden` |
| — Categories | `string` | No | — | Comma-separated list of category IDs. |
| — Cross Sell IDs (`crossSellIds`) | `string` | No | — | — |
| — Date On Sale From (`dateOnSaleFrom`) | `string` | No | — | — |
| — Date On Sale To (`dateOnSaleTo`) | `string` | No | — | — |
| — Description | `string` | No | — | — |
| — Downloadable | `boolean` | No | `false` | — |
| — External URL (`externalUrl`) | `string` | No | — | — |
| — Featured | `boolean` | No | `false` | — |
| — Manage Stock (`manageStock`) | `boolean` | No | `false` | — |
| — Menu Order (`menuOrder`) | `number` | No | `1` | — |
| — Name | `string` | No | — | Product name. |
| — Parent ID (`parentId`) | `string` | No | — | — |
| — Purchase Note (`purchaseNote`) | `string` | No | — | — |
| — Regular Price (`regularPrice`) | `string` | No | — | — |
| — Reviews Allowed (`reviewsAllowed`) | `boolean` | No | `true` | — |
| — Sale Price (`salePrice`) | `string` | No | — | — |
| — Shipping Class (`shippingClass`) | `string` | No | — | — |
| — Short Description (`shortDescription`) | `string` | No | — | — |
| — SKU | `string` | No | — | — |
| — Slug | `string` | No | — | — |
| — Sold Individually (`soldIndividually`) | `boolean` | No | `false` | — |
| — Status | `options` | No | `publish` | — |
| | | | | Options: `draft`, `pending`, `private`, `publish` |
| — Stock Quantity (`stockQuantity`) | `number` | No | `1` | — |
| — Stock Status (`stockStatus`) | `options` | No | `instock` | — |
| | | | | Options: `instock`, `outofstock`, `onbackorder` |
| — Tags | `string` | No | — | Comma-separated list of tag IDs. |
| — Tax Class (`taxClass`) | `string` | No | — | — |
| — Tax Status (`taxStatus`) | `options` | No | `taxable` | — |
| | | | | Options: `taxable`, `shipping`, `none` |
| — Type | `options` | No | `simple` | — |
| | | | | Options: `simple`, `grouped`, `external`, `variable` |
| — Upsell IDs (`upsellIds`) | `string` | No | — | — |
| — Virtual | `boolean` | No | `false` | — |
| — Weight | `string` | No | — | — |
| Dimensions (`dimensionsUi`) | `fixedCollection` | No | `{}` | Product dimensions. Holds one record under `dimensionsValues`. |
| — Height | `string` | No | — | — |
| — Length | `string` | No | — | — |
| — Width | `string` | No | — | — |
| Images (`imagesUi`) | `fixedCollection` | No | `{}` | Product images (by URL). Holds a list under `imagesValues`. |
| — Alt | `string` | No | — | Image alternative text. |
| — Src | `string` | No | — | Image URL. |
| — Name | `string` | No | — | Image name. |
| Metadata (`metadataUi`) | `fixedCollection` | No | `{}` | Product metadata. Holds a list under `metadataValues`. |
| — Key | `string` | No | — | — |
| — Value | `string` | No | — | — |

#### Product: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Product ID (`productId`) | `string` | Yes | — | ID of the product to retrieve. |

#### Product: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. Accepts 1–100. _(shown when Return All is `false`)_ |
| Options (`options`) | `collection` | No | `{}` | Query filters for the product list. |
| — After | `string` | No | — | Limit response to resources published after a given ISO8601 date. |
| — Before | `string` | No | — | Limit response to resources published before a given ISO8601 date. |
| — Category | `string` | No | — | Category ID to filter by. Find IDs in WooCommerce admin under Products > Categories. |
| — Context | `options` | No | `view` | Scope under which the request is made. |
| | | | | Options: `view`, `embed`, `edit` |
| — Featured | `boolean` | No | `false` | Whether to limit to featured products. |
| — Max Price (`maxPrice`) | `string` | No | — | Limit result set to products based on a maximum price. |
| — Min Price (`minPrice`) | `string` | No | — | Limit result set to products based on a minimum price. |
| — Order | `options` | No | `desc` | — |
| | | | | Options: `asc`, `desc` |
| — Order By (`orderBy`) | `options` | No | `id` | — |
| | | | | Options: `date`, `id`, `include`, `slug`, `title` |
| — Search | `string` | No | — | Limit results to those matching a string. |
| — SKU | `string` | No | — | Limit result set to products with a specific SKU. |
| — Slug | `string` | No | — | Limit result set to products with a specific slug. |
| — Status | `options` | No | `any` | — |
| | | | | Options: `any`, `draft`, `pending`, `private`, `publish` |
| — Stock Status (`stockStatus`) | `options` | No | — | — |
| | | | | Options: `instock`, `outofstock`, `onbackorder` |
| — Tag | `string` | No | — | Tag ID to filter by. Find IDs in WooCommerce admin under Products > Tags. |
| — Tax Class (`taxClass`) | `options` | No | — | — |
| | | | | Options: `standard`, `reduced-rate`, `zero-rate` |
| — Type | `options` | No | `simple` | — |
| | | | | Options: `simple`, `grouped`, `external`, `variable` |

#### Product: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Product ID (`productId`) | `string` | Yes | — | ID of the product to delete. |

#### Order: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Additional Fields (`additionalFields`) | `collection` | No | `{}` | Optional properties to set on the new order. |
| — Currency | `string` | No | — | Currency the order was created with (e.g. USD, EUR). |
| — Customer ID (`customerId`) | `string` | No | — | User ID who owns the order. 0 for guests. |
| — Customer Note (`customerNote`) | `string` | No | — | Note left by customer during checkout. |
| — Parent ID (`parentId`) | `string` | No | — | Parent order ID. |
| — Payment Method ID (`paymentMethodId`) | `string` | No | — | Payment method ID (e.g. bacs, cheque, cod, paypal). |
| — Payment Method Title (`paymentMethodTitle`) | `string` | No | — | Payment method title. |
| — Set Paid (`setPaid`) | `boolean` | No | `false` | Whether the order is paid. Will set status to processing and reduce stock. |
| — Status | `options` | No | `pending` | Order status. |
| | | | | Options: `cancelled`, `completed`, `failed`, `on-hold`, `pending`, `processing`, `refunded`, `trash` |
| — Transaction ID (`transactionID`) | `string` | No | — | Unique transaction ID. |
| Billing (`billingUi`) | `fixedCollection` | No | `{}` | Billing address. Holds one record under `billingValues`. |
| — First Name (`firstName`) | `string` | No | — | — |
| — Last Name (`lastName`) | `string` | No | — | — |
| — Company | `string` | No | — | — |
| — Address Line 1 (`address_1`) | `string` | No | — | — |
| — Address Line 2 (`address_2`) | `string` | No | — | — |
| — City | `string` | No | — | — |
| — Postal Code (`postcode`) | `string` | No | — | — |
| — Country | `string` | No | — | — |
| — Email | `string` | No | — | — |
| — Phone | `string` | No | — | — |
| Shipping (`shippingUi`) | `fixedCollection` | No | `{}` | Shipping address. Holds one record under `shippingValues`. |
| — First Name (`firstName`) | `string` | No | — | — |
| — Last Name (`lastName`) | `string` | No | — | — |
| — Company | `string` | No | — | — |
| — Address Line 1 (`address_1`) | `string` | No | — | — |
| — Address Line 2 (`address_2`) | `string` | No | — | — |
| — City | `string` | No | — | — |
| — Postal Code (`postcode`) | `string` | No | — | — |
| — Country | `string` | No | — | — |
| Line Items (`lineItemsUi`) | `fixedCollection` | No | `{}` | Line item data. Holds a list under `lineItemsValues`. |
| — Name | `string` | No | — | Product name. |
| — Product ID (`productId`) | `number` | No | `0` | — |
| — Variation ID (`variationId`) | `number` | No | `0` | Variation ID, if applicable. |
| — Quantity | `number` | No | `1` | — |
| — Tax Class (`taxClass`) | `string` | No | — | — |
| — Subtotal | `string` | No | — | Line subtotal (before discounts). |
| — Total | `string` | No | — | Line total (after discounts). |
| Coupon Lines (`couponLinesUi`) | `fixedCollection` | No | `{}` | Coupon line data. Holds a list under `couponLinesValues`. |
| — Code | `string` | No | — | Coupon code. |
| Fee Lines (`feeLinesUi`) | `fixedCollection` | No | `{}` | Fee line data. Holds a list under `feeLinesValues`. |
| — Name | `string` | No | — | Fee name. |
| — Tax Class (`taxClass`) | `string` | No | — | — |
| — Tax Status (`taxStatus`) | `options` | No | `taxable` | — |
| | | | | Options: `taxable`, `none` |
| — Total | `string` | No | — | Line total. |
| Shipping Lines (`shippingLinesUi`) | `fixedCollection` | No | `{}` | Shipping line data. Holds a list under `shippingLinesValues`. |
| — Method Title (`methodTitle`) | `string` | No | — | Shipping method name. |
| — Method ID (`methodId`) | `string` | No | — | Shipping method ID. |
| — Total | `string` | No | — | Line total. |
| Metadata (`metadataUi`) | `fixedCollection` | No | `{}` | Order metadata. Holds a list under `metadataValues`. |
| — Key | `string` | No | — | — |
| — Value | `string` | No | — | — |

#### Order: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Order ID (`orderId`) | `string` | Yes | — | ID of the order to update. |
| Update Fields (`updateFields`) | `collection` | No | `{}` | Order fields to change. Only the fields you add are sent. |
| — Currency | `string` | No | — | — |
| — Customer ID (`customerId`) | `string` | No | — | — |
| — Customer Note (`customerNote`) | `string` | No | — | — |
| — Parent ID (`parentId`) | `string` | No | — | — |
| — Payment Method ID (`paymentMethodId`) | `string` | No | — | — |
| — Payment Method Title (`paymentMethodTitle`) | `string` | No | — | — |
| — Status | `options` | No | `pending` | — |
| | | | | Options: `cancelled`, `completed`, `failed`, `on-hold`, `pending`, `processing`, `refunded`, `trash` |
| — Transaction ID (`transactionID`) | `string` | No | — | — |
| Billing (`billingUi`) | `fixedCollection` | No | `{}` | Billing address. Holds one record under `billingValues`. |
| — First Name (`firstName`) | `string` | No | — | — |
| — Last Name (`lastName`) | `string` | No | — | — |
| — Company | `string` | No | — | — |
| — Address Line 1 (`address_1`) | `string` | No | — | — |
| — Address Line 2 (`address_2`) | `string` | No | — | — |
| — City | `string` | No | — | — |
| — Postal Code (`postcode`) | `string` | No | — | — |
| — Country | `string` | No | — | — |
| — Email | `string` | No | — | — |
| — Phone | `string` | No | — | — |
| Shipping (`shippingUi`) | `fixedCollection` | No | `{}` | Shipping address. Holds one record under `shippingValues`. |
| — First Name (`firstName`) | `string` | No | — | — |
| — Last Name (`lastName`) | `string` | No | — | — |
| — Company | `string` | No | — | — |
| — Address Line 1 (`address_1`) | `string` | No | — | — |
| — Address Line 2 (`address_2`) | `string` | No | — | — |
| — City | `string` | No | — | — |
| — Postal Code (`postcode`) | `string` | No | — | — |
| — Country | `string` | No | — | — |
| Line Items (`lineItemsUi`) | `fixedCollection` | No | `{}` | Line item data. Holds a list under `lineItemsValues`. |
| — Name | `string` | No | — | Product name. |
| — Product ID (`productId`) | `number` | No | `0` | — |
| — Variation ID (`variationId`) | `number` | No | `0` | Variation ID, if applicable. |
| — Quantity | `number` | No | `1` | — |
| — Tax Class (`taxClass`) | `string` | No | — | — |
| — Subtotal | `string` | No | — | Line subtotal (before discounts). |
| — Total | `string` | No | — | Line total (after discounts). |
| Coupon Lines (`couponLinesUi`) | `fixedCollection` | No | `{}` | Coupon line data. Holds a list under `couponLinesValues`. |
| — Code | `string` | No | — | Coupon code. |
| Fee Lines (`feeLinesUi`) | `fixedCollection` | No | `{}` | Fee line data. Holds a list under `feeLinesValues`. |
| — Name | `string` | No | — | Fee name. |
| — Tax Class (`taxClass`) | `string` | No | — | — |
| — Tax Status (`taxStatus`) | `options` | No | `taxable` | — |
| | | | | Options: `taxable`, `none` |
| — Total | `string` | No | — | Line total. |
| Shipping Lines (`shippingLinesUi`) | `fixedCollection` | No | `{}` | Shipping line data. Holds a list under `shippingLinesValues`. |
| — Method Title (`methodTitle`) | `string` | No | — | Shipping method name. |
| — Method ID (`methodId`) | `string` | No | — | Shipping method ID. |
| — Total | `string` | No | — | Line total. |
| Metadata (`metadataUi`) | `fixedCollection` | No | `{}` | Order metadata. Holds a list under `metadataValues`. |
| — Key | `string` | No | — | — |
| — Value | `string` | No | — | — |

#### Order: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Order ID (`orderId`) | `string` | Yes | — | ID of the order to retrieve. |

#### Order: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. Accepts 1–100. _(shown when Return All is `false`)_ |
| Options (`options`) | `collection` | No | `{}` | Query filters for the order list. |
| — After | `string` | No | — | Limit response to resources published after a given ISO8601 date. |
| — Before | `string` | No | — | Limit response to resources published before a given ISO8601 date. |
| — Customer | `string` | No | — | Customer ID to filter by. |
| — Decimal Points (`decimalPoints`) | `number` | No | `2` | Number of decimal points to use in each resource. Accepts 0–10. |
| — Order | `options` | No | `desc` | — |
| | | | | Options: `asc`, `desc` |
| — Order By (`orderBy`) | `options` | No | `id` | — |
| | | | | Options: `date`, `id`, `include`, `slug`, `title` |
| — Product | `string` | No | — | Product ID to filter orders by. |
| — Search | `string` | No | — | — |
| — Status | `options` | No | `any` | — |
| | | | | Options: `any`, `cancelled`, `completed`, `failed`, `on-hold`, `pending`, `processing`, `refunded`, `trash` |

#### Order: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Order ID (`orderId`) | `string` | Yes | — | ID of the order to delete. |

#### Customer: Create

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Email | `string` | Yes | — | Customer email address. |
| Additional Fields (`additionalFields`) | `collection` | No | `{}` | Optional properties to set on the new customer. |
| — Billing Address (`billing`) | `collection` | No | `{}` | — |
| — — First Name (`first_name`) | `string` | No | — | — |
| — — Last Name (`last_name`) | `string` | No | — | — |
| — — Company | `string` | No | — | — |
| — — Address 1 (`address_1`) | `string` | No | — | — |
| — — Address 2 (`address_2`) | `string` | No | — | — |
| — — City | `string` | No | — | — |
| — — State | `string` | No | — | — |
| — — Postcode | `string` | No | — | — |
| — — Country | `string` | No | — | — |
| — — Email | `string` | No | — | — |
| — — Phone | `string` | No | — | — |
| — First Name (`first_name`) | `string` | No | — | — |
| — Last Name (`last_name`) | `string` | No | — | — |
| — Metadata (`meta_data`) | `fixedCollection` | No | `{}` | Holds a list under `meta_data_fields`. |
| — — Key | `string` | No | — | — |
| — — Value | `string` | No | — | — |
| — Password | `string` | No | — | — |
| — Shipping Address (`shipping`) | `collection` | No | `{}` | — |
| — — First Name (`first_name`) | `string` | No | — | — |
| — — Last Name (`last_name`) | `string` | No | — | — |
| — — Company | `string` | No | — | — |
| — — Address 1 (`address_1`) | `string` | No | — | — |
| — — Address 2 (`address_2`) | `string` | No | — | — |
| — — City | `string` | No | — | — |
| — — State | `string` | No | — | — |
| — — Postcode | `string` | No | — | — |
| — — Country | `string` | No | — | — |
| — — Email | `string` | No | — | — |
| — — Phone | `string` | No | — | — |
| — Username | `string` | No | — | — |

#### Customer: Delete

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`customerId`) | `string` | Yes | — | ID of the customer to delete. |

#### Customer: Get

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`customerId`) | `string` | Yes | — | ID of the customer to retrieve. |

#### Customer: Get Many

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Return All | `boolean` | No | `false` | Whether to return all results or only up to a given limit. |
| Limit | `number` | No | `50` | Max number of results to return. _(shown when Return All is `false`)_ |
| Filters (`filters`) | `collection` | No | `{}` | Query filters for the customer list. |
| — Email | `string` | No | — | Email address to filter customers by. |
| — Sort Order (`order`) | `options` | No | `asc` | — |
| | | | | Options: `asc` (Ascending), `desc` (Descending) |
| — Order By (`orderby`) | `options` | No | `id` | — |
| | | | | Options: `id`, `include`, `name`, `registered_date` |

#### Customer: Update

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Customer ID (`customerId`) | `string` | Yes | — | ID of the customer to update. |
| Update Fields (`updateFields`) | `collection` | No | `{}` | Customer fields to change. Only the fields you add are sent. |
| — Billing Address (`billing`) | `collection` | No | `{}` | — |
| — — First Name (`first_name`) | `string` | No | — | — |
| — — Last Name (`last_name`) | `string` | No | — | — |
| — — Company | `string` | No | — | — |
| — — Address 1 (`address_1`) | `string` | No | — | — |
| — — Address 2 (`address_2`) | `string` | No | — | — |
| — — City | `string` | No | — | — |
| — — State | `string` | No | — | — |
| — — Postcode | `string` | No | — | — |
| — — Country | `string` | No | — | — |
| — — Email | `string` | No | — | — |
| — — Phone | `string` | No | — | — |
| — First Name (`first_name`) | `string` | No | — | — |
| — Last Name (`last_name`) | `string` | No | — | — |
| — Metadata (`meta_data`) | `fixedCollection` | No | `{}` | Holds a list under `meta_data_fields`. |
| — — Key | `string` | No | — | — |
| — — Value | `string` | No | — | — |
| — Shipping Address (`shipping`) | `collection` | No | `{}` | — |
| — — First Name (`first_name`) | `string` | No | — | — |
| — — Last Name (`last_name`) | `string` | No | — | — |
| — — Company | `string` | No | — | — |
| — — Address 1 (`address_1`) | `string` | No | — | — |
| — — Address 2 (`address_2`) | `string` | No | — | — |
| — — City | `string` | No | — | — |
| — — State | `string` | No | — | — |
| — — Postcode | `string` | No | — | — |
| — — Country | `string` | No | — | — |
| — — Email | `string` | No | — | — |
| — — Phone | `string` | No | — | — |

#### All Operations

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| Max Concurrency | `number` | No | `10` | Maximum number of items to process concurrently. Accepts 1–100. |

## Output Data

**The WooCommerce record replaces the output item's JSON — it is not merged onto the input item.** Nothing the input item carried in `json` survives this node, so read any upstream value you still need *before* it, or branch around the node. Binary data on the input item **is** forwarded unchanged onto every output item.

| Operations | Output |
|------------|--------|
| Get Many on products, orders and customers | **One output item per record returned.** Turn Return All on to page through the store; leave it off and Limit caps the result. A page with no records produces no output items for that input. |
| Create, Get and Update on products, orders and customers | One output item whose JSON is the WooCommerce object — `{{ $json.id }}` is the record ID. |
| Delete on products, orders and customers | One output item whose JSON is the deleted record as WooCommerce returned it. Deletes are permanent rather than moved to trash. |

Creating an **order** or a **customer** is protected against duplicates: the node first looks for a record already tagged with an identifier unique to that execution, node and input item, and returns the existing record instead of creating a second one. Product creation has no such guard, so a retried product create can produce a duplicate.

## Usage Examples

- Create a new WooCommerce product with name and price
- List all WooCommerce orders with status processing
- Update a customer billing address in WooCommerce
- Delete a WooCommerce product by ID
- Get all WooCommerce customers filtered by email

## Example Configuration

Create a published product with dimensions, an image and custom metadata:

```json
{
  "type": "woocommerce",
  "parameters": {
    "resource": "product",
    "operation": "create",
    "name": "Amazing Widget",
    "additionalFields": {
      "regularPrice": "29.99",
      "salePrice": "24.99",
      "sku": "WIDGET-001",
      "status": "publish",
      "type": "simple",
      "description": "An amazing widget that does everything",
      "stockQuantity": 50,
      "manageStock": true
    },
    "dimensionsUi": {
      "dimensionsValues": {
        "height": "5",
        "length": "10",
        "width": "8"
      }
    },
    "imagesUi": {
      "imagesValues": [
        {
          "src": "https://example.com/widget.jpg",
          "alt": "Amazing Widget",
          "name": "widget-main"
        }
      ]
    },
    "metadataUi": {
      "metadataValues": [
        { "key": "warranty", "value": "2 years" }
      ]
    }
  }
}
```

Create a processing order with a billing address and one line item:

```json
{
  "type": "woocommerce",
  "parameters": {
    "resource": "order",
    "operation": "create",
    "additionalFields": {
      "customerId": "{{ $json.customerId }}",
      "status": "processing",
      "currency": "USD",
      "paymentMethodTitle": "Credit Card"
    },
    "billingUi": {
      "billingValues": {
        "firstName": "John",
        "lastName": "Doe",
        "email": "john@example.com",
        "phone": "555-1234",
        "address_1": "123 Main St",
        "city": "New York",
        "postcode": "10001",
        "country": "US"
      }
    },
    "lineItemsUi": {
      "lineItemsValues": [
        { "productId": 456, "quantity": 2, "total": "59.98" }
      ]
    }
  }
}
```

List the twenty newest published, featured products:

```json
{
  "type": "woocommerce",
  "parameters": {
    "resource": "product",
    "operation": "getAll",
    "returnAll": false,
    "limit": 20,
    "options": {
      "status": "publish",
      "featured": true,
      "orderBy": "date",
      "order": "desc"
    }
  }
}
```

Move an order to completed:

```json
{
  "type": "woocommerce",
  "parameters": {
    "resource": "order",
    "operation": "update",
    "orderId": "{{ $json.id }}",
    "updateFields": {
      "status": "completed"
    }
  }
}
```

Update a customer's name and billing details:

```json
{
  "type": "woocommerce",
  "parameters": {
    "resource": "customer",
    "operation": "update",
    "customerId": "{{ $json.id }}",
    "updateFields": {
      "first_name": "Jane",
      "last_name": "Smith",
      "billing": {
        "phone": "555-9999",
        "address_1": "456 Oak Ave"
      }
    }
  }
}
```

Find a customer by email:

```json
{
  "type": "woocommerce",
  "parameters": {
    "resource": "customer",
    "operation": "getAll",
    "returnAll": false,
    "limit": 10,
    "filters": {
      "email": "{{ $json.email }}",
      "orderby": "registered_date",
      "order": "desc"
    }
  }
}
```

### Error Handling

| Mode | Behavior |
|------|----------|
| **stop** | Halts workflow on first error |
| **continue** | Skips failed items, passes successful ones through |
| **errorPort** | Routes failed items to Error output port |

## Tips

Manage WooCommerce store products, orders, and customers via the REST API v3.

### Product Management Workflow

1. **Create** with the product name plus **Additional Fields** for price, SKU, stock and status.
2. Add photos through **Images** — each entry is a URL WooCommerce fetches, not a file upload.
3. Set **Dimensions** and **Weight** so shipping rates calculate correctly.
4. **Update** inventory later by sending only `stockQuantity` and `stockStatus` in **Update Fields**.

### Order Processing Workflow

1. **Create** the order with **Line Items** and the customer's **Billing** address; **Shipping** may differ.
2. Apply discounts through **Coupon Lines**, and add surcharges through **Fee Lines**.
3. **Shipping Lines** records the method and its cost on the order.
4. **Update** the order's **Status** as it moves through fulfilment.

### Structuring Collections

- **Additional Fields**, **Update Fields**, **Options** and **Filters** are flat objects keyed by the sub-field's internal name.
- Every fixed collection nests under its group key. **Dimensions**, **Billing** and **Shipping** take a single object; **Images**, **Metadata**, **Line Items**, **Coupon Lines**, **Fee Lines** and **Shipping Lines** take an array.
- Category and tag fields want numeric IDs, not names — find them in WooCommerce admin under Products > Categories and Products > Tags.
</content>