Ellipse Gradient for Header

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.

Integration pointSupported by Salsify?Common use casesHow Martini supports it
REST APIsYesRead and manage Products, Properties, Assets, Channels, Categories, and related product-content resources; query data with filters or pagination and perform updates where permitted.Martini can consume Salsify REST endpoints from workflows, apply authentication headers, paginate responses, map payloads, and expose normalized APIs for downstream applications.
Bulk / async / batch APIsYesHandle large catalog imports, exports, product-content synchronization, and marketplace-oriented data processing through asynchronous jobs.Martini can submit a bulk operation, store its job or export identifier, poll with a scheduler, retrieve results, validate data, and deliver bounded batches to target systems.
Webhooks / outbound callbacksLimitedReceive notifications for selected Salsify platform events or features when enabled for the account and relevant object. Coverage does not necessarily include every product-content change.Martini can expose a receiving API or webhook workflow, validate requests, deduplicate notifications, retrieve the current Salsify resource, and process it through orchestration logic.
File / attachment APIsLimitedRetrieve Asset metadata, download associated images or documents where permitted, preserve asset references, and process exports containing file references.Martini can orchestrate metadata and file movement, transform asset information, preserve identifiers and URLs, and retry large file transfers independently from product updates.
AuthenticationYesAuthenticate API calls with bearer access tokens, OAuth-based access where applicable, or provisioned API credentials, subject to Salsify account and API configuration.Martini can configure authorization headers and environment-specific credentials, while storing tokens, client secrets, and API keys in secrets rather than workflow logic.
GraphQL APIsNot confirmedNo official Salsify GraphQL API was confirmed for the researched core integration scenarios.Martini should use the documented Salsify REST or bulk mechanisms unless a tenant-specific Salsify product provides separate GraphQL documentation.
SOAP APIsNoNo current official Salsify SOAP API was confirmed.Martini integrations should use Salsify REST APIs, bulk operations, supported notifications, exports, and file-based mechanisms instead.
Database accessNot confirmedDirect access to Salsify's underlying platform database was not confirmed and is not an expected integration method.Martini should integrate through Salsify APIs, webhooks, exports, or supported file mechanisms rather than JDBC access to Salsify internals.

How Salsify exposes data and business events

Salsify REST APIs

Salsify REST APIs provide access to product content and related resources, including Products, Properties, Assets, Channels, Categories, and metadata. Available operations, fields, and permissions depend on the applicable Salsify API and account configuration.

Martini implementation pattern

Martini implementation pattern: configure the Salsify base URL and bearer-style authentication in environment configuration, call the required REST resources from a workflow, handle pagination and response validation, map the result into a canonical model, and write it to the target application or expose it through a Martini API.

Implementation sequence

Authenticate the REST request with a Salsify access token or provisioned credential
Retrieve the required Products, Properties, Assets, or related resources
Follow the documented pagination or incremental synchronization mechanism
Validate identifiers, required fields, locales, and property types
Map the Salsify response to the target application model
Write the result and persist synchronization state

Salsify bulk operations

Salsify supports bulk-oriented and asynchronous processing for larger product catalogs, imports, exports, and product-content synchronization. The exact job endpoint, file format, and lifecycle depend on the API product and tenant configuration.

Martini implementation pattern

Martini implementation pattern: submit or initiate the Salsify bulk operation, persist its job or export identifier, poll on a controlled schedule, retrieve the completed result, validate the contents, and deliver the data in bounded batches.

Implementation sequence

Submit or initiate the Salsify bulk operation
Store the returned job or export identifier
Schedule controlled status polling
Classify the job as pending, successful, failed, expired, or validation-error
Retrieve the completed export or result data
Transform and deliver validated records to downstream systems

Salsify webhook notifications

Salsify supports webhook-style notifications for selected events or features, subject to account and feature availability. Notifications should not be assumed to cover every Salsify object or product-content change.

Martini implementation pattern

Martini implementation pattern: expose a receiving API or webhook-consuming workflow, authenticate and validate the request, deduplicate the event, retrieve the current Salsify resource through REST when the notification is incomplete, and apply the downstream update.

Implementation sequence

Receive the Salsify notification at a Martini API or workflow trigger
Authenticate and validate the incoming request
Check the event or notification identifier for duplicates
Retrieve the current Salsify resource when the payload is incomplete
Apply mappings and business rules
Write the downstream update and record the processing result

Salsify asset handling

Salsify Assets may include images, documents, videos, metadata, and URLs associated with Products. File access, upload or download behavior, and permissions vary by API and account configuration.

