Login to see price on Shopify
“Log in to see price” is the most requested lock in Shopify, and the one merchants most often build badly.
Prime Lock removes the price server-side for guests and blocks their checkout, so the number is not merely invisible.
The problem
The usual first move is editing `price.liquid` (or `main-product.liquid`, depending on the theme) and wrapping the price block in a customer check. It works on the day you ship it. Then the theme updates, your snippet is gone or conflicts, and the price is back. Worse, the price never actually left: Shopify serves it at `/products/handle.js` and `/products/handle.json`, which are public endpoints your Liquid does not touch. A scraper, a price-comparison bot, or anyone typing `.js` after the URL reads the full variant list with prices.
The second move is CSS: `.price { display: none }`. This hides the price from a human with default settings and from nobody else. The number is in view-source, in the DOM, in the structured data Google reads, and in the Shopping feed. Ctrl+U defeats it.
The third is a store-wide password, which is not a login gate: it blocks Google, blocks your ads, and blocks the retail traffic you are paying for.
How Prime Lock does it
Prime Lock does this at the data layer. The theme is untouched, so a theme update cannot break it.
- 1
Lock type → Hide price and add to cart
Product titles, images, descriptions and reviews stay visible so the page keeps ranking. Only the commercial data goes.
- 2
Applies to → Entire store, or specific products
Most merchants start with Entire store and carve out exceptions. If only part of the catalog is sensitive, scope it to products or a collection instead: pages that do not need a lock should not have one.
- 3
Who can unlock → Any logged-in customer
No tags, no approval queue. Creating an account is the price of seeing the price. Switch to tag-based later if you decide to start vetting.
- 4
Also allow a secret link → Optional
Useful for sending a specific buyer straight to a price without an account, for example inside a quote email.
- 5
Schedule → Always on
No date window unless you are running a members-only pricing period.
- 6
Storefront behavior → Replace price with custom text
Set your own sentence, translated per language: Prime Lock reads the storefront locale, so a French visitor gets your French string rather than an English fallback.
What the customer sees
The guest sees your sentence and a login button. The signed-in customer sees the price. Same URL, same theme.
Precision Torque Driver · 1/4 inch drive
Aspedan Supply · SKU BCT-24
Log in to see price
The product page is still indexable by Google, only the price is withheld.
Why enforcement matters here
Prices hidden in the theme still ship in `/products/handle.js`. That endpoint is how your own theme's variant picker gets its data, so you cannot simply delete it, and it returns every variant, every price, and every inventory figure to anyone who asks. Scrapers and price-comparison bots read it by default; they do not render your CSS and they do not evaluate your Liquid.
Prime Lock strips the price from the storefront response and from structured data for locked visitors, and the checkout Function rejects a cart built from a permalink by a guest. A visitor who wants your price has exactly one path to it: create an account. That is the behavior merchants think they are buying when they edit the theme, and it is the behavior they do not actually get.
Related
Blog
Login to see price without theme code
Why the Liquid snippet you found on a forum stops working, and what to do instead.
ReadBlog
Direct cart links bypass price hiding
A walkthrough of the permalink that defeats every visual-only lock.
ReadDocs
Create your first lock
The five-minute setup, from app embed to a live rule.
ReadDecide who gets to see your store.
Early access opens with the free plan. Unlimited locks, enforced at checkout.
No newsletter. One email when Prime Lock is live.