Ecom Store Pro

How to Password Protect a Page on Shopify

Shopify's built-in password hides the whole store. Lock one page with a page template and customer tags, or use an app — and keep it out of Google.

Listen to a short brief of this article
Hands-free while you multitask

The short version

You can lock one Shopify page without an app by giving it its own page template with a Custom Liquid section that shows the content only to signed-in customers carrying a tag such as wholesale.

Shopify's built-in password, called private mode, hides every page of the online store, and a page on its own only switches between Visible and Hidden.

Keep the protected text inside that section rather than in the page body, set the seo.hidden metafield to 1 to keep the page out of search, test the lock with a tagged customer account, and don't use it for anything confidential.

An app fits when you need a shared password, a secret link or no theme code at all.

The Quick Verdict
Key Takeaway: For one page, give it its own template with a Custom Liquid section that shows the content only to signed-in customers carrying your tag, and test that with a tagged account. Choose an app for a shared password, a secret link or no theme code. Private mode closes the whole store.

Find your row; the sections below walk through each route.

Which lock, by what you need to hide

Your situationPickWhy
One page for signed-in customers you approvePage template + Custom Liquid tag checkNo app fee; the protected text goes in the section, not the page body; needs a plan other than Starter and a theme that can create templates in the editor
One page behind a shared password or secret link, no customer accountsAn appLock-page listings describe passwords and secret links; the template route checks signed-in customers only
No one to read, test and recheck theme codeAn appA template lock is Liquid you maintain and recheck yourself
The whole store stays closed until launchPrivate modeShopify's store password hides every page from visitors and search engines
The whole store is only for wholesale buyersPrivate mode, restricted to B2B customersA store-level setting in Online Store › Preferences for a dedicated B2B store; Shopify B2B isn't available on the Starter or Retail plans

What Does Shopify Give You Without an App?

Key takeaway

Shopify's built-in password locks the whole online store, not one page. Shopify calls it private mode, and the Help Center describes what it does in one sentence:

In private mode, all of your online store's pages are hidden from visitors and search engines, and your online store displays a customizable landing page instead.
Shopify Help Center — Restrict access to your online store ·

You change the access mode from the access setting menu on the Online Store page of your admin, and you manage the password under Online Store > Preferences. When you first register for a Shopify plan, the store starts in private mode by default. If you searched for “password protection”, it is the same setting: the mobile steps in the same Help Center article call it that.

In Shopify adminOpen in your store
  1. Online Store
  2. Preferences
The store password and the B2B-only setting both apply to every page, shown in a dev store.

Shopify's example of an extra private-mode setting is restricting access to B2B customers only, which it describes for a dedicated B2B store. That is a store setting: it decides who sees every page, not who sees one of them. Shopify B2B isn't available on the Starter or Retail plans.

If you want the whole store closed until launch rather than one page locked, our guide to setting up a coming soon page covers private mode and the password page.

A single page has just two visibility states. In the page editor, Shopify's page settings let you choose Visible or Hidden, and Hidden hides the page from your online store. There is no audience in that choice, so Hidden cannot let approved customers in while keeping everyone else out.

In Shopify adminOpen in your store
  1. Online Store
  2. Pages
Visibility offers Visible or Hidden, with no password or audience field, shown in a dev store.

For specific pages, the Help Center's B2B documentation says you can restrict access “using custom development or third-party apps”, which are the two routes below. The App Store's built-in features page for customer accounts lists Lock pages as supported but gives no steps, so we follow the Help Center here.

Which Route Fits the Page You Want to Lock?

Key takeaway

For one page, the choice is between a template lock in your theme and an app.

Template lock or app: how the two page routes compare
Page template + tag checkApp
Who gets inSigned-in customers carrying your tag; test this with a tagged accountWhatever the app checks: tags, sign-in, passwords, secret links
Customer accounts neededYes, the visitor signs inDepends on the listing; password and secret-link locks are described
What it hidesWhat sits inside one Custom Liquid section on one pagePages, and on some listings products, collections or blogs
What stays openThe page body, outside the sectionWe did not install or test these apps
Theme codeA few lines of Liquid you maintain and retest after theme changesNone to write
Plan and theme limitsStarter can't create templates; vintage themes can't from the theme editorEach app's plans and features
CostNo app feeFree or paid plans, per listing

If this page is the first step of a paid membership, with tiers, member pricing or recurring billing, the decision is wider than one page. Our members-only store guide compares the storefront password, customer accounts and per-customer gating side by side.

We carry one example through the guide: a wholesale price list on a page called Wholesale prices, meant only for customers tagged wholesale.