Martini implementation pattern

Martini implementation pattern: retrieve asset metadata and permitted file content, preserve the relationship to the Product, transfer large files separately from product metadata, and retry file operations without duplicating successful product updates.

Implementation sequence

Retrieve Asset metadata and associated Product relationships
Resolve the permitted asset URL or file operation
Validate filename, MIME type, size, and source identifier
Transfer the file or reference to the destination system
Store the source and destination identifiers and URLs
Retry failed file transfers independently of metadata synchronization

Common Salsify integration patterns

Pattern 1: Synchronize Salsify products to a commerce platform

When to use this pattern

Use this pattern when Salsify is the approved source for enriched product content and an online store needs current descriptions, attributes, variants, and media. A schedule or supported Salsify notification can initiate the flow.

Integration direction
Salsify
Martini
Shopify
Example Mapping
Salsify FieldCanonical FieldTarget Field
Product.identifierproduct.externalIdShopify handle or external key
Product.descriptionproduct.descriptionShopify description
Properties.price or commercial attributeproduct.commercialAttributesShopify variant price
Asset.urlproduct.media.sourceUrlShopify product media
Martini implementation pattern

Martini retrieves changed Products, Properties, and Assets, validates mandatory storefront fields, applies locale and channel rules, maps the canonical model to Shopify, and performs idempotent upserts. It records checkpoints and separates retryable transport failures from permanent validation errors.

Martini capabilities used
  • scheduled workflows
  • API consumption
  • data mapping
  • business rules
  • idempotent upserts
  • error handling

Pattern 2: Distribute Salsify catalog content to marketplaces

When to use this pattern

Use this pattern when different marketplaces require distinct attribute names, category values, formats, or compliance fields. The workflow should reject incomplete content before submission and retain publication status.

Integration direction
Salsify
Martini
Amazon Seller Central
Example Mapping
Salsify FieldCanonical FieldTarget Field
Properties.titlelisting.titleAmazon listing title
Categories.identifierlisting.categoryAmazon product type
Properties.compliance attributeslisting.complianceAmazon compliance fields
Assetslisting.mediaAmazon product images
Martini implementation pattern

Martini selects the applicable Salsify Channel and Category context, validates marketplace requirements, transforms properties and asset references, submits the approved payload or feed through the available marketplace mechanism, and routes validation responses for correction rather than retrying permanently invalid data.

Martini capabilities used
  • workflow orchestration
  • mapping and transformation
  • validation
  • conditional routing
  • batch processing
  • error handling

Pattern 3: Synchronize Salsify assets with a DAM

When to use this pattern

Use this pattern when Salsify product content must be aligned with a dedicated digital asset repository or when asset metadata and files are managed across both systems.

Integration direction
Salsify
Martini
Bynder
Example Mapping
Salsify FieldCanonical FieldTarget Field
Asset.identifierasset.externalIdBynder asset ID or external key
Asset.filenameasset.filenameBynder filename
Asset.mimeTypeasset.contentTypeBynder media type
Asset.urlasset.sourceUrlBynder source or download URL
Martini implementation pattern

Martini compares asset identifiers and modification timestamps, retrieves permitted metadata or files, preserves Product-to-Asset relationships, and updates Bynder with stable keys. Large file transfers use independent retry and verification handling so a failed download does not repeat successful product processing.

Martini capabilities used
  • API consumption
  • file handling
  • data mapping
  • checkpointing
  • retry handling
  • workflow orchestration

Pattern 4: Load external product data into Salsify

When to use this pattern

Use this pattern when an ERP, supplier system, or commerce application owns identifiers, dimensions, operational attributes, or approved source content that must update Salsify Products and Properties.

Integration direction
NetSuite
Martini
Salsify
Example Mapping
Salsify FieldCanonical FieldTarget Field
item.skuproduct.identifierSalsify Product identifier
item.dimensionsproduct.dimensionsSalsify Properties dimensions
item.descriptionproduct.sourceDescriptionSalsify Properties description
item.categoryproduct.categorySalsify Category assignment
Martini implementation pattern

Martini receives or retrieves source changes, normalizes identifiers and units, applies ownership and conflict rules, validates the Salsify schema, and updates Products and Properties through REST or an approved bulk process. Stable keys, source markers, and checkpoints prevent loops and support safe retries.

Martini capabilities used
  • API consumption
  • scheduled workflows
  • data transformation
  • business rules
  • validation
  • checkpointing

