For the complete documentation index, see llms.txt. This page is also available as Markdown.

Sales Channel Publishing

How a Violet channel appears as a native Shopify sales channel, letting merchants choose product-by-product which products they share.

When a Violet channel is set up as a Shopify sales channel, the channel appears in the merchant's Shopify admin alongside their other sales channels. The merchant decides, product by product, which products are available to that channel, and Violet syncs only those.

This replaces the previous behavior, where connecting a Shopify store shared the merchant's entire catalog with the channel.

This is the shared concept page for the feature. The rest of this section builds on it:

How Shopify models this

Two Shopify concepts do the work. You'll see both names throughout our documentation and in the Shopify API.

Channel. A destination where a merchant's products can be sold: their online store, point of sale, a marketplace, or an app like yours. When a merchant connects to a Violet channel configured for this feature, Violet creates a channel on their store during setup. The channel is named after the Violet app, so merchants see the partner's brand rather than "Violet."

Publication. Every channel has an associated publication: the set of products the merchant has made available to that channel. The publication is the actual list Violet reads from. A product that is not in the publication does not exist as far as the channel is concerned.

In the Shopify admin, merchants never see the word "publication." They see a checkbox for the channel on each product, and the act of ticking it is what adds the product to the publication.

Who controls what

Violet
Merchant

Creating the channel on the store

✅ automatically, during setup

Deciding which products the channel gets

✅ entirely

Syncing the published products

✅ continuously

Removing a product from the channel

Violet never publishes or unpublishes products on the merchant's behalf. Product selection is the merchant's decision, made in their own admin, and it can change at any time without notice to the channel. This is the point of the feature: merchants get explicit, granular control over what they share, using the same interface they already use for every other sales channel.

The three states of a product

Not published. The merchant has never made the product available to the channel. Violet does not sync it, and no record of it exists in the channel's catalog. New channels begin with every product in this state.

Published. The merchant has made the product available. Violet syncs it and it appears in the channel's catalog as an Offer, with each Shopify variant as a SKU.

Unpublished after having been published. The merchant has removed the product's availability. Violet marks the corresponding Offer publishing_status: NOT_PUBLISHED, and the product stops being sellable through the channel. Nothing is deleted: the Offer keeps its id, its data, and its SKUs, and its status, available, and visible are unchanged, because the product still exists and can keep selling in the merchant's own store. Re-publishing sets publishing_status: PUBLISHED again, on the same Offer.

What this feature does not change

Sales channel publishing controls catalog membership only. Everything else about a Shopify connection behaves exactly as it did before:

  • Order submission, order status, fulfillment, and refunds

  • Inventory quantities and multi-location inventory

  • Pricing, including contextual and multi-currency pricing

  • Product data: titles, descriptions, media, variants, options, metafields

  • Existing catalog rules such as collection filters and excluded tags or vendors, which continue to apply on top of publication filtering

Orders that were already placed are never affected by a merchant unpublishing a product.

Last updated

Was this helpful?