How to Lock One Page With a Template and Customer Tags

Key takeaway

The idea is simple. The page gets its own template, the template gets one extra section, and that section decides what to print by looking at the visitor. Everything below runs in the Shopify admin and the theme editor; nothing needs an app.

Why should the check read a tag, not just a sign-in?

Key takeaway

With sign-in links turned on, customer accounts let customers sign in with passwordless authentication: there is no password to share or leak. The catch is what happens when someone you have never heard of signs in:

If someone signs in with an email address that's not associated with an existing customer profile, then a new customer profile is created automatically.
Shopify Help Center — Customer accounts ·

So “is a customer signed in?” is the wrong question for a wholesale price list. The right question is whether this customer carries the tag you gave them.

Treat that tag as a filter, not a secret. Shopify notes that themes and apps can add tags to customers, and Dawn's footer signup form sends one in a hidden field. We could not establish whether a tag changed in that field reaches a customer profile: see our test.

So choose a tag name that is hard to guess and that your theme and apps don't add, and don't rely on this lock for anything confidential.

If your store still runs legacy customer accounts, Shopify has deprecated them and said a final sunset date would be announced later in 2026. We found no announced date on that changelog post or Shopify's upgrade page when we last checked them. After an upgrade, Shopify redirects legacy URLs such as /account/login to the new accounts. Our guide to moving off legacy customer accounts covers the rest of that switch.

Tag the customers who should get in

Key takeaway

Open the customer in Customers and, in the Tags section, add your tag. For a batch, select the customers in the list and click Add tags. In the example, every approved wholesale buyer gets wholesale.

In Shopify adminOpen in your store
  1. Customers
Add the approval tag in each customer's Tags card, shown in a dev store.

Shopify says tags are not case sensitive in the admin. Your check is a separate thing: it compares the text you type in the code with the customer's tags, so write the tag in the code exactly as the admin shows it. We tested letter case: see our test.

The check further down carries its own Sign in link, but the Help Center says customers can't sign in after you hide sign-in links, while its B2B documentation calls showing them optional. Keep sign-in links turned on, as where to turn on customer login shows, or test a real sign-in if you keep them off.

Create a page template and assign it

Key takeaway

If the page doesn't exist yet, create it first with Add page in Online Store > Pages. Then, in the theme editor of your live theme, click the Home page drop-down menu at the top of the editor (it names whichever template is open, Default page in our screenshot), choose Pages and click Create template. Name it after the page, wholesale in the example, and base it on Default page.

In Shopify adminOpen in your store
  1. Online Store
  2. Edit theme
Name the template after the page and base it on Default page, shown on Dawn in a dev store.

Assign the template just before you test, once the check, the protected text and seo.hidden, all covered below, are in place: open the page in Online Store > Pages and pick the new template in the Template drop-down, which Shopify's Help Center calls Theme template. That list shows only the templates in your current live theme, so a template created in a draft copy won't appear there.

In Shopify adminOpen in your store
  1. Online Store
  2. Pages
Pick the new template on the page, where only the live theme's templates appear, shown on Dawn in a dev store.

Two setups can't create the template. The Starter plan doesn't support creating new templates, and Shopify's theme comparison lists creating templates from the theme editor for Online Store 2.0 themes and themes with theme blocks, including the Horizon family, not vintage ones. Our FAQ on creating and assigning a custom page template covers the cases where the template doesn't show up.

Add the tag check in a Custom Liquid section

Key takeaway

Open the new template in the theme editor, click Add section in the Template group and choose Custom Liquid. Shopify's Help lists custom Liquid among the sections a template area can hold; if Liquid is new to you, the check below is all you need to paste.

If your theme has no Custom Liquid section in the Template group, the check below goes into a section file through Edit code, and Shopify lets you edit theme code only after you've purchased the theme.

The check uses three documented pieces.

  • The customer object is nil when the visitor isn't signed in, and its tags field is a list of the customer's tags.
  • The contains operator checks for a string within that list.
  • And routes.account_login_url is the sign-in URL, which redirects to customer accounts when they are enabled.
{% if customer and customer.tags contains 'wholesale' %}
  <div class="page-width">
    <h2>Wholesale price list</h2>
    <p>Orders of 10+ units: 30% off the retail price.</p>
  </div>
{% else %}
  <div class="page-width">
    <p>This price list is for approved wholesale customers. <a href="{{ routes.account_login_url }}">Sign in</a> with your wholesale account to see it.</p>
  </div>
{% endif %}

