Hide prices from Google
Keep wholesale or members-only prices out of Google's results — which settings to combine, what the app handles, and the one piece that lives in your theme.
Stores running wholesale, contract, or members-only pricing often hide a price from shoppers and then find it still showing in Google’s results. This page covers why that happens, which settings to combine, and the one piece that lives in your theme rather than in the app.
Before you start
Section titled “Before you start”| Requirement | Why it matters |
|---|---|
| A paid plan | The Google settings checkboxes are a paid feature. On the Free plan the app shows an upgrade prompt in their place. |
| Content type Products and variants or Collections | The price and Add-to-cart options, and the Google settings panel, only appear for these content types. |
| The theme app embed turned on | Nothing in the app reaches your storefront until the embed is active. See Enable the app embed. |
| A publicly reachable store | Google can’t crawl — or re-crawl — a store still behind Shopify’s own storefront password. Nothing in search results will change until the store is public. |
| A theme edit, or support | Taking the price out of your theme’s structured data is a small Liquid change. Support will make it for you. |
What it does and doesn’t do
Section titled “What it does and doesn’t do”| The app does | The app does not |
|---|---|
| Replace the visible price — and optionally the Add to cart button — for anyone who hasn’t passed your access rules | Rewrite the price inside your theme’s structured data (ld+json) |
| Remove protected products from your storefront’s own search and from the sitemap Shopify gives to search engines | Delete pages Google has already indexed |
Optionally add a noindex tag, so a page reached directly still isn’t indexed |
Make Google re-crawl — Google decides when it comes back |
| Apply per lock, so different products can be treated differently | Touch Google Shopping or Merchant Center feeds, which Shopify generates separately |
When to use it
Section titled “When to use it”It’s worth doing when a public price would actively cost you something:
- Wholesale or B2B pricing that shouldn’t be listed next to your retail price.
- Per-customer or contract pricing, where any single public number is misleading.
- Channel conflict, where distributors or resellers object to seeing your direct price indexed.
| Your store | Suggested setup |
|---|---|
| Mixed B2B and B2C | Lock only the B2B products or collections and hide the price on that lock. Your retail catalogue stays fully indexed and keeps earning traffic. |
| Wholesale only | One lock covering all products, price hidden, search visibility turned off for the whole catalogue. |
| Quote-based pricing | Hide price and Add to cart for everyone, then point shoppers at a sign-in or quote request through the message text. See Request access overview. |
Set it up
Section titled “Set it up”- Open Locks and create a new lock, or open an existing one to edit it.
- On the Lock setup tab, set Content to lock to Products and variants — or Collections — then select the products whose prices should stay private.
- Click Next to reach the Unlock rules tab, and add at least one access rule: Logged-in customers, or a Customer tags rule matching your wholesale tag, for example. A lock with no rule has nothing to check, so nothing gets hidden.
- In the right-hand sidebar, open Blocked visitor behavior and set the dropdown to Hide product price — or Hide product price and atc if the buy button should go too.
- Directly below it, in Google settings, tick Hide from search & sitemap. If you’d rather the page didn’t appear in results at all, tick Add the “noindex” meta tag to protected content as well.
- Click Save.

Both settings live in the same sidebar — the price setting on top, the search setting right below it.
Check the structured data in your theme
Section titled “Check the structured data in your theme”Most Shopify themes publish the price a second time, in a block of structured data (application/ld+json) in the page source. It’s separate from the price your shoppers see, and it’s the block Google reads to build a rich result. The app replaces the visible price, but it does not rewrite that block — so the price can still be sitting in your theme’s code for Google to pick up.
To check: open a protected product page, use your browser’s View page source, and search for ld+json. If you find a price there, that’s what Google is reading.

The visible price is hidden, but the same price is still published in the page’s structured data.
SEO considerations
Section titled “SEO considerations”Decide whether you still want the traffic
Section titled “Decide whether you still want the traffic”Hide from search & sitemap stops the page being listed for crawling; the noindex tag goes further and keeps it out of results entirely. If these products are a route into your store for new buyers, the second step costs you that traffic — Google can index a product’s title, description, and images perfectly well without a price. If the products are purely internal, taking them out of results completely is the cleaner choice.
Write product copy that works without a price
Section titled “Write product copy that works without a price”A product page with the price replaced needs to carry its own weight. Lead with what the product is and who it’s for, and make the next step obvious — the message that replaces the price is editable per lock and per language, so use it to say “sign in for wholesale pricing” rather than leaving the default. See Translate lock messages.
Google Shopping is a separate feed
Section titled “Google Shopping is a separate feed”Shopping ads and Merchant Center feeds are generated by Shopify, not by this app. A product whose price is hidden on your storefront can still be submitted to Shopping with its price attached. If that matters, exclude those products from the feed in Merchant Center or in whichever app manages it.
What to expect
Section titled “What to expect”| Question | Answer |
|---|---|
| How soon does Google update? | Not immediately. Google refreshes a listing the next time it crawls the page, and it sets that schedule itself — expect days rather than minutes. |
| How do I check progress? | Google Search Console. Watch the affected URLs and see whether price data stops appearing in the result. |
| Does an old cached price disappear on its own? | Only after a re-crawl. Until then the previous result can keep showing the old price. |
| Does this affect my whole store? | No. Each lock applies only to the products or collections selected on it. |
Troubleshooting
Section titled “Troubleshooting”| Symptom | What to check |
|---|---|
| Price still shows in Google | Confirm the lock is active and saved, the store is public, and Google has had time to re-crawl. If all three are true, it’s the theme’s structured data — see Check the structured data in your theme. |
| Price still shows on the storefront | That’s an access-rule question, not a search one. Confirm the lock has a rule, that you’re testing as a visitor who fails it, and that the theme app embed is on. See Lock not working. |
| The checkboxes are greyed out | Google settings is a paid feature, and the noindex option stays disabled until Hide from search & sitemap is ticked first. |
| The Google settings panel isn’t there | It appears for Products and variants and Collections. Check the content type on the Lock setup tab. |
| The product vanished from Google completely | Either the noindex option is on, or your theme or an SEO app is adding its own noindex. |
| Shopping ads still show the price | Merchant Center feeds are separate from this app. Update the feed there. |