Catalog visibility

A product appearing in the Admin API does not automatically make it purchasable in a storefront. Visibility is the intersection of product state, variant state, publication timing, store distribution channels, and sellable price and inventory context.

The visibility model

  1. Create a DISTRIBUTION channel and attach it to a store.
  2. Create the product and variants with an appropriate status. DRAFT is useful while content and commercial data are incomplete; ACTIVE is required for a live catalog.
  3. Publish the product and each sellable variant to the store’s distribution channel.
  4. Set publishedAt and, when relevant, availableForPurchaseAt. A future timestamp delays the corresponding behavior.
  5. Add a price that matches the storefront’s price channel, currency, country, customer group, and validity window.
  6. If inventory is tracked, add inventory on a supply channel used by the store and ensure stock is available.

The Storefront API applies the request’s store and pricing context when resolving products. A missing publication or a context-mismatched price can therefore make an otherwise active product absent or unsellable.

Channels have distinct jobs

Channel flags define where a channel may be used:

  • DISTRIBUTION controls catalog publication and storefront availability.
  • PRICE scopes prices.
  • SUPPLY scopes inventory.

A channel can carry multiple flags, but separate channels are often easier to operate when markets have different catalogs, currencies, or warehouses. Channels must be ACTIVE to participate in live commerce.

Publish explicitly

You can include publications in ProductCreateInput, or publish later with productPublish. Variants have their own publications and can be managed with productVariantPublish.

Code in graphql

Publishing a product does not implicitly publish every variant. Treat product and variant publication as two explicit steps in catalog synchronization.

A practical launch checklist

  • Store points to the intended distribution, price, and supply channels.
  • Product and intended variants are ACTIVE.
  • Product and variants are published to the store’s distribution channel.
  • Publication timestamps are not in the future.
  • At least one valid price matches the Storefront request context.
  • Tracked inventory is available on an applicable supply channel.
  • The Storefront request supplies the intended storeId and price context.

When an item is missing, verify these layers in this order. It is faster than repeatedly changing product status because visibility is deliberately contextual.