Update WooCommerce Integration
PATCH/api/woo-commerce/:integrationInstance
Update the settings of a WooCommerce integration instance. All fields are optional - only the fields you send are changed, and integration_settings is deep-merged with the existing settings on PATCH.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Top-level fields:
- name (string): Display name for the integration instance.
- is_automatic_sync_enabled (boolean): Master switch for automatic background syncing.
- connection_settings (object): WooCommerce REST API credentials - user_id, consumer_key, consumer_secret, key_permissions.
- integration_settings (object): Store configuration.
integration_settings fields:
- url (string): Store URL. Must start with https:// and must not end with a slash.
- start_date (date): Earliest order date to sync. Must be on or after the SKU.io inventory start date.
- store_id (integer): SKU.io store the sales channel belongs to.
- auto_link_products (boolean): Automatically link WooCommerce products to SKU.io products by SKU.
- auto_create_products (boolean): Automatically create SKU.io products for unmatched listings.
- sales_nominal_code_id, cogs_nominal_code_id, shipping_revenue_nominal_code_id, shipping_refund_nominal_code_id, sales_returns_allowances_nominal_code_id (integer|null): Accounting nominal code assignments.
- pricing (object): Price sync settings.
- inventory (object): Inventory sync settings (locations, selected warehouses). Sent arrays fully replace the stored ones.
- proforma_marketplace_cost_percentage, proforma_payment_cost_percentage (number|null): Estimated cost percentages for proforma profit calculations.
- sync_sales_order_invoices_to_accounting, sync_sales_credit_to_accounting (boolean): Accounting sync toggles.
- batch_period_sales_order_fulfillments, batch_period_customer_returns (string|null): Per-channel accounting batch period overrides.
Route name: woo-commerce.update
Requires the integrations.update permission.
Store and sales channel: new orders are created in the store of this connection's sales channel. Whenever the request includes integration_settings.store_id, the sales channel is put in that store if it is in a different one — including when the value equals the saved setting, so re-saving the same store realigns a sales channel that had drifted from it. Nothing is written when the sales channel already uses that store, and orders already imported keep their store. When the sales channel moves, the response adds two top-level keys:
message(string): e.g. "Settings saved. New orders will now be created in store 'Curvy AU' — the sales channel was moved from 'Placeholder'."sales_channel_store_updated(object):fromandto, each{id, name};from.idandfrom.nameare null when the sales channel had no store. Both keys are absent when the sales channel did not move.
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden
Response Headers
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Unprocessable Entity
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.