Build a WooCommerce wholesale store with hidden categories for each customer

WooCommerce wholesale plugin with customer categories

There are many types of WooCommerce wholesale store. Some wholesale stores sell public WooCommerce products alongside a hidden wholesale area. Others sell the same products to public and wholesale customers, but at different prices. Some stores sell the same wholesale products to all customers. Others sell different categories of products to each wholesale customer.

This tutorial will teach you how to create a WooCommerce wholesale store selling different products to specific customers. You'll learn how to create a hidden wholesale category for each customer that only they can access.

We'll need 2 plugins for this:

Why would a WooCommerce wholesale store need different categories per customer?

Lots of e-commerce wholesale stores sell unique customer-specific products. These should not be visible to anyone else. For example:

  • Workwear or industrial clothing store If you sell branded workwear or industrial clothing to specific organisations then you might sell personalised products with the company logo. The products might contain other personalised information such as job role or department.
  • White labelled or company branded goods Your WooCommerce store might sell products that are branded to your customers. This allows them to resell the products under their own brand. Each customer needs to log into the WooCommerce wholesale area to view and buy their branded products.
  • Company stationery A design or printing company selling repeat orders of bespoke stationery might add them to a secure area within their WooCommerce wholesale store. Whenever the company needs to re-order their business cards, letterhead or promotional leaflets, they can log into their hidden wholesale category and buy securely.

With each of these examples, each wholesale customer must be able to view and buy specific products. The products need to be hidden from public view. This can be achieved by installing a wholesale plugin and creating hidden WooCommerce categories for each customer.

If you sell the same products to all your wholesale users then you don't need customer-specific categories. Instead, just use WooCommerce Wholesale Pro to create your wholesale store.

How customer-specific wholesale categories work

WooCommerce Protected Categories is a WordPress plugin that lets you hide product categories within WooCommerce. It works with WooCommerce Wholesale Pro to let you create a separate category for each individual user. Only that wholesale customer can access their hidden category and buy the products inside.

For example, one plugin user structured her user-specific WooCommerce wholesale categories like this:

  • WooCommerce customer categories
    Wholesale user 1 - main category page listing all their stationery products
    • Sub-category containing all their business card designs
    • Sub-category containing their promotional materials
    • Another sub-category containing all their company branded envelopes
  • Wholesale user 2 - main category page listing all their stationery products
    • Sub-category containing all their business card designs
    • Sub-category containing 2 letterhead designs

You can use WooCommerce Protected Categories to create single or multi-level category structures. By restricting the main 'Parent' category so that only a specific wholesale customer can access it, you can create an entire store-within-a-store for each company.

To access their hidden wholesale category, customers simply need to log into their account on your WordPress website. They will be directed to the 'Wholesale Store' page, which is created by the WooCommerce Wholesale Pro plugin. The Wholesale Store page will show all the products that the user has access to, including the ones in their hidden categories. They can then browse and buy the products inside. No other customers will ever know that the hidden categories or their products exist.

If you have added links to their private categories to the navigation menu, then they can see these links which remain hidden from everyone else.

How to set up a WooCommerce wholesale store

First, you need a WordPress website with WooCommerce installed and set up. You can then follow these steps to create hidden wholesale categories for each customer.

First, install the plugins and edit the settings

  1. First, get the WooCommerce Wholesale Pro plugin. Download the plugin files and copy the license key.
  2. Log into the WordPress admin. Go to Plugins → Add New and upload the plugin, then activate it.
  3. Go to WooCommerce → Settings → Wholesale and enter your license key. Choose the other settings for your wholesale store, such as whether or not to allow new wholesale users to register for an account, and adding any additional wholesale roles and discounts.
    WooCommerce Wholesale Pro plugin settings
  4. Get the WooCommerce Protected Categories plugin. Again, download the plugin files and copy the license key.
  5. Go to Plugins → Add New and upload the plugin, then activate it.
  6. Go to WooCommerce → Settings → Products → Protected Categories and enter your license key.
  7. Configure the plugin settings as needed. Most importantly, you need to leave the 2 boxes in the 'Category Visibility' section unticked. These hide your WooCommerce wholesale categories from the public areas of your store and from other wholesale users.

