A distributor moves their whole catalog behind a trade login. Traffic disappears over the following six weeks. The cause is rarely a penalty; it is usually that six hundred product pages started returning a login screen, Google recrawled them, found near-identical thin pages, and dropped them. Years of accumulated organic footprint, gone for a configuration decision that took an afternoon.
The good news is that hiding a price and staying indexed are not in conflict. They only conflict if you lock the whole page instead of the part you actually need to hide.
Risk 1: cloaking
Cloaking is showing search engines materially different content from what users see, and it is one of the few things Google treats as a spam policy violation rather than a quality signal. The tempting implementation (detect Googlebot by user agent, serve it the full page with the price, serve everyone else the locked version) is exactly the pattern the policy describes.
Do not do it, and be careful about doing it accidentally. Two common accidents: a locking script that skips execution for crawler user agents "so SEO still works", and price markup left in the JSON-LD while removed from the visible page.
Login walls are not automatically cloaking
Worth being precise: gating content behind a login is allowed. Publishers do it constantly. What is not allowed is the special case for the crawler. If Googlebot gets the same locked page a logged-out visitor gets, you are compliant: Google simply indexes what it can see.
Risk 2: thin and duplicate content
If your locked pages all render the same "Log in to see price" panel and nothing else, you have generated hundreds of pages with near-identical content and no unique value. Google's response is to index a few and ignore the rest, and to lose confidence in the section as a whole.
The fix is content, not configuration. Keep the description, the specifications, the images, the reviews and the internal links. A product page with 300 words of genuine description and no price is a perfectly good search result for the query that brought someone there. A page with a login form is not.
Risk 3: deindexing what you already earned
This is the expensive one. Any of the following will remove an already-ranking page from the index: returning 404 or 410, adding noindex, redirecting to a login page, or blocking the path in robots.txt. Recovery after reversing the change takes weeks to months and is not guaranteed to return to the same position.
Before you lock an existing catalog, check what it is worth. Search Console → Pages, filtered to the collection path, and Performance filtered the same way. If those URLs bring in meaningful impressions, locking the page rather than the price is a direct revenue decision.
The safe pattern
| Element | What to do | Why |
|---|---|---|
| HTTP status | Keep 200 | 404 and 301 remove the page from the index |
| Title and meta description | Leave intact | This is what ranks and what gets clicked |
| Product description and specs | Leave visible | Prevents the thin-content problem |
| Images | Leave visible | Image search is a real channel for physical products |
| Price | Replace with your locked message | The only thing you actually needed to hide |
| Add to cart | Replace with the login or apply link | Also your conversion path for new trade accounts |
| Product JSON-LD | Keep, but remove the price field | Matches the page; avoids advertising an unpublished price |
| robots.txt / noindex | Change nothing | Both remove you from search entirely |
Handling the structured data
Most Shopify themes emit Product schema with an offers block. On a locked page, keep the schema and drop the price so it stays consistent with what is rendered:
{
"@type": "Product",
"name": "Merino Wool Throw",
"description": "…",
"image": ["…"],
"offers": {
"@type": "Offer",
"availability": "https://schema.org/InStock",
"url": "https://example.com/products/merino-wool-throw"
}
}Leaving the price in the schema after hiding it on the page creates a SERP result showing a price the visitor cannot find, which is a poor experience, a mismatch Google can flag, and, if you resell brands with MAP agreements, a published price you contractually should not be publishing.
What about the Google Shopping feed
Shopping is a separate system with its own rules, and its main rule here is consistency: the price in the feed must match the price on the landing page, and the landing page must let a shopper buy. A locked product cannot satisfy either, so it will be disapproved.
- Exclude locked products from the feed, using a collection or a metafield rule in the Google & YouTube channel.
- Do not attempt to feed a trade price. Shopping is a consumer surface and your MAP or distribution terms usually forbid it anyway.
- Keep the pages in the organic index. Organic and Shopping are independent: leaving Shopping does not affect organic rankings.
When 404 or redirect is the right answer
Not everything should stay indexed. Return a 404 when the page should not exist for anyone: a discontinued line, or an expired seasonal drop with no successor. Redirect when there is a genuine replacement, such as an old model pointing at the new one. Use noindex for internal utility pages that were never meant to rank, like a trade application confirmation.
The distinction to hold onto: 404 and redirect answer "does this page exist?". Locking answers "who may see this price?". Using the first to solve the second is what costs merchants their rankings.
How to check what Google currently has
Before changing anything, find out what state your locked pages are actually in. Merchants are often wrong about this in both directions, either assuming pages are indexed when they were quietly dropped months ago, or assuming they were deindexed when they are ranking fine.
- 1In Google Search Console, open Pages and read the Not indexed reasons. Look specifically for Excluded by noindex tag and Blocked by robots.txt on URLs you expected to rank.
- 2Run the URL Inspection tool on one locked product. Choose Test live URL, then View tested page, then the HTML tab, and search it for your price. That tells you exactly what Googlebot receives right now, which is the only version that matters.
- 3In the same view, check the rendered screenshot. If it shows your replacement message rather than a price, your gate is working the way you intended.
- 4Search site:yourstore.com plus a locked product name. If nothing comes back, the page is not in the index and you have a recovery job rather than a maintenance job.
- 5Check Performance filtered to those URLs over the last sixteen months. A cliff that lines up with the date you installed a locking app is a strong signal about what caused it.
If you find pages that were deindexed by a previous setup, recovery is usually straightforward but not instant. Restore a 200 response, remove the noindex, make sure the page carries real content beyond the hidden price, and request indexing for the most valuable URLs individually. Expect weeks rather than days, and expect the pages that had earned links to come back faster than the ones that had not.
Keep the page worth indexing
There is a trap in the safe pattern worth naming. If your product pages carry nothing but a title, an image and a price, then withholding the price leaves a page that is genuinely thin, and thin pages get treated accordingly regardless of whether they return a 200.
The fix is not an SEO trick; it is that the page should have been more substantial anyway. Specifications, materials, dimensions, case-pack quantities, lead times, care instructions and the questions trade buyers actually ask are all content that belongs on the page, costs nothing to publish, and does not reveal a price. A locked product page with four paragraphs of genuine specification is a page that can rank on its own merits. A locked product page with a title and a hidden number is not.
This is also the difference between a gate that costs you traffic and one that compounds it. The catalog stays discoverable, buyers arrive from search, and the only thing they need an account for is the number.
Prime Lock's default behaviour follows the safe pattern: pages stay 200 and indexable, only the price and buy section are withheld, and price is stripped from the Product schema on locked resources.