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).
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).
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.
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.
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.
Customers who’ve logged into your store will be see the typical product page display instead.
You can fine-tune these settings further to show or hide entire product categories, and adjust settings for a particular product even further.
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.
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.
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.
This is where you have the most control over your product visibility, and these settings will override any global or category settings in place.
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.
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.
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.
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.
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.