1. Overview
WooCommerce is the leading open-source ecommerce plugin for WordPress. It exposes a REST API so external systems can manage customers, orders, products, inventory, and store metadata in a structured way.
With the GoInsight Woocommerce node, you can connect those APIs to automation workflows. Typical tasks include:
- Customers: create, search, fetch by ID, update profile and addresses, and remove accounts (with trash or permanent delete).
- Orders: create checkout records with line items, search and filter orders, fetch full order payloads, update status and addresses, and delete orders safely.
- Products: create catalog items (with optional SKU idempotency), search with filters and pagination, fetch a single product, update pricing and stock, and delete products.
2. Prerequisites
You need a WordPress site with WooCommerce installed and reachable over HTTPS. Generate REST API keys (Consumer Key / Consumer Secret) from WooCommerce → Settings → Advanced → REST API, and grant the key read/write access as required by your workflows. Administrator access to the WordPress dashboard is usually required to create or rotate keys.
3. Credentials
For a detailed guide on how to obtain and configure your credentials, please refer to our official documentation: Credential Configuration Guide.
4. Supported Operations
The node is organized around three resources: Customer, Order, and Product. Each resource supports create, list/search, read-by-ID, update, and delete operations where the upstream API allows it.
Summary
| Resource | Operation | Description |
|---|---|---|
| Customer | Create a Customer | Registers a new customer; optional username/password; idempotent by email; may send welcome email if credentials are auto-generated. |
| Customer | Find Customers | Searches and lists customers with filters, sorting, and pagination (up to 100 per page). |
| Customer | Get a Customer | Retrieves one customer by ID, including billing, shipping, and metadata. |
| Customer | Update a Customer | Partially updates an existing customer (PATCH-style); only supplied fields change. |
| Customer | Delete a Customer | Soft-deletes to trash or permanently deletes a customer; does not remove historical orders. |
| Order | Create an Order | Creates an order with line items; supports billing/shipping, status, customer link, and optional “mark paid”. |
| Order | Find Orders | Lists orders with pagination, text search, status filter, and advanced filters (customer, product, context). |
| Order | Get an Order | Fetches a single order by ID with full line items and addresses. |
| Order | Update an Order | Updates order fields selectively; can adjust status, addresses, payment fields, and line items. |
| Order | Delete an Order | Moves an order to trash or permanently deletes it when Force is true. |
| Product | Create a Product | Creates a product; SKU must be unique; duplicate SKU returns the existing product instead of creating a duplicate. |
| Product | Find Products | Searches products by keyword, status, category, price range, stock status, and optional advanced filters. |
| Product | Get a Product | Retrieves one product by numeric ID. |
| Product | Update a Product | Partially updates product fields such as price, stock, status, and description. |
| Product | Delete a Product | Trashes or permanently deletes a product by ID. |
Operation Details
Create a Customer
Creates a new customer in WooCommerce. Use this to register a new user account; for modifying existing customers use Update a Customer. Email is required and must be unique. If Username or Password is omitted, WooCommerce may auto-generate them and send a welcome email—provide both if you want to avoid that. The action is idempotent by email.
Input Parameters:
- Email: Customer email address; required and must be a valid email format.
Options:
- FirstName: Customer first name; used in emails and the account dashboard.
- LastName: Customer last name; used on records and shipping labels.
- Username: Login username; if omitted, WooCommerce may derive one from the email.
- Password: Login password; if omitted, WooCommerce may generate one and email it.
- Billing: Billing address object (first_name, last_name, address_1, city, state, postcode, country, phone, etc.).
- Shipping: Shipping address object with the same style of fields as billing.
- MetaData: Array of { "key", "value" } objects for custom fields (loyalty tier, source, etc.).
Output:
- CustomerId (number): New customer ID, or 0 if creation failed.
- CustomerEmail (string): Email of the created customer.
- CustomerName (string): Full display name (first + last).
- Username (string): Assigned or provided username.
- DateCreated (string): Account creation timestamp.
- IsPayingCustomer (bool): Whether the customer has paid orders.
- Customer (object): Full customer object (includes billing, shipping, meta_data when returned by the API).
- OriginalStatusCode (number): Raw HTTP status from WooCommerce (e.g. 201, 400).
- StatusCode (number): Tool status: 200 when the tool ran (check ErrorMessage / OriginalStatusCode for API errors), 500 system error, -1 validation error.
- ErrorMessage (string): Human-readable error text; empty on success.
Find Customers
Finds customers with optional filters and pagination. Use Get a Customer when you already have a single ID.
Options:
- Page: Page index (default 1, min 1).
- PerPage: Page size (default 10, max 100).
- Search: Fuzzy match on name, email, or username (case-insensitive).
- Include: Comma-separated customer IDs to restrict the result set.
- Order: Sort direction, asc or desc (default asc).
- OrderBy: id, include, name, or registered_date (default id).
- Email: Exact match on email.
- Role: WordPress role filter (customer, shop_manager, all, etc.; default customer).
Output:
- Customers (object-array): Matching customer objects (id, email, billing, shipping, etc.).
- TotalCount (number): Total rows matching the query.
- TotalPages (number): Total pages for the current PerPage.
- CurrentPage (number): Page returned in this response.
- OriginalStatusCode (number): Raw HTTP status; 0 if no request was sent.
- StatusCode (number): Tool execution status (200 / 500 / -1 as above).
- ErrorMessage (string): Error text if any; empty on success.
Get a Customer
Loads a single customer by ID. Returns personally identifiable information—handle according to your privacy policy.
Input Parameters:
- CustomerId: WooCommerce customer ID as a string (from Find Customers or the admin user list).
Output:
- Customer (object): Full customer payload from the API.
- OriginalStatusCode (number): Raw HTTP status (e.g. 200, 404).
- StatusCode (number): Tool execution status.
- ErrorMessage (string): Error text if any; empty on success.
Update a Customer
Updates an existing customer; only fields you supply are changed. Idempotent for the same payload. Invalid IDs typically yield 404.
Input Parameters:
- CustomerID: Customer ID to update (string).
Options:
- Email: New email address.
- Username: New username (may be restricted by site policy).
- FirstName: New first name.
- LastName: New last name.
- Billing: Partial billing object; omitted keys keep existing values.
- Shipping: Partial shipping object; omitted keys keep existing values.
- AdditionalFields: Object with optional password and meta_data (array of { key, value }).
Output:
- Customer (object): Updated customer object.
- OriginalStatusCode (number): Raw HTTP status.
- StatusCode (number): Tool execution status.
- ErrorMessage (string): Error text if any; empty on success.
Delete a Customer
Deletes a customer record. Force false moves the user to trash (recoverable in WP Admin for a limited time); Force true permanently removes data. Deleting a customer does not delete order history (orders may show as guest); subscriptions may be cancelled rather than deleted.
Input Parameters:
- CustomerID: ID of the customer to delete (string).
Options:
- Force: true for permanent delete, false (default) for trash.
Output:
- Customer (object): Customer object as returned at deletion time.
- OriginalStatusCode (number): Raw HTTP status.
- StatusCode (number): Tool execution status.
- ErrorMessage (string): Error text if any; empty on success.
Create an Order
Creates a new order. LineItems must list product_id and quantity for each row. Creating orders can trigger WooCommerce emails and stock changes—disable or tune store emails in WooCommerce → Settings → Emails when testing.
Input Parameters:
- LineItems: Array of { "product_id", "quantity" }; use Find Products / Get a Product to resolve IDs.
Options:
- Billing: Billing address object (first_name, last_name, email, phone, address fields, etc.).
- Shipping: Shipping address object; if omitted, WooCommerce may fall back to billing or defaults.
- Status: Order status such as pending, processing, on-hold, completed, cancelled, refunded, failed (default pending).
- CustomerID: WooCommerce customer ID (0 for guest; not the raw WordPress user ID in all setups—confirm via Find Customers).
- SetPaid: When true, marks the order paid and can move status toward processing and reduce stock—use only when payment is truly confirmed.
- AdditionalFields: Extra keys such as currency, payment_method, payment_method_title, customer_note.
Output:
- Order (object): Created order (id, status, total, billing, shipping, line_items, etc.).
- OriginalStatusCode (number): Raw HTTP status (e.g. 201, 400).
- StatusCode (number): Tool execution status.
- ErrorMessage (string): Error text if any; empty on success.
Find Orders
Returns a paginated list of orders with optional filters. Pair with Get an Order when you need every field for one ID.
Options:
- Page: Page number (default 1).
- PerPage: Page size (default 10).
- Search: Free-text match (customer name, email fragments, etc., depending on API behavior).
- Status: Filter by WooCommerce order status (e.g. completed, processing).
- AdditionalFilters: Object with keys such as customer (ID), product (ID), context (view vs edit—edit may expose sensitive internal fields), and orderby.
Output:
- Orders (object-array): Order summaries or full objects depending on context.
- TotalCount (number): Total matching orders.
- TotalPages (number): Total pages.
- CurrentPage (number): Current page index.
- OriginalStatusCode (number): Raw HTTP status.
- StatusCode (number): Tool execution status.
- ErrorMessage (string): Error text if any; empty on success.
Get an Order
Fetches one order by ID. Requires read permissions on the REST key.
Input Parameters:
- OrderID: Numeric order ID as a string (no # prefix); from Find Orders or the WooCommerce admin list.
Output:
- Order (object): Full order object (status, total, currency, line_items, addresses, payment fields).
- OriginalStatusCode (number): Raw HTTP status.
- StatusCode (number): Tool execution status (200 can still accompany API-level errors—read ErrorMessage).
- ErrorMessage (string): Error text if any; empty on success.
Update an Order
PATCH-style update: only provided fields change. Updating LineItems can recalculate totals without necessarily sending customer emails—still treat status and SetPaid changes as production-impacting.
Input Parameters:
- OrderID: Order ID to update (string).
Options:
- Status: New WooCommerce status string.
- PaymentMethod: Gateway ID (for example bacs, cod, paypal).
- SetPaid: When true, marks paid in WooCommerce records only (no real card charge).
- Billing: Billing address object.
- Shipping: Shipping address object.
- LineItems: Array of line objects (product_id, quantity, optional total).
- AdditionalFields: Advanced keys such as currency, customer_id, customer_note, payment_method_title, meta_data, fee_lines, shipping_lines, coupon_lines.
Output:
- Order (object): Updated order payload.
- OriginalStatusCode (number): Raw HTTP status.
- StatusCode (number): Tool execution status.
- ErrorMessage (string): Error text if any; empty on success.
Delete an Order
Deletes an order by numeric ID. Default (Force false) sends the order to trash; Force true permanently removes it.
Input Parameters:
- OrderID: Numeric order ID.
Options:
- Force: true to bypass trash; false (default) keeps a recoverable copy until purged in admin.
Output:
- Order (object): Order body returned at deletion time.
- OriginalStatusCode (number): Raw HTTP status.
- StatusCode (number): Tool execution status.
- ErrorMessage (string): Error text if any; empty on success.
Create a Product
Creates a catalog product. Name is required. Sku must be unique; if a SKU already exists, the action returns that product instead of creating a duplicate. Put long HTML descriptions inside AdditionalFields.description when you need rich SEO copy.
Input Parameters:
- Name: Product title shown in the storefront.
Options:
- ProductType: simple, grouped, external, or variable (default simple).
- Status: publish, draft, pending, or private (default publish).
- Sku: Unique SKU string.
- RegularPrice: Numeric string without currency symbols (for example 99.99).
- SalePrice: Promotional numeric string without symbols.
- StockQuantity: Integer stock on hand when stock management applies.
- AdditionalFields: Object for description (HTML allowed), categories, images, tags, and other extended keys.
Output:
- Product (object): Created product record.
- OriginalStatusCode (number): Raw HTTP status.
- StatusCode (number): Tool execution status.
- ErrorMessage (string): Error text if any; empty on success.
Find Products
Searches the catalog with filters and pagination. Use Get a Product when you already know the ID.
Options:
- Search: Keyword matched against name/description.
- Status: publish, draft, pending, or private.
- Category: One category ID or comma-separated IDs (OR logic).
- StockStatus: instock, outofstock, or onbackorder.
- MinPrice / MaxPrice: Inclusive numeric price filters (0 means “unset” for max in typical usage—see tool UI hints).
- Page: Page index (default 1).
- PerPage: Page size up to 100 (default 10).
- AdditionalFields: Advanced keys such as context, order, orderby, after, before, featured, on_sale, sku, tag.
Output:
- Products (object-array): Matching product objects.
- TotalCount (number): Total matches.
- TotalPages (number): Total pages.
- CurrentPage (number): Current page.
- OriginalStatusCode (number): Raw HTTP status.
- StatusCode (number): Tool execution status.
- ErrorMessage (string): Error text if any; empty on success.
Get a Product
Returns a single product record by ID.
Input Parameters:
- ProductID: Product ID string from Find Products, admin lists, or order line items.
Output:
- Product (object): Full WooCommerce product payload.
- OriginalStatusCode (number): Raw HTTP status.
- StatusCode (number): Tool execution status.
- ErrorMessage (string): Error text if any; empty on success.
Update a Product
Updates fields on an existing product. Only supplied fields change. Invalid IDs return 404.
Input Parameters:
- ProductID: Target product ID string.
Options:
- Name: New title.
- Sku: SKU update (must remain unique).
- RegularPrice / SalePrice: Numeric strings without currency symbols.
- Description: Long HTML description.
- Status: publish, draft, pending, or private.
- StockStatus: instock, outofstock, or onbackorder.
- StockQuantity: Non-negative integer when stock is managed.
- AdditionalFields: Keys such as short_description, weight, manage_stock, backorders, dimensions, categories, images.
Output:
- Product (object): Updated product payload.
- OriginalStatusCode (number): Raw HTTP status.
- StatusCode (number): Tool execution status.
- ErrorMessage (string): Error text if any; empty on success.
Delete a Product
Deletes a product by ID. Force false keeps it in trash; true removes it permanently.
Input Parameters:
- ProductID: Product ID string.
Options:
- Force: Permanent delete when true; trash when false (default).
Output:
- Product (object): Deleted product payload returned by WooCommerce.
- OriginalStatusCode (number): Raw HTTP status.
- StatusCode (number): Tool execution status.
- ErrorMessage (string): Error text if any; empty on success.
5. Example Usage
This walkthrough builds a read-only workflow that lists published products matching a keyword—useful for validating credentials and understanding pagination without changing catalog data or notifying customers.
The flow is: Start → Woocommerce (Find Products) → Answer.
- Add the tool node
- On the canvas, click + to add a node.
- Open the Tool tab.
- Choose Woocommerce, then select Find Products.
- Configure the node
- Open the node’s panel and pick your saved Woocommerce credential.
- Search: enter a keyword that exists in your catalog (for example part of a product title).
- Status: set publish if you only want live products.
- Page / PerPage: start with 1 and 10; increase Page to walk additional batches while CurrentPage / TotalPages in the output guide you.
- Run and verify
- Resolve any validation badges on the canvas, then run a trial execution.
- Inspect logs: Products should contain objects with id and name, while TotalCount shows how many matches exist overall.
Once this succeeds, you can copy a returned id into Get a Product or combine Find Orders with Update an Order for richer automations.
6. FAQs
Q: I see StatusCode = 200 but the store still rejected the call—why?
A: GoInsight may report 200 when the tool itself finished, while business failures surface in ErrorMessage and the upstream code in OriginalStatusCode (for example 401, 404, 400). Always read those two fields together.
Q: How do I fix 401 Unauthorized?
A: Regenerate REST keys, confirm the key has Read/Write access as needed, and verify the site URL in the credential matches the store domain (including HTTPS). Firewalls or security plugins that block REST routes can also cause auth failures.
Q: Why did WooCommerce email a customer during testing?
A: Create a Customer sends welcome mail when username/password are left blank. Provide both fields or disable the relevant WooCommerce email templates while testing.
Q: How should I format LineItems or address objects?
A: Pass valid JSON structures as the node expects: line items like [{"product_id": 99, "quantity": 2}], and billing objects with the keys documented under each action. malformed JSON typically yields -1 from parameter validation.
Leave a Reply.