This webhook event is used to notify clients when product document information changes in Skulytics.
The product_document_updated webhook helps clients keep product documents synchronized with Skulytics.
When product document data changes, Skulytics sends this webhook with the complete latest Product Documents payload for the affected product.
The webhook does not return only the document that changed. Instead, it returns the complete current product_documents collection after the change has been applied.
Clients can use meta.changed_attributes to identify that the product_documents collection changed.
Event Type
product_document_updated
When This Webhook Is Sent
The product_document_updated webhook is sent when product document data changes.
Changes may include:
- A document is added.
- A document is removed.
- A document URL changes.
- A document role changes.
- A document priority changes.
- The document order changes.
- The number of product documents changes.
- A document file changes.
- A document
content_lengthchanges. - The document collection changes.
The webhook is not sent when the latest document data is identical to the existing document data.
The detailed trigger behavior for PIM and scraping processes is handled separately from this webhook specification.
Supported Document Type
The webhook supports changes to:
product_documents
Event Sent
Example — Product Document Updated
{
"type": "product_document_updated",
"webhook_version": "3",
"action_date": "06/20/2026 02:01:59",
"payload": [
{
"product_id": 989,
"sku": "GNE27JYMFS",
"product_documents": [
{
"id": 105164843,
"url": "https://assets.skulytics.io/assets/docs/GNE27JYMFS-105164843.pdf",
"role": "Installation Instructions",
"priority": 0,
"content_length": "19.42 MB"
},
{
"id": 105164844,
"url": "https://assets.skulytics.io/assets/docs/GNE27JYMFS-105164844.pdf",
"role": "Energy Guide",
"priority": 0,
"content_length": "111.92 KB"
},
{
"id": 105164845,
"url": "https://assets.skulytics.io/assets/docs/GNE27JYMFS-105164845.pdf",
"role": "Quick Specs",
"priority": 0,
"content_length": "416.80 KB"
},
{
"id": 105164846,
"url": "https://assets.skulytics.io/assets/docs/GNE27JYMFS-105164846.pdf",
"role": "Warranty",
"priority": 0,
"content_length": "64.27 KB"
}
],
"date_modified": "12/24/2025 10:46 AM"
}
],
"meta": {
"changed_attributes": [
"product_documents"
]
}
}Payload Behavior
When the webhook is sent, the payload contains the complete latest Product Documents data for the affected product.
The webhook does not return only the document that was added, removed, or updated.
The product_documents array always represents the latest current state of the product's document collection at the time the webhook is generated.
For example:
- If a product previously has 4 documents and 1 document is deleted, the webhook returns the remaining 3 current documents.
- If a product has 4 documents and the URL of 1 document changes, the webhook returns all 4 current documents.
- If a product has 4 documents and the role of 1 document changes, the webhook returns all 4 current documents.
- If a new document is added to a product that previously had 4 documents, the webhook returns all 5 current documents.
- Documents that did not change remain included in the payload.
- Documents that were deleted are no longer included in the payload.
Clients should use the returned product_documents array as the complete latest document state for the product rather than treating the payload as a list of individual document changes.
The meta.changed_attributes field indicates that the product_documents collection changed, but it does not identify the specific document record or document field that changed.
Empty Document Behavior
The product_documents field is returned as an array.
When no product documents are available, the field returns an empty array:
{
"product_documents": []
}For example, if the last remaining document is removed, the latest payload includes:
{
"product_id": 989,
"sku": "GNE27JYMFS",
"product_documents": [],
"date_modified": "06/20/2026 02:01 PM"
}Removing the last document is considered a product document update and can trigger the webhook.
Payload Details
| Name | Type | Definition |
|---|---|---|
| type | string | Specifies the webhook event type. For this event, the value is product_document_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 document update event was generated, formatted as MM/DD/YYYY HH:MM:SS. |
| payload | array | An array containing the complete latest Product Documents data for the affected product. |
| meta | object | Change-tracking information for the webhook event. |
| meta.changed_attributes | array | Identifies which supported document collection changed. For this webhook, the value is product_documents. |
Product Document Object Details
| Name | Type | Definition |
|---|---|---|
| product_id | integer | Unique Skulytics product identifier. |
| sku | string | Normalized product identifier used by Skulytics. |
| product_documents | array | Complete latest collection of current product document records. |
| date_modified | string | Date and time when the product document data was last modified. |
Product Document Details
| Name | Type | Definition |
|---|---|---|
| product_documents[].id | integer | Unique product document identifier. |
| product_documents[].url | string | URL of the product document. |
| product_documents[].role | string | Describes the document's role or type, such as installation instructions, energy guide, quick specifications, or warranty information. |
| product_documents[].priority | integer | Priority or ordering position of the document. Lower values have a higher priority. |
| product_documents[].content_length | string | null | File size of the product document, including its unit, when available. |
The complete latest product_documents array is included whenever the webhook is sent.
Changes to product_documents may include:
- A document is added.
- A document is removed.
- A document URL changes.
- A document role changes.
- A document priority changes.
- The document order changes.
- The number of documents changes.
- A document file changes.
- A document
content_lengthchanges.
When any of these changes occur, meta.changed_attributes includes:
product_documents
Changed Attributes
The meta.changed_attributes field identifies which supported document collection changed.
For the product_document_updated webhook, the supported value is:
| Value | Definition |
|---|---|
| product_documents | The product document collection, URL, role, priority, order, quantity, file, or file size changed. |
The changed-attribute path stops at the document collection level.
Regardless of which document record or field changes, meta.changed_attributes contains only:
{
"meta": {
"changed_attributes": [
"product_documents"
]
}
}More detailed changed-attribute paths are not returned.
For example, the webhook does not return:
product_documents.url
product_documents.role
product_documents.priority
product_documents.content_length
