This webhook event is used to notify clients when product status information changes in Skulytics.
The product_status_updated webhook helps clients keep product availability and lifecycle status synchronized across different markets and ZIP codes without repeatedly retrieving and comparing the complete Product Status endpoint response.
This webhook may be triggered by status changes made manually through PIM or automatically after the product status scraping process is completed.
Event Type
product_status_updated
When This Webhook Is Sent
The product_status_updated webhook is sent when product status data changes.
Supported status values include:
ActiveDiscontinuedComing SoonInactive
Event Sent
Example — Product Status Updated
{
"type": "product_status_updated",
"webhook_version": "3",
"action_date": "06/20/2026 02:01:59",
"payload": [
{
"product_id": 88782,
"sku": "AEL361DFIVY",
"markets": [
{
"country": {
"country_id": 1,
"country_name": "United States",
"country_code": "US",
"zipcodes": [
{
"zipcode": 63011,
"status": "Discontinued",
"date_discontinued": "12/11/2025 1:51 AM"
}
]
}
}
]
}
],
"meta": {
"changed_attributes": [
"markets.country.zipcodes.status",
"markets.country.zipcodes.date_discontinued"
]
}
}Payload Details
| Name | Type | Definition |
|---|---|---|
type | string | Specifies the webhook event type. For this event, the value is product_status_updated. |
webhook_version | string | Specifies the webhook version. For Public API v3 webhook events, the value is 3. |
action_date | string | The date and time when the status update event was generated, formatted as MM/DD/YYYY HH:MM:SS. |
payload | array | An array containing products with changed status records. |
meta | object | Change-tracking information for the webhook event. |
meta.changed_attributes | array | A list of status attributes whose values changed. |
Product Status Object Details
| Name | Type | Definition |
|---|---|---|
product_id | integer | Unique Skulytics product identifier. |
sku | string | Normalized product identifier used by Skulytics. |
markets | array | Market-level product availability and lifecycle status information. |
markets[].country | object | Country-level status information. |
markets[].country.country_id | integer | Unique country identifier. |
markets[].country.country_name | string | Country name, for example United States. |
markets[].country.country_code | string | ISO country code, for example US. |
markets[].country.zipcodes | array | ZIP code-level product status records. |
markets[].country.zipcodes[].zipcode | integer | ZIP code where the product status applies. |
markets[].country.zipcodes[].status | string | Current product status for the ZIP code. Supported values are Active, Discontinued, Coming Soon, and Inactive. |
markets[].country.zipcodes[].date_discontinued | string | null | Date when the product was discontinued for the ZIP code, when available. |
Changed Attributes
The meta.changed_attributes field identifies which status data points changed.
Possible values include:
| Value | Definition |
|---|---|
markets.country.zipcodes.status | The product status changed for one or more ZIP code records. |
markets.country.zipcodes.date_discontinued | The discontinued date was added or updated for one or more ZIP code records. |
When only the status changes, meta.changed_attributes contains:
{
"changed_attributes": [
"markets.country.zipcodes.status"
]
}When only the discontinued date changes, meta.changed_attributes contains:
{
"changed_attributes": [
"markets.country.zipcodes.date_discontinued"
]
}When both values change, both attributes are included.
Date Discontinued Behavior
The date_discontinued field follows these rules:
-
When the status is
Discontinued,date_discontinuedis returned when available. -
When the status changes from
DiscontinuedtoActive,date_discontinuedis set tonull. -
When the status changes from
DiscontinuedtoComing Soon,date_discontinuedis set tonull. -
When the status changes from
DiscontinuedtoInactive,date_discontinuedis set tonull. -
When the status changes from
Discontinuedto any other supported status, the existingdate_discontinuedvalue is cleared. -
Clearing
date_discontinuedas part of a status change must be included in the webhook payload. -
In this case,
meta.changed_attributesmust include both:markets.country.zipcodes.statusmarkets.country.zipcodes.date_discontinued
-
Adding or updating
date_discontinuedtriggers the webhook even when thestatusvalue remains unchanged.
