Hide products not stocked at a location in Shopify POS
If you run more than one shop, Shopify POS shows every product you sell at every till — including the ones that location has never stocked. Staff scroll past them, and worse, they find them in search and sell them.
(This page is about your store locations, not your customers' countries. If you are looking to hide products from shoppers in particular countries, that is a different setting entirely.)
There is still no native way to make an unstocked product disappear from a location's POS. Shopify staff have confirmed it twice, three years apart. What changed in August 2025 is that Retail Markets now lets you build a per-location catalog — the first real mechanism — but it is manually curated, it needs POS Pro, and almost nothing written about this problem mentions it exists.
The two routes below are a hand-curated catalog on POS Pro and a free collection pinned to the POS home screen, and neither one watches your inventory: nothing in Shopify connects "not stocked at this shop" to "hidden at this shop". That link is what merchants have been asking for since 2021, and it still has to be built.
What it actually costs
The problem is not tidiness. It is that staff sell things the shop does not have.
Our staff confuses items constantly when using search that are stocked at other locations and they shouldn't be selling. Just adding in my August 2025 experience here that it is STILL not possible to restrict product to certain POS locations.
— AndrewDB, Shopify Plus merchant, 5 September 2025
The clearest picture of the daily cost comes from a merchant selling at trade shows:
We use Shopify POS to sell at consumer events like expos and trade shows, and only bring a small, curated sampling of our full product line to each event. The Products tab is essentially useless to us as it's not feasible to scroll through a hundred products to find one of the ten items we brought to a show to sell.
— KaylaLynn, 26 June 2024
A hundred products on screen, ten of them real — and in a queue the mistakes follow, as another merchant in that thread put it: "this is a cluttered mess to scroll through and very easy when it gets busy to make a mistake" (MBowland, 27 July 2024). One merchant did everything right and still got caught, days before an event:
Hosting a pop-up sale event this weekend and did the work of creating a new location and moving products over to the separate location to create an easier/faster check-out … but come to find out that you can still see and sell through all inventory and it's not actually limiting inventory view at all.
— shopoddbird, 11 June 2026
That is the trap worth naming clearly, because it is the reasonable assumption: creating a location and assigning stock to it does not restrict what that location can see or sell. A Shopify Partner replying in that same thread put it plainly: "Shopify locations don't restrict the inventory view; they are just for tracking or reporting, not access control."
POS will let you sell what is not there, without warning
This is the half that is easy to miss until it bites: it is not only that the wrong products are visible, it is that POS does not stop the sale. And there is a sourced reason no app will hand you a hard block at the till — Shopify's cart and checkout validation functions, the mechanism that refuses a checkout, do not run on POS at all. Its own API page lists the surfaces and marks POS "Not supported" while Checkout, Storefront and Cart are supported (read 13 October 2026), and Shopify staff have confirmed it twice on the developer forum, in January 2025 and again in September 2026. That is why every real answer on this page is about what the till shows rather than what it refuses.
In Shopify POS, however, there's no indication that an item is out of stock, and the system lets me sell it. In fact, I can sell 100 of an item that is out of stock, if I wanted to. This is an issue for us. We may have an item in the retail store that has already been sold online, or for some other reason we've set the inventory to zero. I don't want to oversell in our POS.
— PaulM-AC, 31 August 2022
The advice he received in that thread is worth quoting, because it is what "solved" looks like today:
The system informs the cashier when inventory is 0. Just tell your staff not to sell an item whose inventory is 0.
— HKJ, 14 October 2022
That is a training instruction standing in for a control. Another merchant in the same thread asked for the smaller version of the fix and did not get it either: "if not, so at least not being able to add it to cart will be a good start."
If you have ever reconciled a stock count and found a negative number, this is usually where it came from.
And the same gap runs backwards through your online store, if you sell both ways: split your stock between a shop and a warehouse and the storefront starts showing retail-only stock as sold out, because "granular inventory data is not provided to the theme system", as a Shopify Partner put it in the thread where a merchant reported it — "items that have quantity available in the Retail location are showing up on our store page but as 'sold out'" (Vriess, 27 December 2023). A tag maintained by Shopify Flow fixes that half for online-store collections and does nothing for the POS grid.
Shopify has confirmed this twice, three years apart
July 2021, Shopify staff, in the thread that is still the top result for this question:
The Shopify POS was designed to show all of your products on the POS as the app assumes you have inventory on hand, because you are selling in person. These products will still show on your POS even if you don't have inventory.
— Tira, Shopify staff, 9 July 2021
A week later, the same staff member: "There isn't a way to restrict products by location."
June 2024, a different Shopify staff member, in the same thread:
At this time, it's not possible to natively restrict items from appearing in Shopify POS depending on the POS location being used. However, we've received loads of feedback around this over time…
— Imogen, Shopify staff, 26 June 2024
Merchants kept arriving between and after those two — "A solution requested from 2021 and still not resolved" (December 2024), and the September 2025 post above.
Route 1 — A collection per location on the POS home screen
This is the workaround Shopify itself proposed in 2021 and it is still the free answer. Build a collection containing what a given shop actually sells, then pin it as a tile on that location's smart grid.
One refinement worth copying, from a merchant who uses it: set the collection's sales channel to Point of Sale only, so these location collections never appear on your online store.
Where it stops, and this is the part no guide tells you
It does not touch search. A tile is a shortcut, not a filter. The moment a staff member types into the search box, every product in your catalogue is back — which is exactly how the mistakes happen. The original 2021 post said it: "Gold Ring shows up on search / in collections even though it's not stocked there." Four years later: "staff confuses items constantly when using search."
And it will not maintain itself. You cannot build a smart collection on "stocked at this location", because that condition does not exist. The only inventory condition available counts total stock across every location — a merchant discovered this the hard way when adding a POS location silently broke his sold-out filtering, because items sold out online were still in stock in the shop and stayed in the collection.
So every new product, every seasonal change, every transfer means editing collections by hand. As one merchant put it: "If you get new products you now need to double check they are showing up where you want them."
Honest verdict: worth doing if your product list is small or your assortments rarely change. If you have hundreds of SKUs across several shops, you are signing up for permanent manual upkeep — and search still leaks.
Running pop-ups where the assortment changes every weekend? Describe your assortment and we keep each till current →
Route 2 — Retail Markets catalogs
This is the genuinely new thing, and it is missing from almost everything written about this problem. Shopify shipped Retail Markets on 19 August 2025: location-specific catalogs that let different shops sell different products at different prices. Shopify's documentation states that retail markets "use POS locations as their condition" and that catalogs let you "offer different products at different retail locations."
Requirements: POS Pro, POS version 10.3 or above. Customising catalogs requires POS Pro or Shopify Plus.
How membership works — this is the crucial detail. Catalogs are curated by hand. Shopify's own instruction: "By default, all products are included. To exclude a product, select its checkbox, and then click Exclude from catalog." You can also manage it by CSV.
There is no inventory-driven option in the admin. Nothing in the feature connects "this product is not stocked at this location" to "exclude it from this location's catalog", and Shopify Flow cannot edit catalogs. If you want exclusions that follow your stock automatically, that has to be built.
One correction to what the rest of the internet says about this, checked on 16 September 2026. "Catalogs are hand-curated" is true of the admin and not true of the platform. A location market "targets a specific POS location", its catalog carries a publication — "customers that belong to the associated market or company location have access to view and purchase only the products within the publication" — and membership is editable in one API call. So "stock hit zero at this shop, take it out of this shop's catalog" is a thing software can do. Nothing off the shelf does it today, and it is not the dead end it is usually described as. If you are briefing a developer, that is the route to brief.
Check this yourself before relying on it. Shopify's documentation says catalogs control which products are available at a location — but none of the pages we could find state whether an excluded product also disappears from POS search, which is where the real damage happens. Test it before you rebuild your assortments around it: exclude one product from a location's catalog, open POS at that location, and search for it by name. Two minutes, and it decides whether this route solves your problem or half of it.
Worth knowing: merchants were still reporting the problem as unsolved in September 2025 and June 2026, after Retail Markets shipped.
On POS Lite, or need exclusions that follow stock? Describe what each shop sells and we build the rule →
Five things that look like solutions and are not
Assigning staff to locations. This restricts where a staff member can log in. Shopify's documentation is explicit that it "only restricts where they can use their PIN to access the POS app" — and that they "can still view inventory levels and orders" for other locations. It is an access control, not a visibility filter.
POS UI extensions. If you were hoping a developer could filter the product grid with an app extension: they cannot. Shopify's extension targets cover the home screen, product details and the cart — there is no target on the product grid, the product list, or search results. An extension can build its own location-aware product browser inside a modal, but it sits alongside the native grid rather than replacing it.
Marking products "unlisted" or unpublishing them. These control the online store. They do nothing for POS.
Duplicating products per location. Suggested often, and it splits a product's sales history and inventory across two records. One merchant looking at the same problem in 2026 ruled it out immediately: he wanted to "avoid creating multiple variants/SKUs to manage this."
Zeroing out or transferring stock before every event. It works, in the sense that it changes what POS shows — by making your inventory records temporarily untrue at the location you took the stock from. Fine once. Not a process.
And check which plan a route needs before you commit to it. Several of the answers here are POS Pro features and merchants find that out mid-problem — one running a pop-up alongside a warehouse was told to use Ship to Customer for stock held elsewhere and replied "We are on Pos Lite and ship to customer is a Pos Pro feature" (skippyinspace, 9 October 2024), and the thread ends there. Retail Markets catalogs need POS Pro; the free collection workaround is the only route that does not.
Which route is yours
| Your situation | Route |
|---|---|
| Small catalogue, assortments rarely change, on POS Lite | Collection per location — free, accept the manual upkeep |
| Deliberate, stable per-shop assortments, already on POS Pro | Retail Markets catalogs |
| Staff keep finding wrong-location items in search | Test Retail Markets first; if search still leaks, neither native route solves it |
| Assortment changes every event or weekend | Manual curation will not keep up |
| You want "not stocked here" to mean "not shown here", automatically | Nothing native does this — it has to be built |
The last row is the one merchants have been asking for since 2021, in almost the same words each time: "why can't a collection filter by 'stocked at location'?" · "simple to add a location filter at the very least" · "If you only have something stocked at one location, it should simply be showing up ONLY AT THE ONE LOCATION. This is basic functionality."
What this is costing you now
Two numbers are worth writing down before you spend anything: the minutes a day your team loses scrolling past products that are not in the building, and how often someone sells an item this shop does not have — each of those being a refund, an apology or an unplanned transfer. Weigh them against POS Pro if you are not on it, and against the hours of collection maintenance the free route needs every month.
The third cost shows up on no invoice. Merchants in these threads reach a point where the till stops being trusted — "essentially useless", "clogged up" — and then they start looking elsewhere:
It takes the staff enormous time sorting through unavailable items to find the item that is actually being purchased. So time consuming. We are looking into other systems and wonder if others have found better solutions?
— kwypych, 25 January 2023
Losing confidence in the till? Describe what your staff should see and we build it →
A fourth option: make "not stocked here" mean "not shown here"
Every route above asks you to maintain a list by hand. The thing merchants have actually been requesting for five years is a rule: if it is not stocked at this shop, do not show it at this shop.
Shopify reports stock per location. Shopify can tag a product. What has never existed is anything joining the two — the stock event does not say which product it is about, so there has been nothing for the rule to aim at.
That join is what Shopivibe built, and here is exactly what it does. You say it in plain language — "at the Camden shop, when we run out of something, take it off the Camden till's list, and put it back when it arrives" — and from then on:
- The moment Camden's shelf hits zero, that product is tagged for Camden.
- The moment stock arrives, the tag comes off again.
- It is about Camden only. Soho running out changes nothing at the Camden till, and the reverse.
You point one of Shopify's own automatic collections at that tag and pin it to that location's POS home screen. The difference from Route 2 is not the collection — it is that the list keeps up with your stock without anybody maintaining it, which is the one thing hand-curated catalogs cannot do.
It needs no permission your store has not already been asked for, and nothing for you to run.
The search box, before you decide
Shopify documents what a collection tile does to the grid. It does not document whether a product kept out of that collection is also kept out of the POS search box — so settle it in two minutes at your own till: exclude one product, open POS, search for it by name. If search still finds it, the rule is built the other way round, on a per-location catalog — which is a POS Pro feature, and which is said in the same conversation rather than after you have paid.
Two things to say when you describe it:
- Stock that has not moved since before you connected us. The rule follows your store's own events from the day it is connected — a product is known to us once it is created, edited, sold, or its stock moves — so your existing shelves are loaded for you as part of the build rather than waited for. Say which shops hold that kind of stock and it is covered with the rule.
- Products with more than 100 variants are only partly described in the data Shopify sends. Name them and the rule is built to match those shelves by product rather than guessing at one.
Be straight about the comparison. If your assortments are stable and you are already on POS Pro, Retail Markets is included in what you already pay Shopify and you should go and use it today. That answer does not involve us. Where it stops being true is when the list has to keep up with your stock, which is every pop-up, every event, and every shop whose shelves change weekly.
If this is your problem, describe which shops and which tills in your own words, and a person here takes it on straight away and has it working in your store within 24 hours — starting with the search check above, at your own till.
And it needs neither POS Pro nor Plus, because it runs on the free route: a tag, one of Shopify's automatic collections, a tile on that till's home screen. If you are on POS Pro and would rather the rule kept a catalog up to date instead of a collection, say so and it is built that way — and the next rule after this one, receiving or transfers or a stock-aware lookup for staff, goes in as another layer of the same app rather than a fourth vendor's reading of your shop.
Shopivibe solves the problem in your store and keeps what it adds maintained, including when Shopify changes something underneath. Shopivibe is free during early access, with 3,500 credits included. Credits beyond the included 3,500 cost $0.06 each.
Till showing what the shop does not have? Describe which shops and which tills →
Checked against Shopify's documentation and the App Store on 16 September 2026.