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. 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. 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. 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. 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. 5

    Schedule Always on

    No date window unless you are running a members-only pricing period.

  6. 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.

Combination Spanner Set, 8 piece, metric

Combination Spanner Set · 8 piece, metric

Halden Tool Works · SKU HTW-SPN-08

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.

Verify it on every surface, not just the product page

A price renders in more places than merchants expect, and a gate that covers only the product template looks fine in testing and leaks in production. Work through this list once after enabling the lock, logged out, in a private window.

  • The product page itself, including any sticky add-to-cart bar your theme adds on mobile.
  • Collection and search-results grids, which render their own price markup.
  • The quick-add or quick-view modal, if your theme has one.
  • The cart drawer, using an item added before the lock was enabled.
  • The raw JSON at /products/<handle>.js, which no theme edit can cover.
  • A hand-built cart permalink at /cart/<variant_id>:1, which is the one that proves enforcement rather than hiding.

Write the replacement text as a call to action

The string that replaces the price is the highest-value copy on the page, and “Log in to see price” wastes it on the minority of visitors who already have an account. Most people meeting your gate have never bought from you.

Give them both doors: a login link for returning buyers and an apply link for everyone else, with one line explaining who qualifies. Storefront text is translatable per language in the Design screen, so a store selling into several markets should not be showing English to all of them.

Decide 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.