The price list inside the first branch is sample text; replace it with your protected content and change wholesale to your tag. Keep the page's own body to a short teaser, because the check guards only what sits inside this section.

We ran this exact code: see our test for what we could and could not check. Test the tagged branch yourself with a customer whose inbox you can open.

In Shopify adminOpen in your store
  1. Online Store
  2. Edit theme
Paste the check into the Liquid code field of a Custom Liquid section, shown on Dawn in a dev store.

What a Template Lock Does Not Cover

Key takeaway

A template lock is honest about one thing only: what its own section prints. Keep three things in mind.

  • Other templates. Shopify documents a view URL parameter that renders a page with an alternate template. Your check lives in one template, and the page can be requested with another, where the page's content is not behind your check.
  • Theme updates. Shopify says changes made in the theme editor, including sections and new templates, are copied to the updated theme, but its code-editing page warns that if you edited theme files and the changes are incompatible, “all your code changes are removed in the updated copy.” Keep a duplicate of the theme, and open the page signed out after every update or theme switch.
  • Shopify's own preference. The Help Center advises editing theme files only if you can't make the change with a Shopify app or the theme editor, so use the Custom Liquid section rather than Edit code when your theme offers it. If nobody on your team will maintain the check, choose an app.

The practical rule: keep the protected text out of the page body. Put it inside the first branch of the Custom Liquid check, and let the body say only what the page is for. We tested what the page body shows: see our test.

How Do You Keep a Locked Page Out of Google?

Key takeaway

Locking a page and keeping it out of search are two separate settings. Shopify generates a default robots.txt, but Google is plain about what such a file can and can't do:

This is used mainly to avoid overloading your site with requests; it is not a mechanism for keeping a web page out of Google. To keep a web page out of Google, block indexing with noindex or password-protect the page.
Google Search Central — Introduction to robots.txt ·

Shopify gives you a per-page switch. Add a custom metafield of seo.hidden to the page and set its value to 1; Shopify says that hides the page from sitemaps, search engines and your online store search. Create the definition under Settings > Metafields and metaobjects > Pages, with the Integer type, then set the value on the page.

If the admin says the namespace and key are already taken, an app is already using seo.hidden and you can't change it in the admin. We tested the noindex side of seo.hidden: see our test.

In Shopify adminOpen in your store
  1. Online Store
  2. Pages
Set the seo.hidden field to 1; Hide from search is the name we gave it, cut short here, shown in a dev store.

The other route Shopify documents is a noindex tag in the <head> of your theme's theme.liquid file, matched by the page handle. Replace the placeholder with your page's handle, wholesale-prices in the example:

{% if handle contains 'page-handle-you-want-to-exclude' %}
<meta name="robots" content="noindex">
{% endif %}

A whole store in private mode is a different case, with its own answer: see what private mode hides from Google.

Our own test· November 6, 2026

What Our Test Showed

Key takeaway

We ran this exact check in a development store on Dawn, using the customer accounts sign-in; we did not test legacy customer accounts.

What we did, what came back and what it means for you
What we didWhat came backWhat it means for you
Opened the locked page signed outThe title, the page body and the fallback with its Sign in link; no protected blockA template based on Default page keeps the Page section, so the body isn't protected
Added ?view=contact or a made-up suffix to the URLThe Custom Liquid section disappeared; the page body still showedKeep the protected text in the section, never in the body
Clicked Sign in in the fallbackIt opened the customer accounts sign-in page, with Show sign-in links turned off; we could not finish a sign-inTest a real sign-in if Show sign-in links is off: the Help Center says customers can't sign in after you hide those links
Ran contains on a test list we built in Liquid, Wholesale against wholesale; typed Wholesale on a customer tagged wholesale in the adminNo match in Liquid; the admin offered the existing tagWrite the tag in the code in the admin's letter case
Set seo.hidden to 1 on the page, as an Integer metafieldThe page's HTML carried a robots meta tag reading noindex,nofollow, absent before; the page wasn't in the sitemap, but the sitemap's ID range ended before this new page, so it may not have been refreshed yetCheck your own sitemap once it updates
Previewed the template in the theme editorThe customer object was nil, so the fallback showedIn our run the preview couldn't reach the tagged branch, so test it on the storefront
Changed the hidden tag field in Dawn's footer signup form and clicked submithCaptcha held the submission from our automated browser, so no customer was createdWe can't say whether a changed tag reaches a customer profile; use a tag that is hard to guess
Storefront page titled Wholesale prices
A signed-out visitor gets the title, the teaser and the Sign in fallback, shown on Dawn in a dev store.