Applications commonly integrated with Salsify

Salsify commonly participates in product-content, commerce, marketplace, ERP, and digital-asset architectures. Martini can coordinate these flows using Salsify REST APIs, bulk operations, supported notifications, scheduled workflows, validation, and reusable mappings.

Application Scenario Direction Martini Pattern
Shopify Publish approved product descriptions, attributes, variants, and media from Salsify to an online storefront. Salsify → Martini → Shopify Use a scheduled or supported event-driven workflow to retrieve changed Products, Properties, and Assets, validate required storefront fields, map them to Shopify payloads, and upsert using stable product identifiers. Record destination responses and retry transient failures.
Salesforce Commerce Cloud Distribute enriched product content and digital assets to a commerce catalog. Salsify → Martini → Salesforce Commerce Cloud Retrieve approved Salsify content and asset references, apply channel-specific transformations and mandatory-field validation, then call the commerce platform APIs. Process large catalog updates in bounded batches and isolate asset transfer failures from metadata failures.
Amazon Seller Central Prepare marketplace-specific product content, images, and compliance attributes. Salsify → Martini → Amazon Seller Central Read Salsify Products, Properties, Categories, and Assets, map channel-specific attributes to the applicable Amazon submission format or API, reject incomplete listings, and track submission and validation outcomes.
Walmart Marketplace Deliver product titles, descriptions, classifications, attributes, and media for marketplace listings. Salsify → Martini → Walmart Marketplace Use a workflow to select Walmart-specific content, validate required taxonomy and attribute values, transform the payload or feed, submit it through the approved marketplace mechanism, and retain listing status and error details.
NetSuite Exchange product master data, identifiers, dimensions, and selected commercial attributes between ERP and PXM processes. NetSuite → Martini → Salsify Receive or retrieve ERP product changes, normalize identifiers and units, validate ownership rules, and update Salsify Products and Properties through REST or an approved bulk process. Prevent synchronization loops with source markers and stable keys.
Akeneo Exchange product information when Salsify and Akeneo coexist during migration, regional operations, or system consolidation. Akeneo → Martini → Salsify Extract products from the system that owns each field, map attributes and classifications into the other model, apply conflict and ownership rules, and use checkpoints to support phased migration or bidirectional synchronization.
Bynder Synchronize digital asset metadata or approved asset references between Salsify and a dedicated DAM. Bynder → Martini → Salsify Compare asset identifiers and modification timestamps, retrieve metadata or files as permitted, preserve MIME types and filenames, and update Salsify Assets or product associations with independent retry handling for large files.
Salesforce Synchronize product, account, or commercial metadata used by sales and product-content processes. Salsify → Martini → Salesforce Expose or consume APIs for the owned data domains, map Salsify product content to Salesforce fields where required, validate business rules, and route rejected or duplicate updates for operational review.

How to build a Salsify integration in Martini

Objective

Establish Salsify access using the credential and permission model applicable to the API and account configuration.

Instructions in Martini

  • Configure the Salsify base URL and API-specific authentication settings
  • Store bearer tokens, OAuth client secrets, or API credentials in Martini secrets
  • Apply least-privilege organization, project, environment, and integration permissions
  • Test access against a non-production or appropriately scoped resource

Objective

Select an event, schedule, or bulk-job continuation strategy based on the Salsify object and event coverage required.

Instructions in Martini

  • Use a supported Salsify notification when the required event is available
  • Use a scheduler for incremental synchronization when notifications are unavailable
  • Use a scheduled polling workflow for asynchronous bulk jobs
  • Persist the last successful timestamp, cursor, page token, or job identifier

Objective

Retrieve Products and related resources without assuming that a single response contains the complete catalog.

Instructions in Martini

  • Call the documented Salsify REST resources
  • Follow pagination and bounded batch rules
  • Retrieve related Properties, Assets, Channels, or Categories as needed
  • Classify authentication, throttling, validation, and transient responses separately

Objective

Coordinate retrieval, enrichment, validation, transformation, target writes, and state updates as a maintainable Martini workflow.

Instructions in Martini

  • Branch by object type, channel, or destination requirements
  • Poll bulk jobs with controlled delays rather than tight loops
  • Use reusable workflow logic for common Salsify requests and response handling
  • Keep metadata processing separate from large asset transfer where appropriate

Objective

Convert Salsify's product-content model into the canonical and target application models.

Instructions in Martini

  • Map Products and Properties using stable identifiers
  • Normalize locales, units, enumerated values, and category assignments
  • Transform channel-specific attributes and asset references
  • Validate required fields before constructing target payloads

