Skip to main content
20% off 3 months · code LAUNCH20 · until 31 October

How do I add a waitlist to a Replit app?

19 September 2026 · by Nordva, who make Nordva Launch

The short answer

Copy your publishable key from Nordva Launch, paste the prompt below into Replit Agent's chat with the key at the end, try the form in the preview, and republish. The form needs no database, server route or secret, so it also works on a static deployment. Each signup keeps the site and post it came from and gets a receipt email.

The prompt for Replit
Add a waitlist signup form to the home page, using Nordva Launch. Don't add a database table, a server route or a secret for it.

1. Where the form should appear (the hero of the home page), render this element, with my key from the end of this message in place of MY_KEY:
   <nordva-waitlist data-key="MY_KEY" data-button="Join the waitlist"></nordva-waitlist>
2. On that page, load https://cdn.nordva.dev/v1/waitlist.js once, after the element is on the page (in a React component, append a script tag in an effect). Don't add this script to the page head.
3. If TypeScript complains about the nordva-waitlist element, declare it as an intrinsic element. Don't replace it with a form of your own.
4. My key starts with nv_pub_live_. It is a publishable key, made for browser code: it can add signups but can't read them. Put it in the frontend code as it is, not in Secrets. Never put a key that starts with nv_live_sk_ in frontend code.
5. Don't change anything else. Tell me which files you changed.

My publishable key:

Why it works on a static deployment

Replit publishes an app in one of several ways. A Static deployment serves files and runs no backend, which makes it the simplest choice for a landing page. It also means no server code runs, and Replit’s docs say Secrets are available for every deployment type except Static.

A form that saves emails in your own database needs a server. This one doesn’t: the browser sends the signup straight to Launch with a publishable key, which is made to be public. So a coming-soon page can stay static, cost nothing to run, and still collect a proper list.

Step by step

  1. Get your publishable key. In Nordva Launch, open Developer → API keys. Every new account gets one publishable key, shown once when the account is made. If you didn’t keep it, revoke it and click New publishable key, then copy it straight away. On the Free plan you can have one publishable key per project at a time.

  2. Paste the prompt. Copy the prompt above into Replit Agent’s chat and paste your key at the end.

  3. Try it in the preview. Join with your own email. The signup appears under Waitlist in Launch, and a receipt arrives in your inbox. Joining twice with the same email doesn’t add you twice.

  4. Republish. The live app keeps its old version until you click Republish.

Why the key stays out of Secrets

Replit’s Secrets are read by server code (process.env in JavaScript), and they’re the right place for anything that must stay hidden. Frontend code in the browser can’t read them. A publishable key doesn’t need hiding: anyone can see it in your page, and all it lets them do is add a signup, a feedback message or a changelog subscriber. It can’t read, export or delete your list.

Your secret key, starting with nv_live_sk_, can read everything. If your app ever needs it, it goes in Secrets and is used only by server code.

What each signup records

The referring site’s hostname, the UTM tags on the link (utm_source, utm_medium, utm_campaign) and the page the person landed on. The form sets no cookie and stores nothing in the browser. Post a tagged link, such as ?utm_source=reddit&utm_campaign=launch, and each signup on Launch’s Waitlist page shows the post it came from.

With Launch’s analytics script on the same site, a signup carries the visitor’s first visit instead of the current page, so someone who read your post a week ago still counts for it.

After that

Everyone who joins gets a receipt with an unsubscribe link, on every plan. Indie adds double opt-in, invites in batches, CSV export, and one announcement on launch day with a report of how many of the people you told went on to pay.

Free holds 100 signups per project and Indie 2,500. Free has no time limit and needs no card.

When Launch is the wrong tool

If your Replit app already has accounts and you want everyone who joins to get one, add the source to your own sign-up instead. Launch's waitlist is for collecting interest before there's anything to sign in to.

Replit's own docs, checked 19 September 2026

Builders change often. If a step no longer matches what you see, tell us and we will fix the page.

Also asked as
  • How do I collect emails on a Replit site?
  • Replit Agent waitlist landing page
  • Can a static Replit deployment save form submissions?
Read next
Start free Free plan, no time limit · No card