WooCommerce Protected Categories Screenshot - Plugin Settings Page

2. Create wholesale customer categories

Before this step, make sure you have added some users to your wholesale roles.

  1. After saving your settings, go to Products → Categories. Create a category for each wholesale customer. In the 'Visibility' section for each category, select 'Protected → User' and select which user(s) can access the category.
  2. Create any sub-categories by selecting the main category for each customer as the 'Parent'. Leave these set to 'Public'. Do not password protect them because they will automatically inherit the protection from the parent category. That way, wholesale customers can log into their account and instantly unlock their category and all its products and sub-categories.
  3. Add products for each wholesale user and assign them to the correct category. (Tip: Each product can in as many user protected categories as you like, so don't worry about creating a separate version for each customer.)

Now your wholesale users can visit your website, access the wholesale login page and see their private products. They can then view all the sub-categories and products inside and purchase from you. Mission accomplished!

Can I charge different prices to each wholesale user?

Perhaps you want to sell the same products to each wholesale user, but at different prices. If so, then you don't need a separate category for each user. Instead, you need to charge different prices for the same product.

We've provided a separate article about how to do this.

Can I show the wholesale customer's logo on their page?

WooCommerce wholesale store owners sometimes ask us how to show each customer's logo within their hidden area. This can reassure customers that they are logged into their own wholesale area.

Here are some suggestions of how to do this:

  1. WooCommerce display customer logo widget
    For the best result, you need to write some custom code to show a logo on the template depending on which category is being viewed. Your developer would need to do this. If you don't have one then we recommend Codeable.
  2. If you include the customer's company name in the category title then this will appear at the top of their wholesale ordering page once they have logged in. This will reassure them that they're in the correct place without needing any custom coding.
  3. A less technical way to add logos is to display a sidebar to the page with a different sidebar for each customer. You could the free Widget Options plugin to show a widget containing the logo on the products/categories relating to that customer.

Can I create specific WooCommerce wholesale layouts?

WooCommerce Wholesale Pro prices 1

So far, you've learned how to add a wholesale area with hidden categories for each customer. However, the layouts of the store are still the same in your public and wholesale areas.

That's not ideal because wholesale buyers have very different requirements compared to retail customers. They already know what they want, and need a quick way to make their selections and place an order. The solution is the WooCommerce Product Table plugin, which is available as a bundle when you buy WooCommerce Wholesale Pro.

WooCommerce Wholesale Pro adds quick order form layouts to your wholesale area. Retail customers continue to see the normal store layouts, and wholesalers see the quick order forms instead.

WooCommerce Product Table lists WooCommerce products in a tabular grid layout with various data such as image, title, price, tags and attributes. You can disable the links to the single product page. The table can even include variation dropdowns and add to cart buttons.

WooCommerce Wholesale Table Layout

This is ideal for WooCommerce wholesale stores because wholesale customers already know what they need. They don't want large images or long descriptions. A space-saving order form layout is more appealing to wholesale customers.

Tutorial: How to create a WooCommerce order form.

How will you structure your WooCommerce wholesale store?

I hope this tutorial has helped you create a WooCommerce wholesale store with hidden categories for each customer. The plugins come with full support and regular updates. Search the knowledge base or send a support request if you need any help setting it up.

I'd love to hear how you structure your own WooCommerce wholesale store. Are there any important features which I haven't covered? Please add your comments below.


  1. Hey I'm trying to build a bulk product uploader for a client and in MySql I can't find the passwords created per protected categories. Can you point me where to look.


Please share your thoughts...

Your email address will not be published. Required fields are marked *