Create a store for customers only with WooCommerce

This tutorial stems from a question I’ve been asked in several forms: How do I create a purchasing club? How can I sell to customers only? Can I allow some products to be sold to existing customers only? Can I only allow wholesalers to purchase products, but show them to everyone? Can I restrict some of my products to sell to my subscribers alone?

We typically assume that eCommerce stores want to sell to anyone and everyone that visits, but this simply isn’t the case. There’s value in making some of your products scarce or exclusive, as they’ve perceived as more valuable. You may also sell to wholesalers or to customers who hold a subscription, and therefore have a need to hide some products or disable purchasing. You may even just want to use your store as an online catalog without enabling purchasing.

Yep, you can do all of that. With some eCommerce plugins it’ll require custom code, but others have add-ons that can box up this functionality for you. While there are several ways that this store setup could be accomplished, we’ll cover how to do so with WooCommerce today (with tutorials for other eCommerce plugins planned).

Customers only WooCommerce stores: What’s needed?

There’s one very useful extension for WooCommerce that will allow you to create visibility and purchasing rules for your products: Catalog Visibility Options, which is $49.

Your visibility display will be determined by whether a user is logged in or not, or you can hide things like pricing and purchasing completely from your store. The user role can also be used to fine-tune your visibility options.

While you don’t need any other plugins to get this set up, the free User Role Editor plugin can help you create more roles if needed, and I have an example below of creating subscribers-only products with WooCommerce Subscriptions ($199).

General setup

Catalog Visibility Options will allow us to do a few key things in order to create our customers-only store:

  • Only allow purchasing for logged in users (customers), or for users with a particular role (such as “Subscriber” or “Wholesaler”)
  • Only allow viewing prices for logged-in users or for users with a particular role
  • Hide products from the shop on a per-category or per-product basis; you can allow products to be seen by everyone, or by only users with certain roles

There are some global options that can expedite the setup for you, as you can enable or disable purchasing completely, enable or disable pricing display throughout the store, or you can require that users be logged in to purchase and / or view prices instead.

WooCommerce Catalog Visibility Options settings
General Settings

You can also optionally set the “Add to Cart” button text when products are displayed in the shop, and set text to display if price is unavailable while editing the global settings. These can be overridden on a per-category or per-product basis, but they’ll set the general rules for the shop.

Once you’ve saved these settings, they’ll be applied to your shop, and your custom labels will be displayed.

WooCommerce Catalog Visibility Options rules applies
Visibility Settings Applied

If product purchasing and / or price display visibility has been hidden, the product pages will also reflect this. Rather than outputting a purchase button on the product pages, you’ll now see your “Additional content” message (from the global settings) instead. This can prompt users to log in, register, purchase a particular product, or do whatever you deem necessary to gain purchasing access.

WooCommerce Catalog Visibility Options customer only
Non-logged in view

Customers who’ve logged into your store will be see the typical product page display instead.

WooCommerce Catalog Visibility Options logged in
Logged in view

You can fine-tune these settings further to show or hide entire product categories, and adjust settings for a particular product even further.

Sell product categories to customers only

While your global options are a great starting point, you may also want to hide some products from the catalog completely or from specific visitors. The category settings will be helpful in this case.

When you go to Products > Categories, you can now edit categories to access some additional settings. This is where you’ll be able to hide products if you don’t want non-logged in users to view them at all. If they try to access a product via a direct link, they’ll get your 404 page.

Category settings will allow you to show a product category to everyone, set no options, or show products in the category only to specific roles.

WooCommerce Catalog Visibility Options catalog
Category visibility rules

I’d recommend always enabling Administrators and Shop Managers to see all products, and then any customer roles that you’d like to be able to see these products as well.

Sell specific products to customers only

The product-specific settings can allow you even more control over your product visibility. While editing a product, you can determine who can view the product page, who can view the price, and who can purchase the product. For each of these types of visibility, you can allow everyone, inherit the category rule, or set which user roles should have visibility.

WooCommerce Catalog Visibility Options product-level settings
Product Visibility

This is where you have the most control over your product visibility, and these settings will override any global or category settings in place.

Provide subscribers-only products

