# product.updated

Webhook event `product.updated`, sent as `POST` to the URL of each webhook subscriber that subscribes to it.

Sent when the product changes. On payload version 2 that includes every change to a field of `data` other than `updatedAt`; it can also be sent for a change to a field `data` does not include.

This describes webhook payload version 2. Version 1 sends the same envelope, with `data` in the shape of the object's retrieve endpoint; the Webhooks guide explains both.

## Request

### Header parameters

- `X-Webhook-HMAC` (string, required): The HMAC-SHA256 of the raw request body, keyed with the subscriber's shared secret, as a hex string. Verify it before trusting the body.
- `X-Webhook-Id` (string, required): The ID of the delivery. It stays the same when the delivery is retried.
- `X-Webhook-Attempt` (integer, required): Which attempt this is, starting at 1. Minimum 1.

## Payload

Content type `application/json`, required.

Type: object.

- `profile` (string, required): The ID of the webhook subscriber the delivery is for. Use it to choose the shared secret that verifies the signature.
- `merchantId` (string, required): The ID of your merchant account.
- `eventId` (string, required): The ID of the event. It is the same for every delivery of the event, so use it to skip duplicates.
- `eventType` (string, required): One of `product.updated`.
- `timestamp` (string (date-time), required): When the event happened.
- `data` (object (ProductWebhookSnapshot) or object (WebhookSubjectReference), required): The product as the event left it. Rarely, when the event could not be captured at that moment, `data` is read when the webhook is built instead, or contains only `id` if the product no longer exists.
  - When the value is ProductWebhookSnapshot:
    - `id` (string, required): The ID of the object.
    - `createdAt` (string (date-time), required): When the object was created.
    - `updatedAt` (string (date-time), required, nullable): When the object was last updated.
    - `name` (string, required)
    - `description` (string, required, nullable)
    - `category` (string, required, nullable): One of `digital`, `physical`.
    - `shippable` (boolean, required)
    - `sku` (string, required, nullable)
    - `active` (boolean, required)
    - `metadata` (object, required, nullable): Your metadata on the object, after the change that caused the event.
  - When the value is WebhookSubjectReference:
    - `id` (string, required): The ID of the object.

## Your response

### `2XX`

Acknowledges the delivery. Respond within 15 seconds; any other response, or none, is retried.


---

Generated from the Core API v2 OpenAPI document, https://api.odus.com/openapi.v2.json. Interactive page: https://docs.odus.com/docs/api/core/v2/webhook-product-updated
