Shopify stores usually launch behind a password page, not a blank one. The theme's layout/theme.liquid file controls every page on your storefront except that one. Paste your waitlist script tag there and test it on the live URL, and you will not see a form. Shopify renders the password page through a separate layout file, layout/password.liquid, with its own head section that never loads theme.liquid at all.
Get the file right and a waitlist with referral tracking takes about five minutes to set up.
Add the OperatorStack script tag to both layout/theme.liquid and layout/password.liquid (or the theme's Password page section in Online Store 2.0). The password layout is separate from your main theme file, so a script pasted only in theme.liquid never reaches visitors on a password-protected storefront.
Why the Password Page Breaks Normal Script Tags
Every Shopify plan lets you password-protect a store before launch, under Online Store > Preferences > Password protection. When it's on, visitors who do not know the password see a dedicated password page instead of your storefront.
That password page is not just theme.liquid with a lock screen bolted on. Shopify routes it through layout/password.liquid if your theme has one, or a Shopify-managed default if it does not. Either way, code you add to theme.liquid, the file every other page uses, does not run there. This is the one Shopify-specific quirk that trips up every other script-tag integration guide, because most assume a single layout file controls the whole site.
What You Need Before You Start
- A Shopify store, any plan. No app installation and no Shopify Plus requirement.
- Theme code access. Every plan includes this under Online Store > Themes > Edit code.
- An OperatorStack account. Free to start. You need your project key (the
pk_value from your embed snippet).
Step-by-Step Setup
Create an OperatorStack project. In your OperatorStack dashboard, create a new project and enter your .myshopify.com domain (or your custom domain if you already have one connected) so CORS is configured for your storefront.
Copy your embed snippet. From the project settings page, copy your script tag:
<script src="https://operatorstack.dev/os.js" data-project="pk_abc123"></script>
Open your theme code. In the Shopify admin, go to Online Store > Themes, find your published theme, click the ... menu, then Edit code.
Add the script and widget to layout/theme.liquid. Open layout/theme.liquid and paste the script tag just before </head>. Then add the widget div wherever you want the form to render on your live storefront, for example a dedicated templates/page.waitlist.liquid template or a section on your homepage:
<div data-os-widget="waitlist"></div>
This covers every page except the password page.
If your store is password-protected right now, stop here and check the password page separately. layout/theme.liquid does not run while password protection is on, so this step alone will not show a form to pre-launch visitors.
Add the same code to the password page. Check your theme's file list for layout/password.liquid. If it exists, open it and paste the same script tag before </head> and the widget div in the body, next to the existing password-page markup.
If there is no layout/password.liquid file, your theme uses Online Store 2.0's editable password page instead. Go to Online Store > Themes > Customize, switch the page selector (top of the editor) from Home to Password, and add a Custom Liquid section if your theme includes one. Paste both lines into that section's code field.
Preview and test before removing password protection. Shopify gives you a preview link under Online Store > Preferences that bypasses the password for you while keeping it on for everyone else. Open that link, submit a test signup, and confirm it appears in your OperatorStack dashboard under Contacts.
What Your Visitors See
After someone submits the form, OperatorStack shows a confirmation and their unique referral link, with share buttons for Twitter, LinkedIn, WhatsApp, and email. If a friend signs up through that link, OperatorStack credits the referral automatically and it shows up on your leaderboard.
The same script also collects cookie-free analytics in the background: page views, referral sources, and unique visitors, on both the password page and the live storefront once you launch. No cookie banner, no separate analytics install.
Keep the widget on your password page even after you plan to remove protection. Merchants often re-enable password protection for sales prep, theme edits, or a relaunch. If the code is already in place, turning protection back on doesn't cost you a single signup.
Launch Day: Removing Password Protection
When you're ready to open the store, go to Online Store > Preferences and turn password protection off. Nothing about your OperatorStack setup needs to change. The widget in theme.liquid keeps collecting signups and referral shares exactly as it did on the password page, and every contact captured before launch is already in your Audience tab, ready to email the moment you go live.
Frequently Asked Questions
Why doesn't my script tag show up on the Shopify password page?
Shopify renders password-protected storefronts through layout/password.liquid, not layout/theme.liquid. A script tag added only to theme.liquid never loads on the password page, since that layout is a separate file with its own head section.
Do I need a Shopify Plus plan to add a waitlist?
No. Password protection and the password page template are available on every Shopify plan, including Basic. You do need edit access to theme code, which every plan provides through Online Store > Themes > Edit code.
Will the waitlist still work after I remove password protection?
Yes. If you also add the script tag to theme.liquid (recommended), the same waitlist widget and analytics keep running on your live storefront after launch, and referral links keep crediting signups from before launch.
Can I still capture emails if my theme has no custom password template?
Only if your theme supports the Online Store 2.0 password page editor. Check Online Store > Themes > Customize, then switch the page selector to Password. If a Custom Liquid section is available there, you can paste the embed without touching theme code.