Salsify · AsyncAPI Specification

Salsify Webhooks

Version

View Spec View on GitHub CompanyProduct Experience ManagementProduct Information ManagementDigital Asset ManagementCommerceRetailSyndicationData ManagementSaaSAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
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.