.png)
Salsify Integration Guide
Connect Salsify product content, properties, assets, channels, and bulk operations with enterprise applications through REST APIs, workflows, scheduled synchronization, and selected webhook events.
Salsify integration options at a glance
Salsify provides REST APIs for reading and managing Products, Properties, Assets, Channels, Categories, and related resources. Its bulk and asynchronous capabilities support large catalog imports, exports, and product-content synchronization, while webhook-style notifications are available for selected events and features subject to tenant configuration. Asset integrations may involve metadata, file downloads, URLs, and product associations. Martini can consume Salsify APIs, paginate through catalog data, submit and poll bulk jobs, receive supported notifications, transform content for downstream applications, and run scheduled incremental synchronization. Bearer tokens, OAuth-based access where applicable, and provisioned API credentials can be stored securely in Martini environment secrets.
Common Salsify integration patterns
Common Salsify data objects used in integrations
Authentication and security considerations
Bearer-token authentication
Salsify integrations generally use bearer access tokens, OAuth-based access where applicable, or provisioned API credentials. The exact method depends on the Salsify API product and account configuration.
Least-privilege access
Permissions may be scoped by organization, project, environment, user, or integration. Configure only the access required for the workflow and target data.
Secrets management
Store Salsify tokens, client credentials, API keys, and environment-specific settings in Martini secrets and configuration rather than embedding them in mappings, source code, or request payloads.
Operational considerations for Salsify integrations
Pagination and incremental state
Large catalogs require documented pagination, bounded batches, and persisted cursors, page tokens, timestamps, or export identifiers. Do not assume one response contains the full catalog.
Rate limits and retries
Use request pacing, bounded retries, exponential backoff for transient 429 and 5xx responses, and Retry-After values when supplied. Separate authentication failures and permanent validation errors from retryable transport failures.
Bulk jobs
Asynchronous operations should distinguish submission failure, in-progress status, successful completion, validation errors, and expiration. Poll with a scheduler rather than a tight loop.
Schema and asset changes
Validate Property types, locales, units, Categories, required identifiers, and Asset references. Treat large files separately, preserve MIME types and filenames, and verify URLs or content details where available.
Idempotency and observability
Use stable Salsify identifiers and destination keys for upserts. For notifications, store event identifiers when available and retrieve current resource state before applying incomplete event payloads. Log object identifiers, endpoints, HTTP statuses, job IDs, and destination responses.
Why use Martini instead of scripts or point-to-point integrations?
Orchestrated integration logic
Martini coordinates REST calls, scheduled workflows, webhook intake, bulk-job polling, pagination, target writes, and state management in one maintainable integration flow.
Reusable mappings and rules
Instead of duplicating transformation logic across scripts or point-to-point connections, Martini centralizes mappings for Products, Properties, Assets, Channels, and Categories and applies reusable validation and ownership rules.
Reliable operations
Martini supports controlled retries, idempotency strategies, error routing, checkpoints, and operational logging so transient API failures and permanent data-quality problems can be handled differently.
Flexible enterprise delivery
Martini can consume Salsify APIs, expose normalized APIs for downstream applications, and connect the resulting workflows to commerce platforms, marketplaces, ERPs, DAMs, files, and other enterprise endpoints without requiring a dedicated Salsify connector.