Magento 2 Hide Price for Guests: The B2B Guide
Magento 2 Hide Price for Guests: Gate Your Catalogue Properly

Magento 2 Hide Price for Guests: Gate Your Catalogue Properly

6 min read 74 views

How price hiding works in Magento 2

To hide prices for guests in Magento 2, you need a module that suppresses the price and "add to cart" for the NOT LOGGED IN customer group and reveals account pricing on login — and it must do so on every surface a price can render, not just the product page. Magento Open Source has no native hide-price setting, and the common failure is a half-done job that gates the product page while prices keep leaking through listings, search, the mini-cart and structured data.

Trade and B2B sellers hide prices for good reasons: pricing is account-specific, suppliers enforce minimum advertised prices, or a quote is simply the right first conversation. This guide covers the three gating modes, the full list of surfaces to check, and how to pair gating with Magento's native customer groups so each account sees its own price.

The three gating modes

  • Hide price until login. Anonymous visitors see the product but no price and no "add to cart"; approved trade customers log in and see their account pricing. The right default for protecting trade rates while staying discoverable in search.
  • Quote-only. No price and no checkout at all — a "request a quote" action replaces "add to cart" and feeds a proper RFQ workflow (the full flow is in Magento 2 request a quote). Right for negotiated, made-to-order or MAP-restricted ranges.
  • Fully gated catalogue. The catalogue, or sections of it, is invisible until an approved account logs in. For genuinely closed trade-only operations — the strongest protection, at the cost of organic discovery for the gated ranges.

These modes can coexist. A common setup is a public retail range at list price, a trade range with hidden prices, and a quote-only range for negotiated lines.

Every surface a price can leak from

Hiding the price on the product page is the easy 80%. The trap is the rest. Before calling price gating done, check each of these as a logged-out visitor:

SurfaceWhere it leaksWhat to check
Category listingsPrice under every product tileBrowse each gated category logged out
Search results & autocompletePrices in results and suggestion dropdownsSearch for a gated product logged out
Mini-cart and cartLine prices and totalsShould be unreachable for gated items when logged out
Quick-view modalsTheme quick-view often renders its own price blockOpen quick-view from a listing
Related, up-sell and cross-sell blocksPrice under recommendation tilesView a public product that recommends a gated one
Wishlist and compareBoth render prices independentlyAdd a gated product, view logged out
Structured dataJSON-LD Offer markup carries the price to crawlers even when it is hidden on screenView source and search for "price"
Product feedsGoogle Shopping and Meta feeds publish prices by designExclude gated SKUs from feed generation
Transactional emailsQuote and order emails render prices — fine for the account holder, not for shared inboxesReview templates
Full-page cacheA cached logged-in page served to a guest exposes the priceConfirm gating varies the cache correctly; test after bin/magento cache:flush

Miss one and you have published the price you were trying to protect. Doing this properly means one rule, applied consistently, across every renderer — which is exactly why hide-price belongs in a module built for it rather than a set of template edits. The B2B Suite for Magento applies hide-price and quote-only modes across these surfaces as one configuration rather than a patchwork.

Pair gating with customer groups for account pricing

Hide-price is most powerful combined with Magento's native pricing machinery, so that gating and account-specific pricing work as one system:

  1. Create your trade tiers under Customers → Customer Groups — the NOT LOGGED IN group is your gated public.
  2. Assign approved trade customers to their group via Customers → All Customers, on each customer's Account Information tab.
  3. Set per-group prices on each product under Catalog → Products → Advanced Pricing, or apply group-scoped rules under Marketing → Promotions → Catalog Price Rule.
  4. Configure your hide-price rules against the NOT LOGGED IN group so anonymous visitors see no price while every logged-in account resolves its own.
  5. Run bin/magento indexer:reindex and bin/magento cache:flush, then test logged out, logged in as a trade account, and logged in as a retail account.

The result is account-specific B2B pricing with no enterprise machinery — part of the wider Magento B2B without Adobe Commerce playbook.

Keep it fast and discoverable

Gating prices should not mean hiding from Google. In hide-until-login mode the product pages stay fully indexable — titles, descriptions, images and specifications are public; only the price resolves based on who is looking. Two practical notes: first, keep gated SKUs out of your public product feeds, since a feed price defeats on-site gating; second, make sure your structured data omits the Offer price for gated products rather than leaking it to crawlers. Done on a fast storefront, you get protected pricing and strong organic visibility at the same time — see the complete headless Magento guide for how the storefront side fits together.

Choosing the approach

If your prices are account-specific or MAP-restricted, start with hide-until-login across the affected ranges. If your sales conversation is genuinely quote-first, use quote-only mode and route enquiries into a tracked RFQ workflow rather than a contact form. Reserve the fully gated catalogue for closed trade operations that do not depend on organic discovery. Whichever mode fits, verify every surface in the table above before you call it live — hide-price and quote-only ship as part of the AgenticEcom Suite's B2B modules, with the standalone option on the B2B Suite page.

FAQ

How do I hide prices in Magento 2 until a customer logs in?

Magento has no native hide-price setting, so you add a module that suppresses the price and "add to cart" for the NOT LOGGED IN customer group and reveals account pricing on login. The critical part is coverage: listings, search, mini-cart, quick-view, recommendation blocks and structured data, not just the product page.

Can I show different prices to different B2B customers?

Yes, natively. Assign each account to a customer group, then set group and tier prices per product under Advanced Pricing or apply group-scoped catalogue price rules. Combined with hide-price, the public sees no price while each logged-in account sees its own negotiated rate.

Does hiding prices hurt SEO?

Not in hide-until-login mode. Product pages remain fully indexable — only the price rendering is gated by who is viewing. Keep gated SKUs out of public product feeds and out of Offer structured data so the hidden price does not leak to crawlers.

What is the difference between hide-price and quote-only?

Hide-price keeps checkout available to logged-in accounts and simply gates who sees the price. Quote-only removes price and checkout entirely, replacing them with a request-a-quote action that starts a negotiation, which suits made-to-order and negotiated ranges.