---
title: "Update Product"
method: PUT
path: "/products/{id}"
tags: ["Product"]
---

# Update Product

`PUT /products/{id}`

Update a product for a workspace

## Path parameters

- `id` string, required

## Request body

- object
  - `product` ProductParametersUpdate — Products
    - `name` string — Product name
    - `current_path` string, nullable — Current Path
    - `visible_in_store` boolean, nullable — Visible in Store
    - `visible_in_customer_center` boolean, nullable — Visible in Customer Center
    - `seo_title` string, nullable — A clear title without branding or mentioning the domain itself. Longer is better, but max is 60 characters.
    - `seo_description` string, nullable — A clear SEO description, at least two sentences long. Longer is better, but max is 160 characters. You will find the actual user-facing description on the **default variant of the product** (see the `Products::Variant` resource).
    - `seo_image_id` string, nullable — SEO image
    - `commissionable` boolean, nullable — Commissionable
    - `image_ids` unknown
    - `variant_ids` unknown
    - `price_ids` unknown
    - `redirect_funnel_id` string, nullable — Redirect funnel
    - `cancellation_funnel_url` string, nullable — Cancellation Funnel Url
    - `tag_ids` integer[] — Any valid array, empty or with valid tag ids will overwrite existing values. To avoid losing existing tags first use the Fetch Product endpoint, then be sure to include the existing tags in your payload along with any new addition(s)
    - `variant_properties` object[] — The properties of the product's variants. e.g. 'Size', 'Color' etc.
      - `id` integer — The ID of the property, if updating the property
      - `name` string — The name of the property

## Response `200`

OK

- ProductAttributes — Products
  - `id` integer — ID
  - `public_id` string, nullable — Product Public ID
  - `workspace_id` integer — Workspace ID
  - `name` string — Product name
  - `current_path` string, nullable — Current Path
  - `archived` boolean, nullable — Archived
  - `visible_in_store` boolean, nullable — Visible in Store
  - `visible_in_customer_center` boolean, nullable — Visible in Customer Center
  - `image_id` string, nullable — Image
  - `seo_title` string, nullable — A clear title without branding or mentioning the domain itself. Longer is better, but max is 60 characters.
  - `seo_description` string, nullable — A clear SEO description, at least two sentences long. Longer is better, but max is 160 characters. You will find the actual user-facing description on the **default variant of the product** (see the `Products::Variant` resource).
  - `seo_image_id` string, nullable — SEO image
  - `commissionable` boolean, nullable — Commissionable
  - `image_ids` unknown
  - `default_variant_id` integer — The ID of the default variant of the product
  - `variant_ids` unknown
  - `price_ids` unknown
  - `tag_ids` unknown
  - `redirect_funnel_id` string, nullable — Redirect funnel
  - `cancellation_funnel_url` string, nullable — Cancellation Funnel Url
  - `created_at` string, date-time, nullable — Added
  - `updated_at` string, date-time, nullable — Updated
  - `variant_properties` object[], nullable — Properties that are specific to the default variant of a product
    - `id` integer — ID
    - `name` string — Name

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `404` — Not Found

---

[API](https://skmtc.net/myclickfunnels/apis/clickfunnels-api.md) · [All operations](https://skmtc.net/myclickfunnels/apis/clickfunnels-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/myclickfunnels/clickfunnels-api/versions/ae6313eaa176/schema)
