Showing a product to trade buyers and nobody else
A trade-only range is one of the few things Shopify does natively and does properly — but the recipe has a step people skip, and the popular shortcut hides the product from the page without hiding it from anybody determined. The difference matters most in exactly the cases you built the restriction for.
Shopify can show a product to your trade accounts and hide it from everyone else, natively, and it says so plainly:
"After you complete these steps, the product is visible only to B2B customers who have access to the B2B catalogs, and is hidden from D2C customers browsing your online store."
The steps are short: publish the product to your online store, remove it from all of your region catalogs, then publish it to the B2B catalogs that should have it.
The middle step is the one people skip, and it is the one doing the work. A product left in even one region catalog is still on sale to retail customers — the B2B publication adds an audience, it does not subtract one.
The two gates
A product is visible to a given buyer only when both of these hold:
"For a product to be available on a sales channel, the product must be included in a catalog assigned to the market and made available to the channel on the product details page."
So "it is in the trade catalog" is not enough on its own, and neither is "it is published to the online store". When a trade customer tells you they cannot see something they are supposed to see, this pair is the first thing to check — and it is the same pair that decides whether a product is sold in a given country, because both are catalogs underneath.
Restricting a range costs you a price level
Worth knowing before you plan the ranges rather than after: a B2B catalog is a product list and a price list at the same time. Below Plus you get three of them in total, so three visible ranges and three price levels are the same three. A catalog spent on "these accounts see the clearance range" is a catalog you no longer have for a price tier. Which tool to use, and what the ceiling means for pricing, is its own question.
Certain products for certain accounts only? Describe who should see what →
The shortcut that looks identical and is not
The advice you will find most often is a line of theme code: show the product, or the price, or the whole section, only when the visitor is a trade customer. Shopify's templating language does support this — a customer can be asked whether they are a B2B buyer and what tags they carry, and the customer object is empty when nobody is signed in.
What that does is hide the rendering. The product still exists, at its URL, in your store's own search, in your sitemap, and to anything reading your catalogue from outside. Somebody with the link has the link.
Shopify's own answers to the stronger version of the question are not theme edits. For the whole store, there is a setting: Online Store → Preferences → Store access, "Restrict access to B2B customers only". By default the opposite is true — "your B2B store is publicly accessible. Anyone can visit and browse your products and store content, including D2C customers." Shopify's help page does not say which plans have that setting, so check it in your own admin rather than take our word for it.
For a single page or section, it points elsewhere:
"If you want to hide entire pages of your store from D2C customers or anyone who isn't logged in, then you can use third-party apps to lock parts or all of your store."
There is a related trap in how AI shopping surfaces read your store: Shopify excludes genuinely B2B-only products automatically, but warns that products hidden by an app or a theme change may not be recognised as B2B-only at all. The pricing side of that is where it bites hardest.
Two things Shopify does not document. What a signed-in trade customer sees when they open a product that is not in their catalog is not documented anywhere — the one public report describes a plain 404, unresolved. And whether a B2B-only product stays out of your storefront's own search results and your sitemap is documented for country catalogs but not for B2B ones. If either matters to you contractually, test it in your own store rather than assume it carries over.
Which route is yours
| What you need | Where it comes from |
|---|---|
| A range only trade accounts can buy | Native — out of every region catalog, into a B2B catalog |
| Different ranges for different trade groups | Native — one catalog each, up to three below Plus |
| Prices hidden until login | Native — B2B pricing needs a sign-in anyway |
| The whole store closed to anyone but trade | Native — "Restrict access to B2B customers only" |
| One page nobody unauthorised can open | Not native — Shopify points at an app for locking |
| Hiding it in the theme only | Works on the page, not on the URL, search or sitemap |
| "Anything tagged restricted is never in the retail catalog" | Not a setting — built for you (Flow may reach it; untested) |
What Shopivibe does
For the part above, use the catalogs. They are Shopify's own and they work.
Where this becomes a real request is the last row of that table — the standing rule. "Anything we tag trade-only should never be in the retail catalog, including the products we add next month." New products are included in every region catalog by default, which means the whole arrangement depends on whoever adds a product remembering to take it out again, every time. Shopify Flow can publish and unpublish to a publication, and a catalog is one underneath — but whether it reaches a catalog is not documented, so test that rather than plan around it.
Two things to say plainly. You can have this either way round. The lighter version is a rule that catches the product the moment it is created carrying your marker and tells you at once, so the click is one you know to make rather than one nobody makes — and be exact about what "at once" buys you: if the product was created live, it has been live for the time it took you to read the message, so create restricted products as drafts and the message arrives first. And the full version is ours end to end — say so and anything carrying your trade-only marker is kept out of the retail catalog as it arrives, including the products you add next month, so the arrangement stops depending on whoever added the product remembering. Either one is built for you rather than switched on: a person here takes it on straight away and has it working in your store within 24 hours. The full one asks your store to approve one more Shopify permission on the way, which the app asks for in plain language at the moment you switch the rule on rather than at install.
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.
Know what must never reach retail? Describe the rule in your own words →
Checked against Shopify's documentation and the App Store on 21 September 2026.