How to Add a Waitlist to Squarespace (Complete 2026 Guide)

TL;DR: Squarespace has no native waitlist with referrals or queue positions. To add one, paste LaunchList's two-line snippet into a Squarespace Code block (Fluid Engine, classic sections or 7.0); it takes about ten minutes. Custom code needs a Squarespace Business plan or above, and on a Personal plan you link a button to your LaunchList hosted launch page instead. You can also open the form as a popup (including on exit intent, a timer or scroll), add live counter and leaderboard widgets, and track signups in GA4 or a Meta Pixel. An embed keeps the SEO on your Squarespace domain; free hosted pages on launchlist.page are never indexed.

Squarespace is one of the most popular website builders for product launches, especially for creators, D2C brands and consumer apps that want a beautiful design without hiring a developer. But if you've tried to add a real pre-launch waitlist to a Squarespace site, you've probably hit these walls:

  • Squarespace's built-in form doesn't have a referral program
  • The built-in form doesn't track positions
  • Squarespace's newsletter block doesn't have viral mechanics
  • Squarespace's marketplace plugins for waitlists are sparse

The practical answer: embed a form from pre-launch waitlist software on your Squarespace page. You get referral links, a leaderboard, fake-signup protection and email, while Squarespace stays your design tool.

This guide walks through the exact steps for every Squarespace editor.

What you get

When you add LaunchList to Squarespace, your waitlist includes:

  • A personal referral link for every signup, and a live leaderboard
  • Live queue position ("#142 in line") on each signup's own status page
  • A trust verdict on every signup (Verified, Valid, Unknown, Risky or Fake), disposable-address detection, rate limiting and optional CAPTCHA
  • Email verification, with referral credit that only lands once the friend confirms
  • Email broadcasts (the Collect plan and up) and automations (the Launch and Grow plans) without a separate email tool
  • Signed webhooks and a REST API, if you want signups in another system
  • A form that follows light and dark mode and works on mobile

Before you start: which Squarespace plan you need

Squarespace's Code block and Code Injection require a Business plan or above. Custom code isn't available on Personal.

On a Personal plan, use your LaunchList hosted launch page: every project has one at a public address, built in a visual editor, and you can link any Squarespace button to it. It works on every Squarespace plan and needs no code.

Every way to put a LaunchList waitlist on Squarespace

There are several ways to get a signup from a Squarespace page into LaunchList. They all run the same pipeline once the signup lands: deduplication, referral credit, Contact Trust scoring, the verification email, webhooks and automations happen whichever one you pick. Choose by what you already have.

You want Method What goes into Squarespace
The quickest working form Inline embed One <div> plus the loader script, in a Code block
Your own Squarespace form design, run by LaunchList Enhance your own form One data-launchlist-enhance attribute on your form, plus the loader
A form that works with no JavaScript at all Plain HTML form A native <form> posting to LaunchList
A button that opens the form in an overlay Popup One data-launchlist-popup attribute on any element
A popup that opens on exit intent, a timer or scroll depth Popup auto-trigger A hand-written data-trigger element (see below)
Live social proof next to the form Widgets One <div> each: counter, leaderboard, milestone, countdown, updates feed
No code at all Hosted launch page A link or button pointing at your LaunchList page
Signups created by your own backend REST API Nothing; your server calls api.getlaunchlist.com/v1

The loader is the same for every method that uses it, and it goes on the page once, however many forms, popups and widgets you add:

<script src="https://embed.getlaunchlist.com/v1/embed.js" async></script>

All of this works on every LaunchList plan, the Free plan included.

Step-by-step setup

Step 1: Create your project and copy the snippet

  1. Sign up for LaunchList. The Free plan covers 100 contacts, with no card.
  2. Create a project named after your product. It comes with a waitlist form and a hosted launch page.
  3. Optionally, open Audience → Referrals & rewards to set how many points a referral is worth, or add reward tiers (rewards are on the Collect plan and up).
  4. Open Embed & API → Your website, choose Squarespace under What is your site built with?, pick your form if you have more than one, and copy the Inline snippet.

The snippet is two lines:

