Skip to main content

Multi-channel support for sales channel apps

Sales channel apps can now create and manage multiple channel connections from a single app. A single app can now establish more than one channel on a shop, with a separate specification and/or external account for each connection.

Why this matters

If you build a sales channel app that needs separate connections for different accounts or to sell in different markets or have different surfaces, you no longer need to split that model across multiple apps. You can keep those connections inside one app and manage them as distinct channels.

What's new

  • A single sales channel app can establish multiple channels on the same shop.
  • Sales channels can now uses the Channel Config extension plus one specification file per target channel.
  • Each channel can point to a different specification and external account.

What partners should do

For new sales channel apps

  • All new sales channels should add a Channel Config extension.
  • Define one specification file per target channel.
  • Use channelCreate with a specificationHandle, accountId, and accountName to create each channel connection.

For existing sales channel apps

  • Migrate legacy sales channel app to use channel connections using this guide
  • Review any downstream code that assumes one channel per app. If your app reads or mutates channel-specific state, pass a channel ID instead of relying on app-level defaults.

New APIs in this release

  • channel

  • channelCreate

  • channelByHandle

  • channelUpdate

  • channelDelete

  • channelFullSync

APIs impacted by this release

Deprecated: These single-channel APIs are now deprecated. They still function today but will be removed in a future API version:

Deprecated APIUse instead
publishablePublishToCurrentChannelpublishablePublish
publishableUnpublishToCurrentChannelpublishableUnpublish
AppInstallation.channelRoot-level channels query
AppInstallation.publicationRoot-level publications query
Product.publishedOnCurrentPublicationpublishedOnPublication
Publishable.resourcePublicationOnCurrentPublicationresourcePublications

Updated: These APIs now accept an optional channelId input to specify which channel the operation applies to. If your app creates multiple channels, you must pass channelId. If your app has a single channel, existing calls continue to work without changes:

Was this section helpful?