One of my favorite uses for this is when you couple Catalog Visibility Options with WooCommerce Subscriptions. Many times, you may want to offer products only to your subscribers, or perhaps you want to “gift” them a particular product, but that product shouldn’t be available to non-subscribers. This can be done by restricting the product to subscribers, and providing them with a one-time use coupon if you want to gift the product.

Using the settings above for my product visibility, I’ll create a product that will be shown to everyone, will display pricing to any customer (including subscribers), but only allow subscribers to purchase.

When a non-customer views the page, they won’t see pricing or purchase options.

WooCommerce Catalog Visibility Options non-logged in
Non-customer visibility

If a regular customer visits the product he or she will be able to see the price, but still won’t be able to purchase the product themselves.

WooCommerce Catalog Visibility Options logged in customer
“Customer” Role Visibility

Finally, subscribers will be able to treat this like a normal product. This is where you could provide them with a one-time use coupon for this product for signing up if you’d like to gift it to them.

WooCommerce Catalog Visibility Options subscriber
“Subscriber” role visibility

This a great way to offer products only to some of your customers, and you can determine if other visitors should see the product at all or if they simply can’t buy it.

Customers only stores: Taking it further

If you’d like to have even more control over your product visibility, you could create additional roles using the User Role Editor plugin.

This will allow you to “clone” a role to create a new one, so I’d recommend cloning the customer role to ensure that your new role can do the same things as a customer and no more. You could then use this custom role in your visibility rules. This could be valuable to create a “Wholesale” section where you can assign the role “Wholesaler” to some of your customers, or to grant special purchasing privileges.


Creating a store for customers only is simple with WooCommerce Catalog Visibility Options, as you can set global rules to determine who can view prices and purchase, or you can fine-tune these rules at the category and product levels for maximum control over product visibility.

This can allow you to create a purchasing club, offer “customer-only” exclusive products, or provide products to specific users, such as your wholesalers or subscribers.


  1. Great tutorial, thank you 🙂
    Do you have any advice on how to enable manual approval of customer registration by a shop manager or site admin?

  2. Hi Beka:

    Thanks for the great info. I have a dev site setup using WooCommerce, Subscriptions, Catalog Visibility Options & Groups + Groups extension. The Groups extension works great for totally hiding all of the member content, but I don’t want it hidden until after someone joins.

    When I only activate WooCommerce, Subscriptions and Catalog Visibility, anyone can view all items in the store minus the download buttons. Perfect.

    When I activate Groups, everything is totally hidden so that nothing can be seen. I want people to be able to view all of the members content before they subscribe.

    So, my question would be how to use Catalog Visibility Options and have the ability to setup ‘Groups’ for members that dictate the items for download in their group. All I want to do is have 3 membership options: Silver, Gold & Platinum. When Silver signs up and pays, everything available in the Silver category shows for that member, etc. But, so that Silver can make an educated decision on whether or not to join my site, they are able to view all available downloads within that group beforehand.

    Whew! Thanks a lot in advance.

    1. Hey Alex, there’s not really a way to do this, but there’s an upcoming WooCommerce Memberships plugin in beta testing that can (disclosure: the company I work for is behind it, which is how I know). You can restrict either viewing the product to only members (so it’s hidden from non-members), or restrict purchasing, so everyone can see it, but only members with access can purchase it. You can even delay viewing or purchasing until a person has been a member for a certain amount of time. I’d keep an eye out for this at WooThemes.

  3. Hi Beka:

    Thanks for reiterating that I’m not totally Woo stupid And A Major Thanks on the heads-up with the new Membership plugin. I’ve been wondering when that would come along. Any idea if I could get in on the beta-testing? My membership site is totally Woo already.

    Thanks again.

    1. Hey Alex, no problem. I’m afraid beta testing is wrapping up now and v1 is being polished up with the feedback, but the good news it’s going in for audit shortly!

  4. Hi, so I’m trying to hide pricing and add to cart button for variable product but prices still show. Great tutorial, but how do I manage this for variable products? The prices are showing 🙁

<em>Hmm, looks like this article is quite old! Its content may be outdated, so comments are now closed.</em>