Can I filter Admin API products by sales channel?

Topic summary

Goal: Filter Admin/Bulk API product results to only those active in the current sales channel, avoiding post-fetch filtering.

What’s known:

  • Earlier guidance (REST): use the products “published_status” filter. Options:
    • published, unpublished, any → pertain to the Online Store channel.
    • [channel_name]:[hidden|visible] (URL-encoded) to target a specific channel (e.g., buy_button%3Avisible).
  • Workaround used with Bulk API (GraphQL): include publishedOnCurrentPublication and filter client-side after export.

Recent update/limitation:

  • After migration from Private apps to Custom apps, Custom apps no longer have an app handle. Without an app handle, the [channel_name]:[hidden|visible] pattern can’t target a Custom app’s sales channel. As a result, the previously accepted approach does not work for all cases.

Status and open questions:

  • No confirmed server-side filter for Custom apps’ sales channels via Admin/Bulk API was provided.
  • Documentation for “publishable_status” remains unclear in this context.
  • Thread remains partially unresolved; current practical approach is client-side filtering via publishedOnCurrentPublication.
Summarized with AI on February 1. AI used: gpt-5.

When using the admin/bulk API, is it possible to request only the products that are active in the current sales channel?

I do see there’s a publishable_status filter that looks like it could be relevant but I can’t find documentation on what that filter is for or what the possible values are.

Our solution so far has been to add the publishedOnCurrentPublication field to the query so we can filter them out after we source the data from the bulk API. But it would be swell if we could avoid fetching the unwanted ones altogether!

1 Like

It looks like the answer is in another thread

the published_status of a Product resource indicates what channel the product is available on. Using the values published, unpublished, or any, the channel used is the online store. There is flexibility to select products from a specific channel also. You can use the following [channel_name]:[hidden|visible] as the value (the value should be url encoded). For example finding all products published on the Buy Button channel would use /admin/api/2020-10/products.json?published_status=buy_button%3Avisible

Getting back to this answer year later.

I’ve noticed that after migration of Private apps to Custom apps – the latter are not having an app handle assigned, therefore Custom app’s Sales channels cannot be used anymore in [channel_name]:[hidden|visible] pattern to filter out products visible for particular App’s Sales channel.

This said – accepted answer is no longer valid for all cases.

1 Like