Home How it works
How it works
From a locked page to a paying customer
What a visitor sees, the two routes they can take through the door, how access sticks to them afterwards, and what you do on your side. In order.
- A locked page The price and the buy button are gated. Everything else is exactly your store.
- A code, or a request They type a passcode, follow an unlock link, or ask you and wait.
- Access granted Held against the person rather than the page, so it follows them around the store.
- An order An ordinary Shopify checkout. Nothing about it is ours.
01
A lock decides what is gated
A lock is a rule about part of your store. You can have any number of them running at once, and they can overlap. A wholesale collection and a public drop behave completely differently on the same storefront.
What it covers
A single product, a hand-picked set of products, a whole collection, or the entire store. Change the scope later and every page it touches updates. There is nothing to re-tag product by product.
What it hides
The price, the buy button, or both, chosen per lock. Replace a hidden price with your own wording and the page reads “Price on request” instead of showing a gap where a number was.
What it offers instead
The access code button, the request button, or both. They can also live as a standalone theme block in a header, footer or landing section, for people who arrive somewhere other than a product page.
When it applies
Optionally, a start and an end. Before the start, locked visitors see a countdown; after it, the content is open to everyone. Leave both blank and the lock simply stays on.
02
Two ways through the door
Each switches on and off independently in Settings. Most stores start with codes, add requests when the codes start being shared further than intended, and end up running both.
They have a code
The visitor taps “I have an access code”, types it, and the page unlocks in place. No new page, no account, no email round trip.
- Shared codes let a whole audience in with one string
- Single-use codes burn on redemption, so a screenshot is worth nothing twice
- Capped codes stop after a number of uses, a date, or both
- A code can be scoped to one lock, a set of products, or the whole store
- An unlock link does the typing for them: one tap from an email, and the code is stripped from the address bar so it can’t be bookmarked or forwarded
They ask you
The visitor collects what they want into an interest list, the stand-in for a cart on a store where nobody can check out, and submits it with your form attached.
- You build the form: any fields you want, plus country and dial-code pickers, location prefill and opt-in checkboxes
- The request arrives with what they wanted, which page they asked from, and which campaign sent them
- Auto-approve rules can let the obvious ones straight in
- Approving creates the Shopify customer record, and their list can become a draft order you invoice at your own pricing
03
Access sticks to the person, not the page
Once someone is in, they stay in. Nobody is asked again on every product, and you keep no spreadsheet of who has what.
Signed-in customers
Get a customer tag. Their access follows them to a new device or a new browser, and it works with Shopify segments, discounts and Flow. All of them read the tag without knowing this app exists.
Guests
Get a random token, held by their own browser under your domain. It contains no name, no email, nothing readable: only a reference to a grant on our side.
Either way, one record
Both routes write the same kind of grant, so access is revoked in one place. No hunting tags across customer records to work out who can still buy.
Underneath
The details that decide whether a lock app is usable
Most of what separates a gate that works from one that embarrasses you happens in the half-second before your theme paints.
No price flash
The app renders into <head> and hides prices with CSS before the theme paints. Apps that wait for JavaScript let the real price flash on screen first. On a wholesale store that’s a leak, not a cosmetic bug. All four ways to hide a price, and what each one misses.
Fails open, always
If the app can’t be reached within four seconds, the page reveals itself unlocked. A problem on our side must never blank out your storefront.
Decided server-side
The browser only paints. Gate decisions, code validation and requests all happen on our servers behind Shopify’s signature check, so who holds access is not something the page can be edited into changing. Editing the page in devtools gets you a visible button. It does not get you access, it does not forge a redemption, and where the lock is one Shopify enforces at checkout, the sale behind that button is refused at the cart anyway.
Survives DOM churn
Themes rewrite the page on variant change, filtering and quick view. The gate re-applies on every mutation, so opening a quick-view modal doesn’t slip past it.
The lines around the price
Themes print “Tax included”, “Shipping calculated at checkout” and an instalments banner outside the price element. That banner states the price outright, divided by four. All of it is hidden with the price by default, and you can keep it if you’d rather.
Stock stays private
Low-stock badges are computed in Liquid and anything above ten collapses to “many” before it reaches the page. The most anyone can read out of the source is “ten or fewer”.
Works with real themes
Selectors covering Dawn, Debut, Impulse, Prestige, Motion, Warehouse, Streamline and friends, plus a settings field for your own. That field is what covers a heavily customised theme without waiting on us for a code change.
Still findable
Your storefront stays browsable and indexable. Gate buying instead of the whole store and you have a shop people can want, not a login wall they bounce off.
Email that tells the truth
Access emails and request confirmations are sent by the app, under your shop’s name with your address for replies. Anything that can’t be delivered is shown to you to send by hand, never silently dropped.
Setup
Live in three steps
-
Install the app
From the Shopify App Store, onto the store you want to gate. Development stores get every feature free, permanently. Build the whole thing on a test store before it touches your real one.
-
Turn on the app embed
Online Store → Themes → Customize → App embeds → Inner Circle → Save. Nothing is gated until this is on. Installing the app changes nothing on your storefront by surprise.
-
Create your first lock
Choose what it covers, what a locked visitor sees, and which ways in you want to offer. Then test your own storefront. Yours is the only theme that matters.
Further reading
The longer version of the problems this page solves, written for the problem instead of for the product, including the places where the answer is not this app.
How to hide prices on Shopify
Every way to stop a price showing to the public: theme edits, customer accounts, the password page and gating apps. Which one fits which problem.
ReadThe Shopify password page, and when it is the wrong tool
Why Shopify cannot password protect a single page, the three jobs the built-in password page is genuinely good at, and what to use for the rest.
ReadReady to put a door on it?
Inner Circle installs from the Shopify App Store in a couple of minutes, and nothing on your storefront changes until you turn the app embed on.