I would love to see Shopify add a way for me to hide B2B products from my retail customers natively from the backend. There are some products that are for B2B and D2C that I would not want to hide. And it would also be good to hide products from the B2B side as well in some cases.
You can actually do most of this today, it just lives in two places instead of one toggle.
To hide B2B-only products from retail: leave them out of the Online Store sales channel (Product > Sales channels, uncheck Online Store). They stay available to B2B because B2B buyers shop through catalogs, not the storefront publication.
For the reverse, hiding D2C products from B2B, control it at the catalog level. A B2B catalog only contains the products you add to it, so anything you leave out is invisible to that company. Products you want on both sides go in the catalog AND stay published to Online Store.
The one thing there is no clean native control for is per-customer-tag hiding on the retail side (different retail products for logged-in vs guest), that still needs a theme/liquid gate or an app.
Are your B2B buyers on company accounts already, or are you tagging regular customers as wholesale?
A workable split is B2B-only products out of the Online Store channel, D2C-only products out of the B2B catalog, then use customer-context logic in the theme for shared products. The shared items are the part Shopify doesn’t handle very cleanly from the backend alone.
Hi there,
You’re looking for a way to control product visibility for your B2B and retail customers. Shopify does offer some built-in features to help you with this, but there’s no native setting to hide B2B products from your retail customers.
One approach is to use customer tags to segment your customers. You can create separate tags for B2B and retail customers, then use the “Customer groups” feature in Shopify to restrict access to certain products or collections. This way, you can control which products are visible to each group of customers.
Another option is to use metafields to store a “visibility” flag for each product. You can then use a theme or app to display or hide products based on this flag, depending on the customer’s tag or group.
If you need a more comprehensive solution with a user-friendly interface, there are third-party apps available that can help you manage product visibility for different customer segments. For example, Quote Snap offers a feature to hide products from non-wholesale customers, which may be a good fit if you’re looking for a B2B-focused solution.
Before exploring any app solutions, I recommend taking a closer look at Shopify’s native features and theme customization options to see if they can meet your needs. If you have any specific questions about implementing these solutions, feel free to ask and I’ll do my best to help!
Hi @shopifyuser123
It’s only from Shopify it self, contact support
Hello @shopifyuser123 That’s a great suggestion!
Our miniOrange LockOn – Content Restriction app can help by allowing you to control product visibility based on customer type, tags, companies, or login status.
This makes it easy to show B2B-specific products only to your wholesale customers while keeping retail products visible to D2C users, and vice versa.
Please let us know if you have any specific questions, and we’ll be happy to assist.
Hi, I think you can actually do this with B2B catalogs now. You can make one catalog for B2B and choose which products go in there, so products you leave out won’t show to B2B customers
For B2B-only products, you can also exclude them from the retail/region catalog so normal customers dont see them. Might be worth checking your Markets > Catalogs settings first
I got it working by following that guide, but if it still doesnt work for your setup, maybe just use a third party app in Shopify
Hope this reach and help you
The solution was to use catalogs. I had a B2B catalog but I didn’t have a D2C catalog and that’s why the B2B products were showing to retail customers.
The only thing I would like to see is for Shopify to have a way to hide certain menu items from D2C customers.