Objective

Enforce ownership, publication, classification, and data-quality rules before writing changes.

Instructions in Martini

  • Reject missing marketplace or commerce attributes
  • Prevent overwriting fields owned by another system
  • Route unmapped Categories and invalid Property values for review
  • Use idempotency keys and source markers to avoid duplicate updates and loops

Common Salsify data objects used in integrations

ObjectTypical UseCommon target systemsMartini handling
ProductsProduct records containing identifiers, descriptions, commercial attributes, and other product information.Shopify, Salesforce Commerce Cloud, Amazon Seller Central, Walmart Marketplace, NetSuite, SalesforceMartini retrieves or receives Products, follows pagination or incremental criteria, validates identifiers and ownership, maps fields, and performs idempotent downstream upserts.
PropertiesAttributes and fields used to describe, classify, localize, or validate products.Commerce platforms, marketplaces, NetSuite, Salesforce, AkeneoMartini normalizes property names, types, locales, units, enumerated values, and required fields before applying channel-specific mappings and business rules.
AssetsImages, documents, videos, and other digital content associated with Products.Shopify, Salesforce Commerce Cloud, Amazon Seller Central, Walmart Marketplace, BynderMartini preserves asset identifiers, filenames, MIME types, relationships, URLs, and timestamps while processing large downloads independently where appropriate.
ChannelsMarket-specific or destination-specific publishing contexts for product content.Marketplaces, commerce platforms, downstream feed servicesMartini uses channel context to select required attributes, validate destination rules, transform payloads, and track publication or export outcomes.
CategoriesClassification structures used to organize products and map content to destination taxonomies.Amazon Seller Central, Walmart Marketplace, commerce platforms, AkeneoMartini maps category identifiers and taxonomy values, validates assignments, and routes unmapped or invalid classifications for correction.
Projects or OrganizationsAdministrative and operational containers controlling access and organizing Salsify data.Identity, governance, integration administrationMartini keeps organization, project, environment, and permission configuration outside business payloads and uses least-privilege credentials for each integration context.

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.

Frequently asked questions

How can Salsify be integrated with enterprise systems?

Salsify can be integrated through its REST APIs, bulk and asynchronous processing mechanisms, asset and file handling capabilities, and webhook-style notifications for selected events or features. Scheduled workflows are appropriate for incremental synchronization where event coverage is unavailable.

Can Martini integrate with Salsify?

Yes. Martini can consume Salsify REST APIs, orchestrate bulk job submission and polling, process Products, Properties, Assets, Channels, and Categories, receive supported webhook notifications, and synchronize data with enterprise applications through workflows and APIs.

Do I need a connector to integrate Salsify with Martini?

No. A dedicated Salsify connector is not required. Martini can use Salsify's confirmed native REST APIs, bulk mechanisms, supported webhook notifications, asset access, authentication methods, and file-based processes.

Is there any extra Lonti cost to integrate Salsify with Martini?

Lonti does not charge an additional per-connector or per-vendor fee to integrate Salsify. The integration is subject to the provisioned capacity of the Martini environment. Separate costs may apply from Salsify, cloud infrastructure, or other third-party systems based on subscriptions, usage, and deployment models.

Which Salsify integration methods should an enterprise use?

Use the Salsify REST APIs for resource-level reads and updates, bulk or asynchronous operations for large catalogs, and supported webhook-style notifications for selected event-driven scenarios. Use scheduled incremental synchronization or exports for objects and changes not covered by notifications. No current official Salsify GraphQL or SOAP API was confirmed.

Are Salsify webhooks available for product changes?

Salsify supports webhook-style notifications for selected events or features, subject to account and feature availability. Coverage should be verified for the specific object and event; unsupported changes should be handled through scheduled incremental synchronization or bulk exports.

How does Martini synchronize large Salsify catalogs?

Martini can use pagination for REST retrieval or orchestrate Salsify bulk jobs by submitting a job, storing its identifier, polling on a schedule, retrieving the result, validating it, and delivering bounded batches. Checkpoints, stable identifiers, and retry classification support resumable processing.

How does Martini handle Salsify mapping, errors, and duplicate events?

Martini maps Salsify Products, Properties, Assets, Channels, and Categories into canonical and target models, while validation and business rules protect required fields and ownership boundaries. Workflows can use stable identifiers and event IDs for idempotency, exponential backoff for transient failures, and separate handling for validation errors, throttling, and duplicate notifications.