We could not sign in as a customer, tagged or untagged, because sign-in sends a one-time code to an inbox our test customers don't have, and we could not check whether sign-in returns the customer to the page. Horizon's theme code also has a Custom Liquid section and prints the page body in its Page section, but we did not run the test there.

Checklist: Lock One Page Step by Step

Key takeaway

The order matters in three places. Create the template in the theme that is live, or the page won't list it. Move the protected text into the section before you assign the template, so the locked page never shows it in its body. And set seo.hidden before you assign the template, so the seo.hidden setting is in place before the lock goes on.

Lock one page to tagged customersTick each step off as you go. Your progress stays in this browser, so you can come back between sessions.

Lock one page to tagged customers

Tick each step off as you go. Your progress stays in this browser, so you can come back between sessions.

0 of 8 done
  1. Keep a backup copy before you change the theme, so you can discard the changes and start again.

  2. Add one tag, such as wholesale, to every approved customer profile in Customers.

  3. In the live theme's editor, create a page template named after the page and based on Default page.

  4. Add a Custom Liquid section to the template's Template group and paste the check into its Liquid code field.

  5. Put the content only approved customers should see inside the check, and leave the page body as a teaser.

  6. Add the seo.hidden metafield to the page and set it to 1.

  7. Open the page in Online Store › Pages, pick the new template and save.

  8. Open the page signed out, signed in without the tag and signed in with a tagged customer account, then once more with ?view=contact.

When Is an App the Better Lock?

Key takeaway

The template route checks one thing: a signed-in customer with a tag. An app earns its place when you need a shared password, a secret link, rules across many pages and products, or simply no code to look after.

The cards below are the five listings we read. They are a snapshot of what we found, not the whole App Store.

Five apps whose listings describe locking pages

∞ Password Page + Lock Pagesby Sentalis
Password, tag or login locks

Locks any page by customer tag, customer login or password, according to its listing.

Plans
Free and paid plans
Free lists protection for 1 product; Essential lists page protection; Pro lists customer tag and login locks. Paid plans list a 3-day free trial.
Rating
5.0 from 16 reviews
LockPro: Password Protect Lockby Productive Passengers
Wholesale and B2B

Password-protects pages, locks products and collections and hides prices for wholesale and B2B stores, according to its listing.

Plans
Free and paid plans
Free lists 1 product lock or 1 entire store lock; Basic lists page hiding and secret link locks. Paid plans list a 7-day free trial.
Rating
4.9 from 50 reviews
Passwordifyby Creatix
Pages and blog posts

Locks access to any product, collection, page or blog post, according to its listing.

Plans
Paid plans
A free trial is listed.
Rating
2.7 from 10 reviews
MagicPass Wholesaleby Impress
Passwords per page

Adds a password to individual pages, collections or blogs instead of the entire store, according to its listing.

Plans
Paid plans
A free trial is listed.
Rating
2.5 from 32 reviews
Locksmithby Lightward
Many access conditions

Locks pages, products, collections, blogs, prices or the whole store, and lets in visitors by tags, sign-in, passwords, secret links, location and more, according to its listing.

Plans
Paid plans
A free trial is listed.
Rating
4.7 from 307 reviews

Source: each app's Shopify App Store listing, read November 6, 2026. Ratings move; prices are described in words because the listings showed location-based estimates. We did not install or test these apps.

Page Lock Not Working?

Key takeaway

Most failures come from the page never reaching your section, or from content sitting outside it. Match what you see to a row:

Symptom, cause and check
What you seeLikely causeWhat to check
Everyone sees the page without the fallback textThe page still uses its default template, so your section never rendersOnline Store › Pages › the page: the Template list must show your new template
Your new template is missing from the page's listYou created it in a theme that isn't liveThe list shows only templates from your current live theme; create it there
The protected text shows above the fallbackIt sits in the page body, outside the Liquid checkMove it into the Custom Liquid section and leave a teaser in the body
A tagged customer still gets the fallbackThe tag in your code doesn't match the tag in the adminCompare both letter by letter, including upper and lower case

A page with no custom template assigned returns nil for its template suffix in Liquid, which is a quick way for a developer to confirm the first row.

The Bottom Line

Key takeaway

The template route asks for one tag, one template and a few lines of Liquid, and it costs no app fee. What it asks in return is care: content outside the section isn't protected, and theme changes deserve a retest.

