WooCommerce Hide Price Range on Variable Products: All Three Surfaces
WooCommerce hide price range: variable products print the number three times - parent HTML, variation JSON, Store API. Filter all three, then…
Read moreBuild a price-free WooCommerce catalogue and collect product enquiries. Upgrade to Pro to manage quotes through to customer acceptance and payment.
B2B, wholesale, dealer and made-to-order stores price each customer differently. WooCommerce publishes one number to everybody — and then repeats it in half a dozen places most plugins never touch.
Every competitor, marketplace scraper and walk-in visitor reads the same figure you meant to negotiate. You can't quote a dealer 30% off a number they already saw.
Remove the price and the page becomes a dead end. Buyers email, or they leave — and the enquiry that does arrive has no product, no quantity and no record in WooCommerce.
CSS hides the label; the number stays in the Store API JSON your block theme ships to every visitor, in the JSON-LD your SEO plugin prints, and in wc/v3. View source and it's right there.
PriceVeil removes the number before the response leaves your server.
Hiding prices at every surface, catalog mode, variable products, where the enquiry lands, and pricing a request into a paid order. Scroll the row.
Hide the price, close the side doors, and give the buyer somewhere to go instead.
Not a CSS overlay. The price fields are blanked before the HTML or JSON leaves your server, so cached pages, API responses and view-source contain no price at all.
Block themes render prices from the Store API. PriceVeil blanks the product prices, price_html, the collection price-range aggregation and cart totals in those responses — server-side.
A configurable button and form take the price's place on the product page — or drop the [priceveil_form] shortcode anywhere. Nonce, honeypot and a per-IP rate limit protect it.
Each request becomes a native WooCommerce order with its own Quote Request status — in your normal orders screen, HPOS-compatible, and excluded from revenue and reports.
Add-to-cart disappears from classic and block templates, and the Store API rejects cart writes — so the API can't be used as a side door around the missing button.
Hide prices for everyone, or for guests only — so logged-in customers see prices and buy normally while the public catalogue stays price-free.
Prices are hidden the moment you activate. Everything after that is fine-tuning.
Install from the WordPress plugins screen with WooCommerce active. Prices are hidden immediately — there is no setup wizard to finish first.
Under WooCommerce → PriceVeil, pick who prices are hidden from, switch on catalog mode, and choose the button label and the fields on the form.
Quote requests land as Quote Request orders and arrive by email, with one-click reply to the customer. Price them yourself, or open the Requests console on Pro.
Everything on this page above the Pro sections is in the free plugin. Install it from WordPress.org, or read the full PriceVeil documentation first.
A price is not one string. WooCommerce writes it into the page, into the JSON your block theme fetches, into the schema your SEO plugin prints and into two REST namespaces. PriceVeil closes all of them in the same pass.
The buyer fills in a short form on the product page. What arrives is not an email in a shared inbox — it is a real order in your normal orders screen, with the product, the quantity and the customer already attached.
Some stores publish a full catalogue but sell entirely off-platform: dealers, distributors, made-to-order workshops. Catalog mode removes buying from the storefront without removing the storefront.
Wholesale pricing is rarely one number. The trade customer, the distributor and the walk-in each pay something different — and publishing any of it on a public product page is the thing most B2B ecommerce stores actually want to avoid.
The number comes off the catalogue and a button you label yourself takes its place — "Request a quote", "Call for price", "Price on request", whatever your trade says. The difference is where the hiding happens: the price is gone from the Store API, the schema, the REST API and GraphQL too, not just the visible label.
Requests arrive as Quote Request orders in your normal WooCommerce orders screen — never counted as revenue, never in reports. You price the request, send it, and the customer pays the number you agreed, on the same order.
Turn WooCommerce catalog mode on and the add to cart button goes with the price. It disappears from classic and block templates, and the Store API rejects cart writes — so nobody buys at a number you never agreed to, and the API cannot be used as a side door.
Rather keep selling to the public? Hide prices from guests only. Signed-in customers see prices and check out normally, while strangers and scrapers get a catalogue with no numbers in it anywhere.
PriceVeil does not publish a second price list. It removes the public number and routes the customer to a quote you price yourself — if you need automatic tiered or role-based price lists, that is a different kind of plugin, and the two sit happily side by side.
Anyone can claim their plugin hides prices. PriceVeil ships the two things that let you confirm it: an honest coverage panel that names what it does not cover, and a command that re-tests every server-reachable surface on demand.
The settings screen lists every surface protected automatically — and the short list you should check once yourself, because no plugin can close them for you.
get_price() directlyRun it after every WooCommerce, theme or SEO-plugin update. It re-verifies each server-reachable surface and fails loudly the moment one of them starts leaking again.
$ wp priceveil selftest storefront PASS store-api PASS schema (json-ld) PASS rest wc/v3, wc/v2 PASS graphql PASS cart & checkout PASS Success: no price leaks found.
Illustrative output. Run it on your own store and it reports on your own surfaces — and returns a non-zero exit code if anything fails, so it fits straight into a deploy script.
Free gets the price off your site and the request into WooCommerce. Pro turns that request into a priced quote the customer can accept and pay for online.
Open a request, price each line, set how long the quote stays valid, and send it — by email or WhatsApp — without leaving WordPress.
The customer opens their own quote page, accepts it and pays there — and gets a paid receipt. The negotiation ends in a completed WooCommerce order.
Build a quote out of required, optional and alternative line items, so the customer can add the extras they want or pick between two options before accepting.
Give dealers, wholesale and retail their own percentage pricing, so a quote starts from the right number for that buyer instead of from the list price.
Hide prices by category, by individual product or by user role instead of store-wide — so one catalogue can serve a public shop and a trade counter at once.
Buyers collect several products into a slide-in drawer and request one quote for the lot. Add custom form fields, and let auto-quote answer the routine ones for you.
The hiding, the catalog mode and the quote requests are free forever. Pro is one flat annual price per plan — no per-request fees, no commission on the quotes you win.
wp priceveil selftestEverything that hides a price is free. Pro is about what happens after the request arrives.
| Feature | Free | Pro |
|---|---|---|
| Hide prices on the storefrontsingle, loop, related, grouped, variable ranges | Included | Included |
| Store API blankedso block themes have nothing to render | Included | Included |
| Structured data cleanedcore JSON-LD, Rank Math, Yoast, AIOSEO, SASWP | Included | Included |
| REST & GraphQL price fieldswc/v3, wc/v2, WPGraphQL / WooGraphQL | Included | Included |
| Cart, mini-cart, checkout, emails, My Account | Included | Included |
| Catalog modeclassic + block templates, Store API rejects cart writes | Included | Included |
| Quote request formnonce, honeypot, per-IP rate limit | Included | Included |
| Quote Request ordersHPOS-compatible, excluded from revenue & reports | Included | Included |
| Audience: everyone or guests only | Included | Included |
Coverage panel & wp priceveil selftest | Included | Included |
| 8 languages incl. Arabic (RTL) | Included | Included |
| Requests consoleprice each line, set validity, send by email or WhatsApp | Not included— | Included |
| Customer decision pageaccept the quote and pay online | Not included— | Included |
| Paid receipt for the accepted quote | Not included— | Included |
| Configurable quotesrequired, optional and alternative line items | Not included— | Included |
| Customer groups with percentage pricing | Not included— | Included |
| Category, product and role targeting | Not included— | Included |
| Multi-product quote drawer | Not included— | Included |
| Custom quote-form fields | Not included— | Included |
| Auto-quote automation | Not included— | Included |
| Priority support | Not included— | Included |
| Get Free | Get Pro |
Everything worth knowing before you hide a price.
No, and it is worth being clear about it. PriceVeil does not publish a second set of numbers for trade customers. It handles wholesale pricing the other way round: the public price comes off the catalogue entirely, the customer requests a quote, and you price that request individually before it becomes a payable order. If you need automatic tiered or role-based price lists, that is a different kind of plugin — and the two can sit side by side.
Yes, that is exactly the pattern. The price is removed and a button you label yourself — "Request a quote", "Call for price", "Price on request", whatever suits your trade — takes its place, with a form behind it. The difference from most plugins of this kind is where the hiding happens: the number is gone from the Store API, the JSON-LD schema, the REST API and GraphQL as well as the visible label, so a block theme or a feed cannot quietly reveal it.
Both. WooCommerce catalog mode hides the price and the add to cart button together — it disappears from classic and block templates, and the Store API rejects cart writes, so the API cannot be used as a side door around the missing button. And the audience control lets you run a login to see price catalogue instead: guests see no prices, signed-in customers see them and buy normally.
Removed server-side. The price fields are blanked before the HTML or JSON leaves your server, so cached pages, API responses and view-source contain no price at all — there is nothing left for a reader, a scraper or a browser extension to un-hide.
Yes. Block themes render prices from the Store API rather than from PHP, so PriceVeil blanks the product prices, price_html, the collection price-range aggregation and cart totals in those responses server-side. Catalog mode also makes the Store API reject cart writes.
Yes. Set Hide prices for to Guests only and logged-in users get the normal store, prices included, while the public catalogue stays price-free. Pro narrows it further — by category, by product or by user role.
Into your normal WooCommerce orders screen, as native orders with a dedicated Quote Request status. They are HPOS-compatible, need no extra database tables, and are excluded from paid statuses so they never appear as revenue or in your reports. You also get an email with one-click reply to the customer.
Three things, and the settings screen names them rather than hiding them: product feed plugins (they export prices on purpose), custom theme code that calls $product->get_price() directly, and edge caches primed before you activated the plugin. Everything reachable server-side is verified by wp priceveil selftest.
Free covers all of the hiding: storefront, Store API, schema, REST, GraphQL, cart and emails, plus catalog mode, the quote request form, Quote Request orders, the coverage panel and the CLI self-test. Pro adds what happens next — the Requests console, a customer page where they accept and pay online, configurable quotes, customer groups, targeting, the multi-product drawer, custom fields and auto-quote.
WordPress 6.4 or newer on PHP 8.1 or newer, with WooCommerce active. It is HPOS-compatible, works with classic and block themes, handles simple, variable and grouped products, and ships in 8 languages — English, Turkish, Spanish, German, French, Italian, Brazilian Portuguese and Arabic with right-to-left layout.
Checkout and billing are handled by Freemius, our merchant of record, with proper invoices and a 14-day money-back guarantee. Your plan sets how many sites can run Pro at once (1, 5 or 20) on a single licence key and a single renewal date, and you can cancel any time from your account panel.
Still deciding? The PriceVeil documentation covers every setting in detail, and the free plugin on WordPress.org answers the rest in about five minutes.
Install the free plugin and your prices are gone from every surface in minutes — or go straight to Pro and start sending quotes your customers can accept and pay online.
WooCommerce hide price range: variable products print the number three times - parent HTML, variation JSON, Store API. Filter all three, then…
Read moreRemove the WooCommerce Add to Cart button, with code or without — and close what the snippet misses: variations, block themes, the…
Read moreThe whole WooCommerce request a quote flow: show Price on request, capture the enquiry as a real order, and get paid when…
Read moreA plugin that hides the price on the product page but leaks through the Store API hides nothing. The surfaces we test…
Read moreSign in to the Freemius Customer Portal with the email address you used at checkout.