UNLISTED Product Status Inconsistency: Not queryable or purchasable via POS UI Extensions

Hi Shopify Team & Community,

We are encountering a critical blocking issue regarding the new UNLISTED product status in the context of Shopify POS UI Extensions.

Context: As per the recent changelogs (see: New unlisted product status), the UNLISTED status allows products to be hidden from search and collection listings while remaining purchasable via direct links or programmatic access.

The Issue: This behavior works as expected on the Online Store channel (the item is hidden but can be added to the cart programmatically). However, on Shopify POS, UNLISTED products appear to be completely inaccessible to POS UI Extensions.

When our app attempts to add an UNLISTED product to the cart or query it via the POS UI Extension API, the system acts as if the product does not exist.

Observed Behavior (POS):

  1. API Query: The product returns publishedOnPOS: false when queried, even if it is available to the publication.
  2. Add to Cart: Attempting to add the line item via a POS UI Extension results in a ā€œ1 product wasn’t foundā€ error.
  3. Visibility: The product is correctly hidden from the POS smart grid/search (this is the only part working as expected).

Expected Behavior: We believe the UNLISTED status should function on POS exactly as it does on the Online Store:

  • Discovery: Hidden from the native POS UI (Search/Collections).
  • Accessibility: Available to be queried via POS UI Extension APIs and allowed to be added to the cart programmatically by apps.

This is critical for apps that manage complex workflows (like custom modifiers, ā€œsecretā€ menu items, or service fees) where we need the item to exist transactionally but do not want it cluttering the merchant’s visual grid.

Technical Details & Reproduction:

1. Example Query We are querying the location to get the product details.

query getLocationById($id: ID!, $publicationId: ID!, $includePublication: Boolean!) {
  location(id: $id) {
    id
    # ... (fetching collection list)
              products(first: 250) {
                nodes {
                  id
                  status
                  publishedOnPOS: publishedOnPublication(publicationId: $publicationId) @include(if: $includePublication)
                  title
                  # ...
                }
              }
  }
}

2. API Response The response shows the status is UNLISTED, but publishedOnPOS returns false. This appears to be the root cause of the ā€œProduct not foundā€ error when attempting to add to cart.

{
  "id": "gid://shopify/Product/8758711156973",
  "status": "UNLISTED",
  "publishedOnPOS": false,
  "title": "Hot Chocolate - Tax On"
}

3. Error Screenshot When attempting to add this specific ID to the cart via the extension:

Request: Can the Retail team please confirm if this parity gap between Online Store and POS regarding UNLISTED items is intended behavior? If so, is there a workaround to allow apps to transact UNLISTED items on POS?

Thanks!

Hey Adam - it’s possible that this is an intended part of this unlisted product feature, I’m digging into this now on my side.

1 Like

Hey Liam,

Thanks so much for checking this for me, it is very much appreciated :slight_smile:

Adam

Hi again @adamwooding

Just to confirm this is a known limitation of how unlisted products work with POS currently, but it’s on our radar to address.

1 Like

Hey @Liam-Shopify and Shopify POS dev team,

I wanted to check in on this issue to see if there has been any progress? We have a lot of merchants that are trying to use the unlisted product status, but are unable to as our app cannot access unlisted product data via the POS UI Extensions api, nor can we add an unlisted product to the cart.

It would be extremely helpful to have parity between how the unlisted product status behaves in the online store sales channel, and how it behaves in the POS sales channel.

Thank you so much :slight_smile:

Hey @adamwooding

I don’t believe there’s any update on this currently, will let you know when there’s more to share.

1 Like