<!-- frm_8Kd2Qm4Rp9 is an example ID; use your own from Embed & API → Your website -->
<div data-launchlist-form="frm_8Kd2Qm4Rp9"></div>
<script src="https://embed.getlaunchlist.com/v1/embed.js" async></script>

Step 2a: Add the form (Squarespace 7.1 / Fluid Engine)

  1. Edit the page where you want the waitlist.
  2. Click + to add a block and choose Code.
  3. Set the block's mode to HTML and leave "Display Source" unchecked.
  4. Paste the snippet.
  5. Click Apply, then Save.

You can drag and resize the block within Fluid Engine. Give it enough width: Code blocks inherit their column width, and a narrow column makes the form cramped.

Step 2b: Add the form (Squarespace 7.1 classic sections)

  1. Edit the page.
  2. Click Add Block within a section.
  3. Choose Code, set it to HTML, and paste the snippet.
  4. Save.

Step 2c: Add the form (Squarespace 7.0)

  1. Edit the page.
  2. Add a new Code block.
  3. Set it to HTML and paste the snippet.
  4. Save.

Expect a placeholder in the editor. Squarespace doesn't run embedded scripts inside the editor, so you'll see a gray box saying the code isn't executed. View the live site or the preview to see the form.

Step 3 (optional): Load the script once, site-wide

If you want forms, popups or widgets on several pages, load the runtime once instead of repeating it in every Code block. Go to Settings → Advanced → Code Injection and paste into Header:

<script src="https://embed.getlaunchlist.com/v1/embed.js" async></script>

After that, every Code block only needs the target:

<div data-launchlist-form="frm_8Kd2Qm4Rp9"></div>

A script in both Code Injection and a Code block is harmless.

Step 4: Match it to your Squarespace theme

The form renders inside a shadow root, so your Squarespace CSS can't reach it, and a theme change can never break it. Style it in LaunchList instead, under Project settings → Branding:

  • Colors: match your Squarespace accent color
  • Font: pick the font your theme uses
  • Corner radius and button style: match your Squarespace buttons

Every form, widget and page in the project follows, with nothing to re-paste. Forms also take light or dark from the page they sit on.

