---
title: "Product Updated"
method: POST
path: "product.updated"
tags: ["Products"]
---

# Product Updated

`POST product.updated` (webhook)

Sent when a product is updated

Required permissions:
 - `access_pass:basic:read`
 - `webhook_receive:products`

## Headers

- `webhook-id` string, required — A unique identifier for this webhook request
- `webhook-signature` string, required — The signature of the webhook request with the webhook version prepended
- `webhook-timestamp` string, required — The timestamp in seconds since the Unix epoch that the webhook was sent at on the server

## Payload

- object
  - `api_version` 'v1', required — The API version for this webhook
  - `api_version_date` string, nullable, required — The dated API version (Api-Version-Date) the payload is serialized to
  - `company_id` string, nullable — The account ID that this webhook event is associated with
  - `data` Product, required
    - `account` object, nullable, required — Account that sells this product.
    - `created_at` string, required — When the product was created, as an ISO 8601 timestamp.
    - `custom_cta` 'get_access' | 'join' | 'order_now' | 'shop_now' | 'call_now' | 'donate_now' | 'contact_us' | 'sign_up' | 'subscribe' | 'purchase' | 'get_offer' | 'apply_now' | 'complete_order' | 'null', nullable, required — Call-to-action button label shown on the product purchase page.
    - `custom_cta_url` string, nullable, required — URL the call-to-action button links to instead of checkout.
    - `custom_statement_descriptor` string, nullable, required — Custom text label on customer's bank statement.
    - `description` string, nullable, required — Written description displayed on product page.
    - `external_identifier` string, nullable, required — External identifier stored on the product for your own reference.
    - `gallery_images` ProductGalleryImage[], required
      - `content_type` string, nullable, required — Uploaded file MIME type, such as image/jpeg.
      - `id` string, required — Gallery image ID.
      - `url` string, nullable, required — Pre-optimized URL for rendering this image on the client.
    - `global_affiliate_percentage` number, nullable, required — Commission rate affiliates earn through the global affiliate program.
    - `global_affiliate_status` 'enabled' | 'disabled' | 'null', nullable, required — Enrollment status in the global affiliate program.
    - `headline` string, nullable, required — Short marketing headline displayed on product page.
    - `id` string, required — Product ID, prefixed `prod_`.
    - `marketplace_status` 'not_available' | 'pending_review' | 'live_marketplace', required — Listing state on the whop.com marketplace. `pending_review` means submitted and awaiting review; `live_marketplace` means approved and discoverable.
    - `member_affiliate_percentage` number, nullable, required — Commission rate members earn through the member affiliate program.
    - `member_affiliate_status` 'enabled' | 'disabled' | 'null', nullable, required — Enrollment status in the member affiliate program.
    - `member_count` number, required — Active memberships for this product; 0 if public member counts are disabled.
    - `metadata` object, nullable, required — Custom key-value pairs stored on the product.
    - `owner_user` object, nullable, required — User who owns the account selling this product.
    - `product_tax_code` object, nullable, required — Tax classification code for this product, or `null` if no tax code is set.
    - `published_reviews_count` number, required — Published customer reviews for this product.
    - `route` string, required — URL slug for the product's public link.
    - `title` string, required — Product display name shown to customers.
    - `updated_at` string, required — When the product was last updated, as an ISO 8601 timestamp.
    - `verified` boolean, required — Whether the product has been verified by Whop.
    - `visibility` string, nullable, required — Whether the product is publicly visible, hidden, or archived.
  - `id` string, required — A unique ID for every single webhook request
  - `timestamp` string, date-time, required — The timestamp in ISO 8601 format that the webhook was sent at on the server
  - `type` 'product.updated', required — The webhook event type

## Acknowledgement `200`

Return a 200 status to indicate that the data was received successfully

---

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