Lock the page with a tag, not with a sign-in. Tag your approved customers, give the page its own template, put the protected text only inside the Custom Liquid check, and confirm it with a tagged customer account. Don't rely on it for anything confidential. If your visitors have no accounts, or nobody will maintain the code, pick an app instead.
Your Next Step by Stage
Whole store still privateSee what you can change on the password page visitors meet while the store stays closed.Customize the password page
Selling to wholesale buyersRead how Shopify's B2B tools handle company accounts and wholesale pricing beyond one locked page.Shopify B2B wholesale guide
If the lock is in your theme codeDescribe the page and get a time estimate before work starts, then pay $28 an hour for the theme work.See Shopify development

Want the Page Lock Built Into Your Theme?

A Shopify developer builds the page template and the tag check in your theme, checks it signed out and shows you how to test it with a tagged customer account, at $28 an hour with an estimate before work starts. Tagging customers and app setup stay with you.

See Shopify development

Frequently Asked Questions

Yes, for approved customers. Give the page its own template, add a Custom Liquid section, show the content only when a signed-in customer carries a tag such as wholesale, and test that with a tagged account. Shopify's built-in password, private mode, covers the whole store. For a shared password or a secret link instead, the page-lock apps we read describe that.
Shopify's Help Center calls it private mode: all online store pages are hidden from visitors and search engines, and a customizable landing page with a password shows instead. The mobile steps in the same article say Password protection, so you will see both names. Either way, it covers the whole store, not a single page.
No. A page has two visibility states, Visible and Hidden, and Hidden hides the page from your online store with no audience setting. It cannot let approved customers in while keeping others out. For that, keep the page Visible, give it its own template, and put the content behind a customer tag check in a Custom Liquid section.
Because signing in proves very little. With customer accounts, Shopify creates a new customer profile automatically when someone signs in with an email it doesn't know. A check that only asks whether a customer is signed in lets that person through. A tag you add by hand in Customers is the approval the check should read.
No. Shopify says the Starter plan doesn't support creating any new templates, and if you need other pages it tells you to upgrade to a higher plan such as Basic, Grow, Advanced, or Shopify Plus. Vintage themes can't create templates from the theme editor either; on a vintage theme, confirm that a page-lock app supports it before you pay for it.
Not if you built it in the theme editor: Shopify says customizations made there, including added sections and new templates, are copied to the updated theme. In a theme file, Shopify warns, incompatible edits remove all your code changes from the updated copy. Either way, after any theme update or switch, open the locked page signed out and confirm the fallback still shows.
They can see anything outside the check. Shopify documents a view URL parameter that renders a page with another template, and the page body sits outside your section, so keep protected text in that section. Some themes can also add tags through footer signup forms; our test section says what we could not confirm about that, so use a tag that is hard to guess.
The Liquid check controls what the page shows, not whether search engines list its URL. Add a custom seo.hidden metafield to the page and set it to 1; Shopify says this hides it from sitemaps, search engines and your online store search. Google adds that robots.txt is not a way to keep a page out of its results.
On November 6, 2026 we read five App Store listings that describe locking pages: ∞ Password Page + Lock Pages, LockPro, Passwordify, MagicPass Wholesale and Locksmith. They differ in what they check, from customer tags and sign-in to passwords and secret links. Treat this as a snapshot of what we read, not the whole App Store, and check each listing first.
Yes, at the store level, if you run a dedicated B2B store; Shopify B2B isn't available on the Starter or Retail plans. Private mode settings in Online Store › Preferences include restricting access to B2B customers only. That setting applies to every page of the online store, so it suits a wholesale-only store rather than one wholesale page inside a public store.
Shopify has deprecated legacy customer accounts and said a final sunset date would be announced later in 2026. After you upgrade, Shopify redirects legacy URLs to new customer accounts. Building the sign-in link with routes.account_login_url keeps it pointing at whichever sign-in page your store uses. We tested the check on new customer accounts only, as our test section says.
Not if your theme offers a Custom Liquid section in the Template group of the theme editor; the check is pasted into that section's Liquid code field. If it doesn't, the check goes into a section file through Edit code, which Shopify allows only on a theme you have purchased. Shopify advises editing code only when an app or the editor can't do the job.
About This Article
Shopify Developer & Editorial Director
9+ years with Shopify since 2017

Front-end developer specializing in Shopify since 2017. Experienced in building custom Liquid themes, optimizing storefront performance, and integrating third-party apps. Directs the editorial process behind Ecom Store Pro: sets its topics and the rules every AI-written page must pass before publication.

Some links in this article are affiliate links. If you sign up for a Shopify store through these links, we may earn a commission at no extra cost to you. Read our full advertising policy.

Continue Learning

What to Read Next

Stay updated

Get notified about new articles

Subscribe to receive updates when we publish new Shopify guides and insights.