Step 5: Test the flow

  1. Open your live Squarespace page in a private window.
  2. Sign up with an address you can check (or use LaunchList's test mode so practice signups stay out of your list).
  3. Confirm the verification email. Double opt-in is on by default for waitlist forms.
  4. On your status page, copy your referral link and sign up a second address through it.
  5. Once that second address confirms, check that your referral count and position moved.

Building a dedicated Squarespace waitlist landing page

For the most signups, build a single-purpose waitlist landing page rather than just a form on your homepage. A proven Squarespace structure:

Section 1: Hero

  • Headline (specific outcome, under 10 words)
  • Subhead (one sentence explaining who it's for)
  • Waitlist form (Code block)

Section 2: Social proof

  • Press logos or testimonial quotes
  • A live signup counter (only once the number helps you; see below)

Section 3: How it works

  • 3 icons + short explanations

Section 4: Referral incentive

  • "Move up the queue: invite friends, earn rewards"
  • A second form <div> to catch people who scrolled

Section 5: FAQ

  • Use Squarespace's Accordion block (7.1) for 5 or 6 common questions

Section 6: Final CTA

  • One more chance to sign up: a third form, or a Squarespace button with data-launchlist-popup that opens the form in an overlay

A live counter is one more Code block:

<div
    data-launchlist-widget="counter"
    data-project="acme"
    data-label="founders already in"
></div>

Replace acme with your own project handle; the exact snippet is in the Widgets section of Embed & API → Your website. It reads your real signup total, styles itself from your Branding settings and never shows anyone's details. Widgets are on every plan, Free included.

See 15 Waitlist Landing Page Examples That Convert for inspiration.

Styling tips for Squarespace

Give the form room

Squarespace Code blocks inherit the width of their column. If the form looks cramped, move the block into a wider section or a full-width block rather than fighting it with CSS.

Match Squarespace typography

Set your brand font in LaunchList's Branding settings. If your brand font isn't the default, the form loads it from Google Fonts, so it matches your theme without any CSS on the Squarespace side.

Want your own Squarespace styling instead?

The embedded LaunchList form is the simplest route on Squarespace. If you need a hand-built look, a Code block can hold your own HTML form with the data-launchlist-enhance="frm_..." attribute: your markup and CSS stay yours, and LaunchList handles submission, validation and referral attribution.

Squarespace Commerce users: pre-launch product waitlist

If you're using Squarespace Commerce to launch a new product (a D2C brand, a new drop, an exclusive collection), add the waitlist to your product page before the product goes live:

  1. Create a placeholder product with a "Coming Soon" title
  2. Hide the Add-to-Cart button
  3. Add the LaunchList Code block where the cart button would be
  4. At launch, swap it for a real product

This works especially well for limited drops. To tell collections apart, give each its own LaunchList form, or add a hidden field to one form; they all feed one deduplicated audience you can segment and email.

Add a popup signup form, and open it on exit intent, a timer or scroll

Any element can open your LaunchList form in an overlay. Put this in a Code block, or add the attribute to a Squarespace button you already have:

<button type="button" data-launchlist-popup="frm_8Kd2Qm4Rp9">
    Join the waitlist
</button>

It's your own button, so style it however you like. Add data-variant="slideover" with data-position="right" for a side panel instead of a centered modal. From your own script you can also open it with LaunchList.popup('frm_8Kd2Qm4Rp9').open();.

The runtime can open the popup on its own, too. Add a hidden element carrying a data-trigger:

<!-- Exit intent: opens when the pointer leaves through the top of the window (desktop only) -->
<div hidden data-launchlist-popup="frm_8Kd2Qm4Rp9" data-trigger="exit"></div>

<!-- Timer: opens 10 seconds after the page loads (default 5) -->
<div hidden data-launchlist-popup="frm_8Kd2Qm4Rp9" data-trigger="time" data-delay="10"></div>

<!-- Scroll: opens once 60% of the page has been scrolled (default 50), at most every 14 days -->
<div hidden data-launchlist-popup="frm_8Kd2Qm4Rp9" data-trigger="scroll" data-scroll="60" data-cap="14"></div>
  • Frequency cap. data-cap sets how many days must pass before the same visitor sees an auto-opened popup again. The default is 7.
  • Never after a signup. Once a visitor has joined through the popup, it doesn't auto-open for them again.
  • Exit intent is desktop only. Phones have no pointer leaving the window, so pair it with a timer or scroll trigger if mobile traffic matters.
  • These are hand-written attributes. The snippet generator in Embed & API → Your website gives you click-to-open popup buttons; the data-trigger, data-delay, data-scroll and data-cap attributes are typed by you, exactly as above. The loader still has to be on the page.

Use one auto-trigger per page. A popup that fights the visitor for attention costs more signups than it wins.

Add live social proof: counter, leaderboard, milestone, countdown

Widgets put live numbers from your waitlist on your Squarespace page. Each is one <div> in a Code block; copy the exact snippet from the Widgets section of Embed & API → Your website, with your own project handle in place of acme.

<!-- Live signup total -->
<div data-launchlist-widget="counter" data-project="acme" data-label="founders already in"></div>

<!-- Top referrers -->
<div data-launchlist-widget="leaderboard" data-project="acme" data-title="Top referrers"></div>

<!-- Progress toward a community goal -->
<div data-launchlist-widget="milestone" data-project="acme" data-goal="1000" data-reward="Early access for everyone"></div>

<!-- Time until launch (needs a launch date in Project settings, General) -->
<div data-launchlist-widget="countdown" data-project="acme" data-heading="We open in"></div>

<!-- Your published updates, as a "What's new" feed -->
<div data-launchlist-updates="acme" data-heading="What's new" data-count="5"></div>

Widgets are on every plan, Free included. They're aggregate only: no widget ever shows an email address or phone number, a leaderboard row shows the name your form collected or a masked identifier, and a slice of fewer than ten people shows no number at all. Like the form, they render in a shadow root and take their look from Project settings → Branding.

One rule: a counter reading "7 people have joined" sells against you. Leave it off until the total helps, or use the milestone widget, which frames a small number as progress toward a goal.

Embed on Squarespace, or use the hosted page? The SEO answer

Every LaunchList project also comes with a hosted launch page, built in a visual editor with 19 block types, 8 style presets and 6 starting templates, and AI can write the first draft from one sentence about your product. So which should carry your waitlist?

  • Embed on Squarespace when the waitlist belongs on a page you already rank or plan to rank. The page is yours and on your domain, so it's indexed exactly as your Squarespace site is, and the signups it earns build your domain, not ours.
  • Use the hosted page when you don't want to build a page at all, or need a dedicated page for an ad campaign. It's server-rendered, so search engines get real HTML on the first request.

The honest indexing rule: a hosted page on its your-slug.launchlist.page address is never indexed by search engines, on any plan. It's live and shareable, but it asks search engines not to index it. To have a hosted page indexed, connect your own domain: one custom domain on the Collect plan, three on the Launch plan, unlimited on the Grow plan. You add one DNS record under Embed & API → Hosted page → Custom domain, and HTTPS is issued and renewed automatically. The launchlist.page address keeps working alongside it. The "Powered by LaunchList" badge comes off on the Launch and Grow plans.

You can use both: a hosted page for a campaign and the embed on your Squarespace site. Deduplication is per project, so the same person arriving through both is one contact.

Tracking waitlist signups in GA4, Meta Pixel and your other analytics

On your Squarespace site, your own analytics already sees the page, because the form sits on your page. To count signups as conversions:

  • Send signups to your own thank-you page. In the form's settings, set what happens after submit to Your own URL, point it at a Squarespace page, and fire your conversion event there. UTM parameters pass through, so the conversion is still attributed to the right campaign.
  • Record them server-side with webhooks. LaunchList sends signed webhooks for 27 event types, including signup.created, contact.verified and referral.made, signed with HMAC-SHA256 and retried 7 times over about two and a half days, with a delivery log under Embed & API → Developers → Webhooks. There's no native Zapier or Make app; point a webhook at "Webhooks by Zapier", Make or n8n and route signups anywhere from there.

On the hosted page, add your own tags under Project settings → Privacy & spam: Google Analytics 4, Google Tag Manager, Google Ads, Meta Pixel, TikTok Pixel, LinkedIn Insight, X Pixel, Plausible and PostHog. They load on the hosted page and the status page, with an optional consent banner that links to your privacy policy. Custom tracking tags are on every plan.

Inside LaunchList, Analytics shows signups over time, organic versus referred, the hosted page's visit-to-signup rate and the share that confirmed, each compared with the period before. The breakdown of where signups come from (channels, landing pages and referring sites) is on the Grow plan. LaunchList doesn't track email opens or clicks; it reports delivered, bounced, unsubscribed and spam complaints.

What happens after someone signs up

The form is the start. Here's what LaunchList does with each signup, with no extra setup:

  • A status page of their own with their position, their referral link, one-tap share buttons and their referral count. Every email you send links back to it, so "where's my link?" never reaches your inbox.
  • Double opt-in, per form. It's on by default for Waitlist and Marketing forms and off for Survey forms; switch it under the form's Settings → Verification.
  • A Contact Trust verdict on every signup: Verified, Valid, Unknown, Risky or Fake. A contact is only marked Fake when two independent signals agree, and suspicious signups are held for review rather than deleted, outside your list and your bill until you approve or block them.
  • Referral credit only after the friend verifies. By default a referrer can earn at most 3 credited referrals from one IP address and 20 in an hour, and credit is taken back if a referred contact later turns out to be fake.
  • Rewards and points unlock automatically by referral count on the Collect plan and up, each with its own announcement email.
  • Email from the same place. Broadcasts on the Collect plan and up; branching automations, a custom sending domain and saved segments on the Launch and Grow plans; beta invites with personal codes on every plan (the Free plan covers your first 100).

Spam protection is on every plan. If a bot finds your form, raise the strictness or turn on CAPTCHA under Project settings → Privacy & spam, with your own Turnstile, reCAPTCHA or hCaptcha keys. Add your site's domain to the allowed hostnames in your CAPTCHA provider's account, or the challenge won't load.

For developers: the REST API, webhooks and MCP

If signups happen on your server rather than in a browser, skip the embed and post them directly:

curl https://api.getlaunchlist.com/v1/contacts \
  -H "Authorization: Bearer llk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "project": "prj_7Qk2mN4pR8", "email": "[email protected]" }'

One call returns the referral code, the live queue position and the trust verdict. The REST API has 53 operations, described by a public OpenAPI 3.1 spec at api.getlaunchlist.com/v1/openapi.json, and keys are created under Embed & API → Developers → API keys with 13 scopes.

The same workspace is open to AI agents through LaunchList's MCP server: 35 tools that Claude, ChatGPT, Cursor and other MCP clients can use to read your audience, draft broadcasts or edit your page draft. You connect over OAuth, approving one workspace on a consent screen, or with a scoped API key, under Embed & API → AI assistants. Agents can't delete contacts or publish pages, and a broadcast needs a separate confirmation step. The API, webhooks and MCP are on every plan, the Free plan included.

Troubleshooting

"This code block will not execute" in the editor

  • Expected. Squarespace never runs embeds in the editor. Check the live site or the preview.

Nothing renders on the live site

  • Confirm you're on a Business plan or above; Personal plans strip custom code.
  • Check that you saved the Code block, and that the form ID matches the one in LaunchList.
  • Check the browser console for errors.

The form is cramped

  • Code blocks inherit column width. Move it to a wider section or a full-width block.

The form shows twice

  • The form <div> is on the page twice; each renders its own form. Remove the duplicate. A script in both Code Injection and the block is harmless.

Verification emails go to spam

  • Ask the person to check spam and mark it not-spam. Their status page has a resend button, so they don't need you.
  • On the Launch and Grow plans, send from your own subdomain (three CNAME records under Project settings → Email), which looks like you rather than like a tool.

Frequently asked questions

How do I add a waitlist to Squarespace?

Add a Code block set to HTML, paste LaunchList's two-line snippet (a <div data-launchlist-form> and the loader script), and save. The form shows on the live site or preview; the editor shows a placeholder because Squarespace doesn't run scripts there.

Which Squarespace plan do I need for a waitlist form?

Code blocks and Code Injection need a Squarespace Business plan or above. On a Personal plan, link a button to your LaunchList hosted launch page, which needs no code.

Why does my Squarespace Code block say the code will not execute?

That's expected: Squarespace never runs embedded scripts inside the editor. View the live site or the preview and the form renders.

Can I add a popup waitlist form to Squarespace?

Yes. Any element with data-launchlist-popup and your form ID opens the form in an overlay. To open it on exit intent, a timer or scroll depth, add a hidden element with a hand-written data-trigger attribute; it shows at most once every 7 days by default and never after someone signs up.

Can I show a live signup counter on Squarespace?

Yes. The counter widget is one <div> in a Code block and shows your live signup total. Leaderboard, milestone and countdown widgets work the same way, on every LaunchList plan, and none of them show anyone's email or phone number.

Will my Squarespace waitlist be indexed by Google?

A form embedded on your Squarespace page is indexed like the rest of your Squarespace site. A LaunchList hosted page on a launchlist.page address is never indexed on any plan; connect your own domain on the Collect plan or higher to index it.

How do I track Squarespace waitlist signups with GA4 or a Meta Pixel?

Send signups to your own Squarespace thank-you page and fire the conversion there; UTM parameters pass through. If you use LaunchList's hosted page instead, add GA4, Meta Pixel and seven other providers under Project settings, Privacy & spam, with an optional consent banner.

Can I send emails to my Squarespace waitlist from my own domain?

Yes, on the Launch and Grow plans: connect a subdomain under Project settings, Email and add the three CNAME records shown. Broadcasts start on the Collect plan, and on the Free and Collect plans email sends from a shared LaunchList domain.


Launch your Squarespace waitlist today

You can have a referral waitlist live on your Squarespace site in about ten minutes. The Free plan covers 100 contacts with referral links, a live leaderboard, status pages, spam protection and a hosted launch page, with no card.

Start your waitlist free →