WooCommerce Hide Price & Add to Cart Button - WordPress Plugin
Turn your shop into an online catalog by hiding prices and add to cart button of specific or all products and categories. Hide for guests and selected registered user roles. Replace add to cart with a custom link or a contact form.

Plugin Features
The plugin provides a seamless solution for hiding prices and disabling the add to cart button on WooCommerce products, catering to the need for a hidden prices feature. By concealing prices and the ability to purchase certain items, it offers a flexible approach to managing product visibility based on business requirements.
Its functionality extends to multiple product types, allowing users to selectively show or hide prices and add to cart options as needed. This level of control empowers store owners to strategize their product display effectively, enhancing the shopping experience for customers. The plugins intuitive settings make it easy to configure these options without complex technical knowledge.
With an emphasis on user experience, the plugin ensures that hidden prices and disabled cart buttons are seamlessly integrated into the WooCommerce layout, maintaining a visually cohesive online store. This attention to design detail helps in preserving the overall aesthetics of the website while implementing essential e-commerce features discreetly.
E-commerce businesses looking to experiment with various pricing strategies or provide a quote-based system will find WooCommerce Hide Price & Add to Cart Button indispensable. It enables the creation of custom shopping experiences tailored to unique business models, allowing for greater flexibility in managing product pricing and sales processes.
By effectively concealing prices and add to cart functionality when necessary, the plugin helps in streamlining the customer journey, reducing distractions, and simplifying the browsing process. This deliberate approach to presenting products can lead to increased user engagement and higher conversion rates, contributing to the overall success of the online store.
In summary, the plugin offers a comprehensive solution for implementing hidden prices and disabling the add to cart button on WooCommerce, catering to businesses seeking more control over their product display and pricing strategies. Its user-friendly interface, coupled with its ability to seamlessly integrate with WooCommerce, makes it a valuable tool for enhancing the online shopping experience and optimizing sales processes.
Specifications:
| Release date: | 11-10-2020 | |
| Last updated: | 30-07-2026 | |
| Type: | Paid | |
| License: | GPL | |
| Subject: | e-Commerce for WooCommerce | |
| Compatibility: | W5.x W6.x | |
| Includes: | Plugin | |
| Language packs: |
|
|
| Developer: | WooCommerce Plugins | |
| Rating: | ||
Share with your friends!
How to Configure WooCommerce Hide Price & Add to Cart Button for Catalog and B2B Sales
WooCommerce Hide Price & Add to Cart Button is not meant for a standard storefront with public pricing. It is built for situations where customers need to sign in first, request terms, confirm their shipping region, or contact a sales manager before buying. This guide focuses on the practical workflow rather than a marketing overview: which rules to create, how to avoid confusion with customer roles, what to use instead of the buy button, and how to verify the result on the product page, in the catalog, and in the cart flow.
The plugin works through rules that hide the price and the Add to Cart button. That is convenient, but rules are also where most mistakes happen: one rule overrides another, a guest sees the wrong message, a wholesale user gets caught by a generic scenario, or cache serves an outdated version of the product page. That is why this guide moves from business logic to configuration and testing, instead of simply listing interface options.
This guide is written for a store owner, webmaster, or WooCommerce administrator who already knows which products should be sold directly and which are better presented as catalog items. We will look separately at the "price visible only after login" scenario, a catalog without direct purchases, products that require custom pricing, regional restrictions, replacing the button with a link or a Contact Form 7 form, conflict diagnosis, and choosing similar solutions.
When Hiding the Price Helps the Store and When It Hurts Sales
A visible price usually speeds up the purchase. When a visitor can see the cost, availability, and buy button, they move to the cart faster. But WooCommerce stores often include product types where direct checkout is not the right fit: wholesale items, made-to-order products, equipment that requires shipping calculation, region-restricted goods, B2B catalogs, dealer pricing, trade-show catalogs, and preorder landing pages. In those cases, WooCommerce Hide Price & Add to Cart Button turns the store into a controlled storefront: the product stays visible, but price and purchase actions are shown only to the right audience.
The strength of this approach is not just hiding the price. What matters more is to replace the missing action with a clear next step. If a user sees a blank product page with no price and no button, they may assume the site is broken. But if the page says "Log in to see pricing" and the buy button is replaced with a registration link or request form, the flow stays intentional and understandable. That is exactly what the plugin lets you control: what to hide and what to show in its place.
Where This Setup Works Well
The most natural use cases involve pricing that depends on context. In a wholesale store, the price may depend on the customer role, order volume, or contract terms. For custom products, the final cost depends on materials and client requirements. For region-specific products, the issue may not be the price at all, but the fact that the product cannot be shipped to certain countries. In each of these cases, a public buy button creates unnecessary orders that later have to be canceled manually.
- A wholesale catalog where guests can browse the assortment, but prices are visible only to registered buyers.
- Personalized products where a contact form is needed instead of a purchase.
- A catalog without online checkout, where the site works as a storefront for a sales manager or dealer network.
- Products that cannot be sold in certain countries or regions, but can still be shown as informational pages.
- Categories with individually quoted pricing, where the price needs to be discussed before checkout.
When the Plugin May Be Unnecessary
If the store sells standard products with straightforward shipping and the same pricing for everyone, hiding the price often reduces conversion. Customers do not like guessing what something costs, and they are not always willing to contact a sales rep. In that kind of store, it is better to keep prices visible and create separate rules only for the more complex categories. A good rule of thumb is this: hide the price only when there is a clear reason for doing so and an obvious next step for the customer.
Before installation, write the business rule in one sentence. For example: "Guests can browse the catalog, but only wholesale customers can see prices and purchase after logging in." If you cannot explain the rule clearly and briefly, it will be hard to configure and test.
How Price-Hiding and Purchase-Hiding Rules Work
The plugin documentation describes rule-based management, which means managing multiple rules. In practice, that means creating a set of conditions: who the rule applies to, which products or categories it affects, whether the price should be hidden, whether the buy button should be hidden, and what text or action should replace the standard WooCommerce output. This is more flexible than a global "catalog mode" switch because it lets you keep normal sales behavior for some products while enabling a restricted mode only where needed.
It helps to think of a rule as a chain: audience - scope - hidden element - replacement - result check. If you skip one of those parts, the setup becomes unpredictable. For example, you might hide the price for all guests but forget to replace the button with a login link. Or you might target a category but fail to check child products that are not actually included in the section you intended. That is why it is useful to sketch out a simple conditions map before you create your first rule.
Audience Conditions
The official documentation confirms several audience types: guest visitors, registered customers, and specific user roles. For guests, the usual approach is a message about logging in or registering. For registered users, the rule is more often based on role: for example, a regular customer sees the standard price, while a wholesale user assigned to a separate role sees a request form or restricted pricing. If your roles are created by another B2B plugin, first make sure the role is actually assigned to the user in WordPress.
Do not bundle all audiences into one rule if the scenarios differ. A guest needs one message, a wholesaler needs another, and a manager or dealer may need a third. Even if the plugin technically allows a broad rule, support and testing are much easier when rules are separate and clearly named.
Scope: Products, Categories, and Countries
The plugin lets you apply rules to individual products, categories, and countries. The right choice depends on how your catalog is structured. If you have 5-10 products that require custom quoting, it is easier to select them manually. If an entire section such as "Project-Based Equipment" requires a price request, assigning the rule to a category makes more sense. If the issue is shipping-related, use country as an additional condition, but remember that IP geolocation is not always precise: corporate networks, VPNs, and caching can all produce the wrong region.
What Exactly to Hide
The two main elements are the price and the Add to Cart button. You do not have to hide both at the same time. In some cases, the price should remain visible while purchasing is disabled because the product requires consultation first. In another scenario, you may want to keep the button but replace the price with explanatory text if the final amount is confirmed during the order process. In a B2B catalog, the usual setup is to hide both elements for guests and show a replacement that leads to login, registration, or a request flow.
What to Show Instead of the Standard Output
The replacement options matter just as much as the hiding itself. The available sources confirm custom text, a custom button with a link, and a contact form through Contact Form 7. Text helps explain the reason: "Pricing is available after login" or "Request a quote from a sales manager." A linked button works well for sending users to a login page, registration page, application form, or wholesale terms page. A Contact Form 7 form is useful when the buyer needs to submit product parameters directly from the product page.
| Goal | Best Replacement Option | What to Check |
|---|---|---|
| Show prices only after login | A short message and a button linking to the My account page |
The guest sees a clear explanation, while the registered user sees the normal price. |
| Collect requests for custom pricing | A Contact Form 7 form instead of the buy button | The form opens, the email is delivered, and the product context is clear to the manager from the request. |
| Disable purchasing in selected countries | A text notice about unavailability and a link to an alternative contact option | The test is performed without cache and with the known limitations of IP geolocation in mind. |
| Turn the store into a standard catalog without online ordering | Hide the buy button and leave a clear request option or link | There is no path to the cart from the product page, but there is still a clear next step for the customer. |
What to Check Before Installing on a Live Store
The plugin changes how the product page and catalog behave, so installing it directly on a live store without a plan is risky. It is better to prepare a short checklist and one test product. This matters even more if your site already uses caching, page optimization, a custom theme, a product page builder, B2B extensions, role-management plugins, or custom WooCommerce templates.
Preparation does not need to become a full technical audit of the site. It is enough to verify the pieces that affect your specific price-hiding scenario. If the rule will apply only to guests, you need an incognito-window test. If it is role-based, you need a separate user assigned to that role. If it is country-based, you need a careful geolocation test and a clear understanding that IP detection is not the same as a legal shipping address.
Minimum Setup Before Installation
- Create a backup or use a staging copy of the site if the store is already taking orders.
- Update WooCommerce and the theme within a safe maintenance window if the site has not been updated in a while.
- Create a test product or a separate test category so you do not change the behavior of all products at once.
- Prepare test accounts: guest, regular customer, and the wholesale or other target role.
- If you plan to use a form, create and test the Contact Form 7 form ahead of time.
- Disable or temporarily clear the page cache during testing so you are not looking at stale product output.
Compatibility with the Theme and Product Page Builder
Most problems with plugins like this are not caused by the rule itself, but by the fact that the theme or builder outputs the price and button in its own way. WooCommerce expects standard product template hooks, while some themes replace those blocks with custom elements. If the price disappears on a default theme but remains visible in a custom product layout, the issue is almost certainly in the template or builder.
Before a serious rollout, check three places: the product page, the category page, and the related products block. If the store uses quick view, a carousel, a separate "recommended products" section, or a third-party catalog filter, test those areas too. The goal is to confirm that hiding works everywhere a customer might see the price or purchase button.
Installation and the First Safe Test
The official documentation describes the standard installation flow for the extension: upload the ZIP file, go to the WordPress admin panel, open Plugins - Add New, upload the archive, click Install Now, and then click Activate. If the store is connected to WooCommerce.com, the extension may also be installed through the WooCommerce subscriptions area, but this guide does not cover purchasing or license management. What matters here is enabling an existing product safely and confirming that the site still preserves its normal purchase flow.
After activation, the documentation says a hide price item appears in the WooCommerce menu. That is where rule configuration begins. Do not rush into creating a global rule for the entire store. Start with a small rule for one test product, verify the result, and only then apply the logic to a category or a group of roles.
First Test After Activation
- Open the admin panel and make sure the plugin settings item appears in the WooCommerce menu.
- Create or select a test product that is not part of real sales.
- Create a rule only for guest users and only for that product.
- Enable hiding for both the price and the buy button, and enter a short replacement message.
- Save the rule and open the product in a private browser window.
- Confirm that the guest cannot see the price or button, and after logging in as a regular user, the output matches the expected scenario.
Quick takeaway: the first test should prove not just that "the plugin is installed," but that "one simple rule works on one product and does not break the normal output for everyone else."
What Not to Do Right Away
Do not create multiple overlapping rules before your first test. Do not enable country conditions, roles, and categories all at once until you know the basic hiding behavior works. Do not test only in an admin session: an administrator almost always sees the site differently than a guest or customer. And do not judge the result with product-page caching still active until you have cleared the cache and tested in a private window.
Detailed Configuration After Installation: From a Simple Rule to a Working Policy
The best way to build the configuration is from narrow to broad. Start with a rule for one product, then move to a category, then the audience, then the button replacement, then priority. This order reduces the risk of building a polished but untestable system of conditions. In WooCommerce Hide Price & Add to Cart Button, it is especially important to give rules clear names, because a month later the admin should still understand why each condition exists.
Rule Name and Priority
The rule name does not affect the visitor, but it matters for site maintenance. Write it like a technical description: "Guests - hide prices - Wholesale category" or "Wholesale - request form - equipment." If the interface includes rule priority, use it deliberately. High priority should be reserved for more specific conditions, while lower priority works for broader background rules. For example, a general guest rule may hide prices across the whole catalog, while a separate rule for one category may show a different message or form.
If two rules could apply to the same product and the same user, decide ahead of time which one should win. A good practice is to keep a rule table in the store's internal notes: rule name, audience, products or categories, replacement, change date, and who verified it. You do not need to publish that inside the article or the code, but for a real store that discipline can save hours of troubleshooting.
Choosing the Audience
For guest users, the rule is usually straightforward: the user is not logged in, so the price is hidden. For registered users, the role matters. If you use roles such as wholesale_customer, dealer, or vip_customer, do not rely on memory alone. Open the test user's profile and confirm the assigned role. If the role comes from a third-party B2B plugin, make sure it is not removed or changed after updates.
Guest vs. Registered User
Do not try to explain every state with a single rule. A guest should see a simple reason and a path to log in. A registered user with the wrong role should see a different message if they need to request access. A user with the correct role, on the other hand, should not see unnecessary restrictions. Splitting these scenarios makes testing much easier: one browser with no login, one test account for a regular customer, and one account for a wholesale user.
Choosing Products, Categories, and Exceptions
If the rule applies to a category, verify that all target products are actually assigned to that category. In WooCommerce, a product can belong to multiple categories, and that creates overlaps. For example, a product might be in both "Wholesale" and "New Arrivals." If one rule hides prices in "Wholesale" while another keeps normal purchasing in "New Arrivals," the result depends on the plugin's priority and condition logic. In situations like that, it is best to build a test table with 5-6 products and verify each overlap type separately.
Text Instead of the Price
The text should be short and honest. A weak option is "Contact us" with no explanation. Better options are "Pricing is available after login" or "Request a quote based on product parameters." If the site is multilingual, do not hardcode the text in only one language without a localization plan. And if the store serves multiple countries, avoid wording that promises delivery to regions where delivery has not actually been confirmed.
Linked Button Instead of Purchase
A custom button with a link is a good fit when the next step lives on a separate page: login, registration, wholesale access request, contact page, or quote request page. Test not only the link itself, but also what happens after the click. If the visitor arrives from a specific product page, the manager should ideally understand which product they were interested in. Sometimes a form on the destination page is enough. In other cases, a dedicated form directly on the product page is the better option.
Contact Form 7 Instead of the Button
The plugin documentation states that a Contact Form 7 form can be selected for display in a popup on the public-facing site. Before using this option, test the form on its own first: email delivery, spam protection, required fields, and a clear email subject line. Contact Form 7 does not store submissions in the database by default, so if your managers need a submission log, you will need a separate solution or a CRM integration. That is not a weakness of the price-hiding plugin. It is simply a characteristic of the communication channel you chose.
Safe Form Testing
- Create a form with fields for name, email, phone number, or comment only if those fields are actually needed.
- Submit a test request from the normal form page, without involving the price-hiding plugin.
- Make sure the email arrives at the correct address and does not land in spam.
- Only after that should you select the form in the rule that hides the buy button.
- Open the test product as a guest and verify the popup or embedded form output.
Country Conditions and Cache
The plugin states that it uses the external geoPlugin service to detect the country. That means the result depends on the visitor's IP address and on whether a cached page is serving someone else's version of the product page. WooCommerce has its own geolocation settings, including a cache-compatible mode that adds a parameter to the URL. For country-based rules, do not promise absolute accuracy. It is safer to use regional hiding as a preliminary restriction and confirm the final shipping or sales decision later during the contact or order stage.
Scenario 1: Hidden Prices for Guests and Normal Purchasing After Login
This is the most common and easiest-to-understand scenario: the store wants search engines and new visitors to see the catalog, but only logged-in users can view prices and purchase. This works well for dealer catalogs, wholesale terms, and stores where a public price could be misleading. The key is not to hide the product entirely, but to keep the product page useful: product name, image, specifications, description, access conditions, and a clear path to the account page.
The setup logic is simple, but it requires careful testing. For guests, hide the price and the button, show an explanation in place of the price, and use a link to login or registration in place of the buy button. For registered users, the rule either does not apply or is replaced by another rule if the role is not appropriate. Testing should always be done in two states: logged out and logged in.
Goal
The guest sees the product as a catalog item: no price and no purchase action, but a clear explanation. A registered customer sees the standard price and buy button if they have the correct access level. If the store uses a separate wholesale role, a regular customer may instead see a message saying that wholesale access requires approval.
Preparation
- The test product is published and visible in the catalog.
- The login or registration page works and opens without errors.
- You have a test user whose role should be allowed to see the price.
- The product-page cache has been cleared or temporarily disabled for testing.
Configuration Steps
- Open the plugin section in the WooCommerce menu and create a new rule.
- Name the rule so it will still make sense in a month, for example: "Guests - hide price and purchase - test product."
- Select guest users as the audience for the rule.
- Choose the test product or a category if you are testing a group of products at once.
- Enable price hiding and enter text such as "Pricing is available after login."
- Enable buy-button hiding and replace it with a button linking to the login or registration page.
- Save the rule and open the product in a private window.
Result Check
The guest should see a clear message instead of the price and should not see the Add to Cart button. Then log in as the test user and open the same product URL. If the rule applies only to guests, the price and purchase option should return. After that, open the category page too: the product card in the catalog grid should also no longer show the old price or button if that is the intended result.
Important detail: if the result is correct on the product page but the price is still visible in the catalog grid, check the theme template, product widget, WooCommerce blocks, and cache. Different areas of the site may render price output through different template elements.
Scenario 2: A Catalog Without Direct Purchase for Products Requiring Custom Pricing
For products with custom parameters, hiding the price should lead to a request, not a dead end. Examples include made-to-measure furniture, industrial equipment, gift sets assembled on request, wholesale cosmetics, and products with variable configurations. In cases like these, the final price may depend on options, quantity, shipping, and lead time, so a standard buy button only creates false expectations.
WooCommerce Hide Price & Add to Cart Button lets you replace the buy button with a Contact Form 7 form or a custom button. The right option depends on how much detail you need to collect in the request. If it is enough to send users to a "Request a Quote" page, a link is fine. If the manager needs product details directly from the product page, a form is more convenient. In either case, the text should explain why the price is hidden.
How to Design the Request Form
The form should not be longer than necessary for the first contact. The more required fields you add, the lower the submission rate usually becomes. For the first step, a name, email address or phone number, a comment, and agreement with the data-processing policy are often enough if your site requires it. If the manager absolutely needs the SKU or product name, add an instruction near the form or configure the form so the user enters the product manually.
In Contact Form 7, you should review not just the fields but the email itself. The subject line should make it easy for the manager to identify a price request rather than a generic inquiry. For example, "Price request from product page" is better than a blank or generic subject. If you expect a large number of inquiries, consider message storage or a CRM integration, because the default form-and-email workflow can become inconvenient for a sales team.
How to Set Up a Rule for a Quote-Based Category
- Create a category for products that require custom pricing, or select an existing one.
- Create a clearly named rule, such as "Custom pricing - form instead of purchase."
- Select the appropriate product category.
- Hide the price if you do not want to show even an approximate amount.
- Hide the buy button and choose either a Contact Form 7 form or a link to the request page.
- Test the product page, category page, related products block, and quick view if your site uses it.
How to Tell When the Scenario Is Ready to Launch
The scenario is ready when the visitor understands why the price is hidden, can submit a request without extra friction, the manager receives enough information, and the site does not leave any accidental buy buttons visible for the same category. Check the mobile layout separately: the popup form or request button should remain accessible, should not cover the product gallery, and should not break page scrolling.
Scenario 3: Country Restrictions and a Region-Based Storefront
The official product information confirms that the plugin can hide the price or buy button for specific countries. This is useful when a product can be shown to an international audience but sold only in certain regions. For example, hazardous, heavy, or regulated products may not be eligible for delivery everywhere. Instead of removing the product from the catalog completely, you can keep the page as a storefront and replace purchasing with a contact option.
The main risk in a regional scenario is country-detection accuracy and cache behavior. The plugin documentation mentions geoPlugin as the external service used for IP-based location detection. WooCommerce also documents geolocation separately, including a cache-compatible mode. That is why regional rules should be tested carefully: do not draw conclusions from a single browser and one IP address, do not promise legally precise country detection, and do not use IP-based conditions as the only control for products with serious restrictions.
How to Use Country Rules Without Creating False Expectations
A country rule works well as a user-facing filter: a visitor from an unsupported region does not proceed to the cart and instead immediately sees an explanation. But the final check for shipping, taxes, and restrictions is better handled in the store's normal processes or in manual request handling. If the product is region-sensitive, the replacement text should stay cautious: "Online ordering is unavailable in your region. Contact our team to confirm availability."
What to Check When Cache Is Enabled
- Clear cache after changing rules, otherwise the public site may keep showing the old buy button.
- Test in a private window and under different login states.
- If the site uses full-page cache or a CDN, make sure pages with regional conditions are not being served the same way to every visitor.
- Do not combine a country rule and a user-role rule in your first test. Test each condition separately first.
How Price Hiding Affects SEO, Analytics, and Customer Trust
Hiding the price affects more than just the interface. It changes how visitors behave. If a search visitor lands on a product page and does not understand why the price is missing, they are likely to leave quickly. But if the page explains the conditions, shows specs, photos, scenario benefits, and a clear request path, the catalog remains useful. That is why the plugin should not replace content work: product pages still need solid descriptions, and the messages shown instead of the price need to be specific.
From an SEO standpoint, do not hide all useful content behind login if you want search traffic. Leave the description, specs, images, use cases, and FAQ content visible. Hide only the price and the purchase action when that is justified. Both search engines and users should be able to see that the product page is not empty.
How to Write Replacement Text for the Price
The replacement text should be brief, but not sterile. It should answer three questions: why the price is missing, what the user should do next, and what they will get after that action. For example: "Log in to your account to view wholesale pricing" or "Request a quote - our team will confirm configuration and shipping." Do not promise a discount, availability, or delivery unless that is backed by the store's actual process.
How to Evaluate the Result in Analytics
After launch, track more than just sales. Look at micro-conversions too: clicks on the login button, form submissions, visits to the registration page, and direct inquiries to your team. If hiding the price reduces direct orders but increases high-quality B2B leads, that may be a healthy outcome. But if visitors simply leave the page, the message or the next step is probably not clear enough.
How to Manage Multiple Rules Without Losing Control
In a small store, one rule may be enough: hide the price from guests on a few products. But in a real B2B storefront, overlaps appear quickly. Guests need one message, wholesale users another, one country a third, and a custom-priced category a fourth. If you do not manage rules as a system, the admin eventually stops understanding why a given user sees a particular result. That is why, after your first successful test, it is helpful not just to add more conditions, but to define a visibility policy.
A visibility policy is a short working document for the store team. It can live in a project task, an internal knowledge base, or a spreadsheet. It should record the purpose of each rule, the audience, the scope, the price or button replacement, the priority, and the test accounts. This becomes especially useful when the site is maintained by an agency: a new specialist can quickly tell the difference between intentional hiding and a bug introduced after a theme update.
Each Rule Should Answer One Primary Scenario
Do not turn one rule into a container for every exception. If a single condition tries to cover "guests," "wholesalers," "country," "multiple categories," and "form instead of button" all at once, it becomes hard to test. A better approach is to split the system into several clear rules: guest access, wholesale role, regional restriction, products that require quoting. Then, when something breaks, you can disable one rule and immediately see what changed.
For every rule, ask one control question: "Which user, on which product, should see what?" If the answer is long and includes several "ifs," the rule should probably be split. That is not unnecessary complexity. It is how you make the store predictable.
Priorities and Overlaps
Priority matters most when one product falls under several conditions. Imagine a product that belongs to the "Wholesale" category and is also restricted in certain countries. A guest from an unsupported region may match two rules: "price after login" and "online ordering unavailable." Which message should take priority? If the buyer is not allowed to order from that region, the regional message may be more important than the guest message. But if the regional rule is not fully reliable because of IP-based detection, it may be safer to direct the user to a request form instead of showing a hard restriction.
This kind of logic should never be left to chance. Build a small overlap matrix. Put the audience in the rows, the category or region in the columns, and the expected text and action in the cells. The visitor never sees that matrix, but the admin needs it. It turns a collection of settings into a testable system.
| Audience | Regular Product | Quote-Based Product | Restricted Region |
|---|---|---|---|
| Guest | Price hidden, login link | Price hidden, request form | Text explaining that online ordering is unavailable |
| Regular customer | Standard price and purchase | Request form instead of purchase | Text explaining that terms must be reviewed by a manager |
| Wholesale role | The store's wholesale logic, if handled by another plugin | Request form marked for the wholesale scenario | Manager request without direct purchase |
How to Update Rules Safely
Any rule change should be treated like a small release. First update a test product, then one category, then the full target section. After each step, verify the public-facing site. If the site is actively taking orders, do not change rules during peak sales periods, especially when they affect the cart, product page, or high-traffic category pages.
Before making changes, save the current state: rule name, selected roles, products, categories, countries, replacement text, and link. If something goes wrong after the update, you will be able to roll back quickly. In simple cases, a screenshot of the rule settings and a note in a spreadsheet is enough. For agency support, this is essential discipline: without it, it becomes impossible to distinguish a bug from intentional business logic.
Public Messages Instead of the Price: How to Write Them So Customers Take Action
A hidden price creates tension. The customer came for a product, and the site removed the main point of reference. That is not a problem if the message quickly explains why and offers a next step. But if the message sounds vague, the hidden price feels like distrust or a site error. That is why replacement text for the price and button should be written with the same care as WooCommerce form labels and notifications.
A strong message has three parts: the reason, the action, and the expected result. The reason explains why the price is not shown. The action tells the user what to click or who to contact. The expected result explains what they will get: access to wholesale terms, a manager's quote, shipping confirmation, or configuration guidance. All three can fit into one or two short sentences.
Message Examples for Different Scenarios
- For a guest: "Log in to your account to see pricing and purchase terms."
- For a wholesale catalog: "Wholesale pricing is available after account approval."
- For a quote-based product: "Request a quote - our team will confirm configuration and shipping."
- For a regional restriction: "Online ordering is unavailable in your region. Submit a request to confirm availability."
- For a temporarily closed sales flow: "This product is available on request. We will confirm availability and lead time."
Do not use wording that sounds like an error: "No price," "Unavailable," or "Contact us" with no context. If the price is hidden intentionally, the user should understand that. If they need to log in, the button should take them directly to login. If they need to submit a request, the form should be next to the product or clearly connected to it.
How Not to Damage Trust
Do not promise the "best price," a "discount after login," or a "fast quote" unless your team is prepared to deliver on it. It is better to be precise: "pricing depends on configuration," "shipping requires review," or "wholesale terms are available after approval." Messages like these feel less like a marketing trick and do a better job of explaining why the standard price is hidden.
If the store supports multiple languages, do not leave the message only in Russian or only in English when the site interface is multilingual. The plugin controls the output, but localization quality is still the site owner's responsibility. In an international catalog, it is especially important that a regional restriction message sounds careful and does not feel like an unexplained refusal.
Rollout Plan for a Live Store
After configuring the test rule, do not lock down the whole catalog at once. Rollout should happen in stages: first one product, then one category, then all target categories, then additional roles or countries. This sequence makes it easier to catch a theme, cache, or form conflict before customers start seeing incorrect product pages at scale.
Stage 1: Test Product
Create a product that is not currently used in advertising and is not needed by customers right now. Use it to verify the core behavior of hiding the price and the button. If you are using a form, submit several test requests from different browsers. At this stage, the goal is stability without extra conditions.
Stage 2: Small Category
Choose a category with a clear set of products. Check product pages, the category archive, search results, related-product blocks, and widgets. If some of those products also belong to other categories, add them to your overlap matrix. Do not expand the rule to the entire catalog until you understand how it behaves in mixed-category scenarios.
Stage 3: Roles and Real Users
Create or select test accounts for each role. Check not only whether the price is visible, but also the full user path: login, return to the product, form submission, navigation to the request page. If a role is assigned manually by a manager, verify the internal process too: who approves the role, where that is recorded, and what the user receives after approval.
Stage 4: Post-Launch Monitoring
After launch, review several real products from the public catalog and ask a manager to confirm that requests are coming through with clear information. After a few days, look at the analytics: clicks, form submissions, inquiries, and page abandonment. If users are not reaching the request step, improve the wording and the placement of the action, not just the rules themselves.
Safe Visual Improvements Without Editing the Plugin
The official sources do not provide a public list of hooks or templates specifically intended for safely customizing this plugin's output, so it is not a good idea to invent PHP filters or edit extension files. But you can use a careful CSS adjustment at the theme level or through a custom CSS tool if you want to make the replacement text or request button stand out visually. This approach does not change the rule logic and is easy to roll back.
Before adding CSS, open the public product page, inspect the actual element classes in the browser tools, and use those in your selector. The example below is not tied to an internal plugin class because classes may vary. It should be adapted to the real replacement element class used on your site.
/* Add this to the theme's custom CSS and replace the selector with the actual class of the replacement block */
.product .hide-price-message,
.product .request-price-message {
display: inline-block;
padding: 10px 14px;
border: 1px solid #d7dee8;
border-radius: 6px;
background: #f7f9fc;
color: #1f2937;
font-weight: 600;
}
The check is simple: open the product as a guest and make sure the text is now more visible, then log in as a user who should still see the price. If the style accidentally affects the normal price or buy button, remove the CSS or narrow the selector. Do not edit the plugin files: those changes will be lost on update and will make long-term support harder.
How to Check the Result on the Site After Every Change
Result validation is a separate stage, not a quick glance at a single product page. This plugin affects several layers at once: the product page, catalog grid, product widgets, related products, quick view, request form, user role, region, and cache. If you check only one page in an admin session, you can easily miss a place where the price or button is still visible.
Basic Validation Path
- Open the test product while logged out and check the price, button, replacement text, and link or form.
- Open the category page and confirm the product card in the grid behaves the same way.
- Log in as a regular customer and verify whether the output changes according to the rule.
- Log in as the role that has a separate rule and test the same product.
- Add a nearby product with no rule to the cart so you can confirm that normal purchases still work.
- Clear cache and repeat the test in a private window.
Checking the Form and the Link
If the buy button is replaced with a link, verify the URL, the destination page, and whether the user can get back to the product if that matters. If it is replaced with a form, submit a test request and check the email, required fields, spam protection, and mobile layout. If the form opens in a popup, make sure it does not conflict with another popup module in the theme.
Checking the Result After Updates
After updating WooCommerce, the theme, or the product page builder, repeat a short test. Price-hiding plugins depend on how the theme renders standard WooCommerce elements. If the theme changes the product template, the rule may still work logically while the public-facing site continues to show the old element through a different block.
Common Problems and Diagnostics
Problems with WooCommerce Hide Price & Add to Cart Button usually fall into four groups: an incorrect rule, overlapping rules, cache, or non-standard theme output. Start diagnostics with the simplest possible setup: one product, one user, one rule, cache cleared. If everything works in that state, add complexity one condition at a time.
The Price Is Hidden on the Product Page but Still Visible in the Catalog
Symptom: the price is replaced with text on the product page, but it is still visible on the category page or in a product block. A possible cause is that the theme, widget, or catalog block renders the price through a separate template. What to check: the default shop page, the category page, related product blocks, and custom builder sections. How to fix it: clear cache, verify the rule settings for the category, then temporarily switch to a default theme on a staging copy. If everything works correctly on the default theme, the issue is in the theme template or the catalog block configuration.
A Guest Still Sees the Price After the Rule Is Enabled
Symptom: the rule is created for guests, but a private window still shows the price. Possible causes: the rule is not applied to the correct product, the product is in the wrong category, cache is serving an old version of the page, or the user is actually logged in in another window. What to check: the rule scope, the product's published status, a truly logged-out private window, and cache clearing. How to fix it: narrow the rule to one test product, save it again, clear cache, and test once more.
The Wholesale Role Does Not Get the Expected Result
Symptom: a user with the wholesale role sees the same output as a regular customer or guest. Possible causes: the role is not assigned, the wrong role identifier is selected, a broader rule overrides the specific one, or the user has multiple roles. What to check: the user profile, rule order and priority, and a dedicated test account without extra roles. How to fix it: create a minimal rule for only one role and one product, then add the other conditions back afterward.
The Contact Form 7 Form Does Not Open or the Email Never Arrives
Symptom: a form is selected instead of the buy button, but the user cannot submit a request or the manager does not receive the email. Possible causes: the form does not work on its own, the popup conflicts with something else, WordPress email delivery is failing, or spam protection is blocking submission. What to check: form submission on a standalone page, the SMTP plugin's mail log, browser console errors, and the form's required fields. How to fix it: first make the normal form submit reliably, then reconnect it inside the plugin rule.
The Country Rule Works Unpredictably
Symptom: different users see different results, or the same user sometimes falls under a different rule. Possible causes: IP geolocation, VPN usage, a corporate network, CDN behavior, or page cache. What to check: cache mode, WooCommerce geolocation, rule conditions, and whether pages with regional logic are excluded from shared caching. How to fix it: use the country rule as a public-facing hint and confirm critical restrictions later during the request or order-processing stage.
The Buy Button Reappears After a Theme Update
Symptom: the rule used to work, but after a theme or builder update the button appears again in a new block. Possible causes: the theme changed the template, a new product block was added, or cache was not cleared. What to check: the theme update log, the new product-page output, and pages with custom product sections. How to fix it: clear cache, test the standard WooCommerce template, disable the new block on a test page, or contact the theme developer with a precise report showing where the element is being rendered.
Questions to Resolve Before Launch
Can I hide only the price and still keep the buy button?
The plugin lets you hide the price and the buy button as separate rule settings. But from the user's point of view, that scenario needs especially careful testing: a customer may add the product to the cart without understanding the final price. For most stores, it is safer either to show the price or to replace the purchase action with a request flow.
Is this plugin suitable for a fully closed B2B store?
Yes, if the products should remain visible while price and purchasing are available only to approved users. But if you also need to hide products, categories, menus, documents, and account-specific terms, price hiding alone may not be enough. In that case, look at solutions for product visibility, B2B account areas, or wholesale roles.
Do I need to disable the cart and checkout?
Not always. If some products are still sold the normal way, the cart should continue to work. Hide the buy button only for the products and audiences where direct ordering is not needed. After setup, always test a regular product as well to make sure standard sales still work.
Why is the price still visible to the administrator even though the rule is enabled?
An administrator is often not part of the rule's target audience. Test the result as a guest, a regular customer, and a user with the intended role. If the rule is configured for guests, seeing the price in an admin session does not automatically mean the setup is wrong.
Can I use Contact Form 7 for price requests?
Yes. The plugin documentation explicitly mentions the option to select a Contact Form 7 form instead of the buy button. First test the form on its own: submission, required fields, email delivery, spam protection, and clear message wording. Then connect it to the rule.
Will hiding the price hurt SEO?
Hiding the price is not automatically an SEO problem as long as the product page remains useful: it still has a description, specifications, images, and a clear next step. But a blank product page with no price, no button, and no explanation creates a poor user experience. Do not hide the entire purpose of the page if you want search traffic.
Can I rely on country-based rules as a precise legal restriction?
Probably not. Country-based rules are useful for a preliminary interface scenario, but IP geolocation can be wrong because of VPNs, corporate networks, and caching. For critical restrictions, keep an additional validation step in the request, shipping, or manual review process.
What should I do if nothing changes after setup?
Narrow the test down to one test product and one rule, clear cache, open a private window, and check the user role and the rule scope. If it works on the default theme but not on your active theme, look for a conflict in the product template or in builder blocks.
When WooCommerce Hide Price & Add to Cart Button Is the Right Choice
This plugin is a strong fit for stores that need to keep the catalog visible while controlling access to pricing and purchasing. It is especially useful for B2B storefronts, quote-based products, regional restrictions, and scenarios where a request is needed instead of a direct order. Its strength is the rule system: you can configure different conditions for guests, roles, products, categories, and countries, and replace the hidden action with text, a link, or a form.
Before launch, keep the focus on the user outcome. Do not just hide the price - explain what the customer should do next. Do not create dozens of overlapping rules without a test map. Do not rely on checking only from an admin session. If, after reading this guide, you know which products should be restricted, for which audience, what message should be shown, and how to verify the product page, you can move on to the install file and download WooCommerce Hide Price & Add to Cart Button for a safe test on your site.
If you need more than just price replacement - for example, a full request workflow, multiple pricing tiers, visibility control for the products themselves, or a larger B2B portal - use this guide as a requirements map and compare similar solutions before implementation. The right choice here is not defined by how many features a tool has, but by how precisely it supports your actual sales workflow.


