Public Pricing Is Killing Your B2B Margins
Imagine this scenario. A distributor visits your Magento 2 store, sees your wholesale pricing displayed openly on every product page, and takes a screenshot. They forward it to your competitor, who undercuts you by five percent. Or worse, a retail customer sees your bulk pricing tier and demands the same rate on a single-unit order. Your sales team spends the next three days explaining why wholesale and retail prices are different, while your distributor relationship suffers lasting damage.
This is not hypothetical. B2B merchants who display pricing openly face three persistent problems. First, competitors harvest your pricing data and use it to undercut you. Second, retail customers discover wholesale rates and erode your margin expectations. Third, manufacturers who enforce Minimum Advertised Price (MAP) policies penalize you for displaying prices they consider unauthorized. According to a Forrester study, 74% of B2B buyers research pricing online before contacting a sales representative, which means your publicly visible prices are the first thing they — and your competitors — see.
Magento 2 does not provide a native way to selectively hide prices from specific visitors. Every product page shows the same price to every person, whether they are a logged-in wholesale buyer or an anonymous browser. For B2C stores this is fine. For wholesale, distributor, and hybrid B2B/B2C stores, it is a competitive liability. You need a way to control who sees what, and what they see instead.
What Is Hide Price / Call for Price (and Why Your Magento 2 Store Needs It)
The Hide Price / Call for Price extension gives you granular control over price visibility in your Magento 2 store. Instead of showing prices to every visitor, you decide exactly who sees pricing and who sees an alternative message or action instead.
At its core, the extension replaces the price display on product pages, category listings, and search results with a configurable Call for Price message — for example "Call for Price," "Request Pricing," or "Login to See Price" — and can optionally hide the "Add to Cart" button and display your sales phone number. You control who sees this treatment by customer group, so approved buyers keep their pricing while everyone else is prompted to inquire.
This matters because B2B pricing is rarely one-size-fits-all. Negotiated rates vary by account. Volume discounts change per customer tier. Some products require custom quotes because configuration options affect the final cost. MAP policies restrict what you can advertise publicly. A static price displayed to everyone ignores all of these realities.
The psychological principle behind hiding prices is straightforward: scarcity of information creates engagement. When a buyer sees "Call for Price" instead of a number, they are prompted to take action. They call your sales team. They submit a quote request. They create an account. Each of these actions moves them deeper into your sales funnel, giving your team an opportunity to build a relationship, understand requirements, and close at the right price — rather than losing the buyer to a competitor who listed a lower number on their product page.
This extension is not the right fit if you run a pure B2C store where every customer sees the same price. It is built for wholesale, distributor, manufacturer, and hybrid stores where pricing control is a business requirement, not a preference.
Key Features of MageRa Hide Price for Magento 2
Hide Prices from Guest Visitors — Add the "NOT LOGGED IN" group to the Customer Groups setting and every guest sees your Call for Price message instead of product prices. This is the most common use case: force visitors to create an account or contact your sales team before they see what things cost. Guests browsing category pages, search results, and product detail pages all see the same "Call for Price" treatment.
Customer Group-Level Control — Select exactly which customer groups see hidden prices using a single multiselect. Hide pricing from "NOT LOGGED IN" and "General" while keeping it visible for "Wholesale," "Distributor," and any VIP group you create. This gives you precision without complexity — your approved wholesale buyers see their negotiated rates, while everyone else sees the prompt to inquire.
Customizable Call for Price Message — Replace the default "Call for Price" text with anything you want: "Request Pricing," "Login to View Price," or "Contact Sales." The Call for Price Message field lets you match the tone and language of your brand for the affected visitors.
Hide Add to Cart Button — A dedicated toggle removes the Add to Cart button for affected visitors, so buyers cannot purchase until pricing is arranged. Leave it off if you want the button to remain while only the price is replaced.
Show Phone Number — Turn on the phone number option and enter your sales line so it appears next to the Call for Price message. This gives hidden-price visitors an immediate, friction-free way to reach your team for a quote without a separate contact page.
Responsive Theme Integration — The extension works with all Magento 2 themes, including Luma, Hyvä, and custom themes. The price replacement elements inherit your theme's styling, so "Call for Price" looks native rather than bolted on.
Screenshot of the MageRa Hide Price admin configuration panel showing the Enable Hide Price toggle, Customer Groups selection, Call for Price Message, and phone number options in Magento 2.
Screenshot of a Magento 2 storefront product page showing the "Call for Price" message in place of the product price, with the contact phone number displayed for guest visitors.
How to Set Up Hide Price / Call for Price in Magento 2
Step 1: Verify Prerequisites
Before installing, confirm your environment meets the requirements. You need Magento 2.4.6 or higher (2.4.6, 2.4.7, 2.4.8, and 2.4.9 are all supported), PHP 8.3, 8.4, or 8.5, and the MageRa Base module installed. Composer 2.x is required for package management. Navigate to Stores > Configuration > Advanced > Advanced and verify that MageRa modules are listed in the disabled modules section (they will appear after installation).
Step 2: Install the Extension
Run the following Composer commands from your Magento 2 root directory:
composer require magera/module-hide-price
php bin/magento module:enable MageRa_HidePrice
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento cache:flush
The extension registers itself as MageRa_HidePrice in Magento's module system. After the cache flush, the configuration panel appears under its own Hide Price section in your admin panel.
Step 3: Configure General Settings
Go to Stores > Configuration > Hide Price > General Settings. Under General Configuration, set "Enable Hide Price" to Yes. In the "Call for Price Message" field, enter the text you want displayed in place of the price — "Call for Price" is the default, but you might prefer "Request Pricing" or "Login for Price." Set "Hide Add to Cart Button" to Yes if you want to remove the Add to Cart button for affected visitors so they cannot purchase until pricing is arranged.
Step 4: Choose Which Customer Groups See Hidden Prices
Use the "Customer Groups" multiselect to choose every group that should see the hidden-price treatment. Most B2B stores select "NOT LOGGED IN" at minimum. If you also sell to retail customers and want them to see prices but force a login for wholesale browsing, select only "NOT LOGGED IN." If you have tiered pricing where certain groups should not see rates (for example, a "Pending Approval" group for new wholesale applicants), select those as well. Groups left unselected continue to see normal pricing.
Step 5: Add a Contact Phone Number (Optional)
To give hidden-price visitors a direct way to inquire, set "Show Phone Number" to Yes and enter your sales line in the "Phone Number" field. The number appears alongside the Call for Price message on the storefront, so buyers know exactly how to reach you for a quote. Leave "Show Phone Number" set to No if you would rather drive inquiries through a login or your standard contact page.
Step 6: Test Before Going Live
Open an incognito browser window and visit your store as a guest. Verify that prices are hidden on product pages, category listings, and search results. Because the module enforces hiding through Magento price interceptors rather than theme edits, the Call for Price treatment applies consistently across the product view, product list, and cart contexts for the selected groups. Check that the Call for Price message appears correctly, that the Add to Cart button is hidden if you enabled that option, and that your phone number displays if you turned it on. Then log in as a customer from a group you did not select and verify that prices display normally. If your storefront uses a headless or PWA front end, you can verify the same logic over REST: GET /V1/magera/hideprice/check/:sku returns whether the price is hidden for the authenticated customer's group, so your front end can render the Call for Price message itself. Test on mobile devices to confirm responsive behavior.
MageRa Hide Price for Magento 2
MageRa Hide Price is built for performance and flexibility. The extension uses Magento 2's native plugin system to intercept price rendering, which means zero template overrides and no conflicts with custom themes. Price replacement logic executes at the layout level, so your theme's existing styles apply automatically to the replacement elements.
Key differentiators from other hide price solutions:
- No core file modifications — the extension uses dependency injection and plugins, not class rewrites, so it survives Magento upgrades without breaking
- Per-customer-group targeting — most hide price extensions offer a simple on/off toggle; MageRa lets you pick exactly which customer groups see hidden prices while the rest see normal pricing
- Built-in phone CTA — display your sales line directly beside the Call for Price message so interested buyers can reach you immediately
- Add to Cart control — optionally remove the Add to Cart button for affected visitors so pricing is arranged before any purchase
- Compatible with Magento 2 Open Source and Commerce (versions 2.4.6 through 2.4.9), PHP 8.3 through 8.5
- https://magera.ca/magento-2-hide-price.html →
For the complete B2B solution with all 7 extensions, see MageRa B2B Extensions Package.
Common Mistakes When Hiding Prices (and How to Avoid Them)
Hiding prices from the wrong audience — Not every visitor needs hidden pricing. If you sell both B2B and B2C, target the hide-price treatment only at the customer groups that should not see rates, leaving retail shoppers with public MSRP intact. Use the Customer Groups multiselect to pick exactly which groups are affected rather than disabling pricing for everyone. Visitors who cannot find any pricing information on a store that appears to sell direct will often leave without inquiring.
Providing no way to get pricing — Hiding prices without offering a clear path to obtain them frustrates buyers. Always pair the price replacement with a functional next step: turn on the Show Phone Number option so buyers can call your sales line, or use the Call for Price Message to point them toward logging in or registering. The goal is to start a conversation, not to create a dead end.
Ignoring mobile experience — Over half of B2B buyers research products on mobile devices before making purchases. Test your hidden-price pages on phones and tablets. Verify that the replacement message, request form, and buttons render correctly at smaller screen sizes. MageRa Hide Price integrates with responsive themes automatically, but custom theme modifications can sometimes interfere.
Pointing buyers at an unmonitored phone line — If you turn on Show Phone Number, make sure the number routes to a line your sales team actually answers during business hours. A "Call for Price" prompt that leads to voicemail wastes the inbound interest the extension is designed to capture.
Not testing logged-in customer experiences — A common error is configuring hide-price rules for guests and assuming logged-in customers are unaffected. Always verify. Log in as a customer from each group and confirm that pricing displays as expected for the groups you left unselected and is hidden for the groups you selected.
When to Use Hide Price vs. Request for Quote vs. Catalog Permissions
These three extensions serve different but complementary purposes in a B2B Magento 2 store, and understanding when to use each one prevents overlap and confusion.
Hide Price / Call for Price is the right choice when you want products to remain visible in the catalog and search results, but pricing should be hidden from specific visitor types. The product name, image, and description are publicly accessible; only the price and "Add to Cart" button are replaced. Use this when you want to generate inbound inquiries from interested buyers who can see what you sell but need to contact you for rates.
Request for Quote (read the full RFQ guide) is the right choice when you want a structured negotiation workflow. Customers submit a quote request with specific products and quantities, your team responds with custom pricing, and multiple rounds of negotiation are tracked in a dashboard. When the customer accepts, the quote converts directly into a Magento order. Use RFQ when your pricing is highly variable and depends on negotiation.
Catalog Permissions (see the permissions guide) is the right choice when entire products or categories should be invisible to unauthorized visitors. Instead of hiding just the price, the product itself does not appear in the catalog, search results, or navigation for customers who lack permission. Use this when you have exclusive product lines that only specific customer tiers should know about.
Many B2B stores use all three together: Catalog Permissions hides exclusive products from unqualified buyers, Hide Price replaces pricing on visible-but-negotiable products, and Request for Quote handles the actual negotiation. For the full B2B toolkit, see MageRa B2B Extensions Package.
How Hide Price Impacts Your SEO and Conversion Rates
A common concern among merchants considering a hide price strategy is whether replacing prices with "Call for Price" will hurt search engine rankings. The short answer: it does not have to, if you implement it correctly.
Search engines index product pages based on content, structure, and structured data — not on whether a price is displayed. Your product title, description, specifications, images, reviews, and schema markup all remain fully accessible to crawlers. The price field is one data point among many. MageRa Hide Price removes the price from the rendered HTML for restricted visitors, but the underlying structured data (including price) remains in your JSON-LD schema markup, which search engines parse independently. Your product pages stay indexable and rankable.
Conversion impact is more nuanced. Removing the price does reduce impulse purchases, but B2B buyers rarely make impulse purchases on industrial or wholesale products. What they do is research, compare, and inquire. A "Call for Price" prompt gives your sales team a qualified lead — someone who has found your product, evaluated its specifications, and is now asking for pricing. This is a warmer lead than a cold call, and it converts at a significantly higher rate because the buyer has already self-qualified by expressing interest.
The key metric to track is not add-to-cart rate on hidden-price products. It is inquiry volume and inquiry-to-close rate. If your sales team receives ten inquiries per week from the hide price form and closes three of them at an average order value of $5,000, the extension is generating $15,000 per week in revenue that would otherwise go to competitors who displayed lower prices and won the race to the bottom.
Conclusion
Hiding product prices from guests and specific customer groups is not about secrecy. It is about protecting your B2B pricing structure, generating qualified leads, and giving your sales team the opportunity to build relationships before price becomes the only differentiator. Public pricing commoditizes your products. Controlled pricing opens conversations.
MageRa Hide Price for Magento 2 gives you the granular control you need: per-customer-group rules, category and product-level overrides, a built-in inquiry form, and admin notifications that route leads directly to your sales team. Whether you are protecting MAP compliance, preventing competitor price harvesting, or simply forcing buyer engagement before revealing negotiated rates, the extension handles it without touching your theme templates or requiring custom development.
Protect your pricing and start more sales conversations. Install MageRa Hide Price for Magento 2 and configure your first hide-price rule in under ten minutes. Visit https://magera.ca/magento-2-hide-price.html to get started.
FAQ
Q1: Can I hide prices for guests but show them to all logged-in customers? A1: Yes. In the Customer Group Rules configuration, check "Not Logged In" and leave all other customer groups unchecked. When a guest visits your store, they see "Call for Price" or your configured replacement message. Once they create an account and log in, prices appear normally regardless of their assigned group. This is the most common configuration for stores that want to encourage account creation while keeping pricing visible for existing customers.
Q2: Will hiding prices affect my Google Shopping feed or product structured data? A2: No. MageRa Hide Price modifies the visual display of prices on your storefront for specific visitor types. Your Google Shopping XML feed, which is generated by Magento's catalog feed system, continues to include pricing data independently of the extension's display rules. JSON-LD structured data in your page source also remains intact, so search engine crawlers can still read price information for rich snippet display. The extension only hides prices from the rendered HTML that human visitors see.
Q3: Can I use different replacement messages for different products or categories? A3: The extension applies one Call for Price Message globally, and you control who sees it through the Customer Groups setting rather than per-product or per-category rules. If you need entire products or categories to be hidden from certain buyers, pair Hide Price with the Catalog Permissions extension, which restricts visibility and purchasing at the category level. For products that require a dedicated negotiation workflow, combine Hide Price with the Request for Quote extension so buyers can submit and negotiate a quote.
Internal Links
/blog/complete-b2b-extension-package-magento-2(B2B Extensions Package — the complete 7-extension B2B toolkit including Hide Price)/blog/magento-2-catalog-permissions-restrict-access(Catalog Permissions — hide entire products and categories from unauthorized customer groups)/blog/magento-2-request-for-quote-b2b(Request for Quote — structured negotiation workflow for custom B2B pricing)
Comments (0)
Be the first to comment.