1. Enable the channels you want to filter by
Open Settings → Sales channels
In the Glood.AI app, go to Settings → Sales channels. The section lists every sales channel installed on your store (Online Store, Point of Sale, Headless, Google & YouTube, and so on).Select channels and save
Tick the channels you want to be able to filter by and click Save.Saving a new selection re-indexes the publication ids of every product. This runs in the background and can take a few minutes on large catalogs. Requests that pass a
publicationIds value for a channel that is not enabled here are rejected with 400.2. Pass publicationIds on the API
Every product-returning endpoint accepts an optional publicationIds field:
- Headless:
/v3/headless/sections,/v3/headless/recommendations,/v3/headless/recommendations/automatic,/v3/headless/recommendations/top - Theme and checkout:
/v3/sections,/v3/sections/paginated,/recommendations/checkout,/post-checkout,/recommendations/customer-account
The filter applies to V3 recommendations.
/v3/headless/init returns no products and rejects the field with 400, and the legacy V2 widget endpoints (/widgets/template, /v2/headless/widgets, /v2/headless/recommendations) do not accept publicationIds either.gid://shopify/Publication/30085840999 → 30085840999). You can read it from the Shopify Admin GraphQL publications query, and POS and headless integrations can store it once per shop.
POST /api/storefront/v3/headless/sections
What the filter does
Every recommendation strategy honours the filter, including fallbacks such as trending and recently launched, on both the default host and Edge regions.
Good to know
- Bundle component lookups and the email recommendation fallback are not channel-filtered.
- Products published to a channel but not to the Online Store are not indexed yet, so a POS filter returns the products that are on both. Ask us if you need channel-only products indexed.
- Publishing or unpublishing a product on a channel in Shopify updates the index through the normal product webhooks; no re-save is needed in the app.