Salsify · AsyncAPI Specification
Salsify Webhooks
Version
View Spec
View on GitHub
CompanyProduct Experience ManagementProduct Information ManagementDigital Asset ManagementCommerceRetailSyndicationData ManagementSaaSAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-02'
method: searched
source: https://developers.salsify.com/docs/webhook-signing
spec_type: Webhooks
asyncapi_published: false
asyncapi_note: >-
Salsify has a real, documented webhook event surface but publishes no AsyncAPI document
and no machine-readable event catalog. Nothing has been fabricated - the catalog below is
transcribed from the developer-hub webhook guides.
docs:
- https://developers.salsify.com/docs/webhook-signing
- https://developers.salsify.com/docs/webhooks-prod-change
- https://developers.salsify.com/docs/digital-asset-webhooks
- https://developers.salsify.com/docs/imports-webhooks
- https://developers.salsify.com/reference/webhook-signature-verification-algorithm
- https://developers.salsify.com/reference/webhook-signature-headers
- https://developers.salsify.com/reference/certificate-caching
configuration:
where: Salsify web application (list/subscription configuration, or the import configuration section)
note: >-
Webhooks are configured in the app, not via the API. An import webhook added after the
import was created only takes effect on the next run.
channels:
- name: product-change
docs: https://developers.salsify.com/docs/webhooks-prod-change
payload: Product CRUD API JSON export format, plus a parent_products array
trigger_types:
- add
- change
- remove
subscriptions:
- A product is added to this set
- Any property is changed on a product in this set
- One of the properties I've selected is changed on a product in this set
- A product is removed from this set
fields:
- 'salsify:destroyed_at - set with the delete date on destroyed products'
- 'salsify:parent_id - resolves a product to its entry in parent_products'
- trigger_type - add | change | remove
- name: digital-asset-change
docs: https://developers.salsify.com/docs/digital-asset-webhooks
payload: Digital asset CRUD API JSON export format
trigger_types:
- add
- change
- remove
subscriptions:
- A digital asset is added to this set
- Any property is changed on a digital asset in this set
- One of the properties I've selected is changed on a digital asset in this set
- A digital asset is removed from this set
fields:
- 'salsify:destroyed_at - set with the delete date on destroyed assets'
- trigger_type - add | change | remove
- name: import-completed
docs: https://developers.salsify.com/docs/imports-webhooks
payload: JSON notification sent when a Salsify import run completes
fields:
- result - status of the import, e.g. completed
- summary - total number of entities added or updated
- errors - array of error messages generated by the import
- error_log_url - URL of the full import error log
- total_error_count - number of errors generated by the import
- import_id - numeric Salsify identifier for the import
- import_url - URL of the Salsify import details page
related_operations:
- openapi/salsify-non-v1-endpoints-openapi.json#starting-an-import-run
- openapi/salsify-non-v1-endpoints-openapi.json#getting-the-status-of-an-import-run
- name: channel-notification
docs: https://developers.salsify.com/docs/webhook-signing
payload: Channel notification
note: >-
Listed by the webhook-signing guide as one of the four supported webhook categories;
Salsify publishes no dedicated payload reference for it on the developer hub.
security:
signing: asymmetric
algorithm: SHA-256
key_material: X.509 certificate
verification_docs: https://developers.salsify.com/reference/webhook-signature-verification-algorithm
certificate_caching_docs: https://developers.salsify.com/reference/certificate-caching
guidance: >-
Salsify instructs endpoint implementations to verify the digital signature on every
request and to ignore any request that cannot be verified.
delivery:
retries: 15 attempts over 48 hours
backoff: exponential
coalescing: >-
Multiple updates to the same entity in a short window may be coalesced into a single
webhook; a change that returns an entity to its original state may fire no webhook at all.
ordering:
- Multiple non-coalesced updates to the SAME entity are delivered in order.
- There is NO ordering guarantee across different entities.
list_edit_behavior: >-
Adjusting and saving the filters on a smart list does not trigger webhooks for products
that enter or leave the list; subsequent changes to those products do.