Build a Waitlist Page with Claude Code and Cloudflare (Free, ~30 Minutes)

By Jonah, Founder of FindClout — July 2026

Every "pre-launch" idea starts the same way: someone opens a waitlist tool, hits the pricing page, and gets quoted a monthly fee to collect email addresses into a list they already own. That's backwards. A waitlist page is one form, one database table, and one button. It should not cost you $49 a month, and honestly it shouldn't take you longer than a coffee break.

This is the exact build I run when a client or a friend needs a waitlist up before the design team even wakes up. Empty folder to a live URL capturing real emails into a real database, using Claude Code and Cloudflare's free tier. No code editor, no SaaS subscription, no engineer. If you haven't set up Claude Code yet, do that first — the install guide takes 20 minutes and everything below assumes you have the cc alias running.

What you're actually building

Three pieces, and Claude Code writes all three:

All three live on Cloudflare's free tier. As of 2026, Cloudflare Pages/Workers and D1 comfortably handle a waitlist's traffic — hundreds or thousands of signups — without you touching a credit card. Worth a glance at Cloudflare's current pricing page before a viral moment, but you're not going to accidentally get billed collecting emails.

Haven't set up the Cloudflare side yet?

Jonah's Guide to the Agentic Future is the free one-page PDF that gets your Cloudflare account, API token, and wrangler CLI wired up once — so every project after this one deploys in a single command.

Get the Free Guide (PDF) →

Step 1: Open an empty folder and describe the page

Make a new folder, right-click it, open a terminal there, type cc. You're staring at an empty project and a live agent. Don't overthink the first prompt — describe the outcome, not the implementation:

tell cc: "Build a waitlist landing page for a product called [Name].
Dark background, one clear headline, a short subhead, an email input
with a submit button, and a success state that says 'You're on the
list — #[number] in line.' Keep it to a single page, no dependencies
beyond plain HTML/CSS/JS. I'll tell you how to wire up the backend next."

Claude Code writes an index.html you can open locally and look at immediately. Iterate here in plain English — "make the headline bigger," "swap the accent color to X," "add a small trust line under the button" — the same way you'd give feedback to a designer. This is the fastest part of the whole build, and it's genuinely fun once you see how quickly it responds to notes.

Step 2: Connect Cloudflare

Now the part that makes it real instead of a static mockup. Tell Claude Code what you need, and let it drive the wrangler CLI (Cloudflare's command-line tool) for you:

tell cc: "I want to deploy this to Cloudflare and store signups in D1.
Walk me through logging into wrangler, then create a D1 database
called waitlist_db with a table for email signups: id, email (unique),
created_at, and a source column for tracking where the signup came from."

It will have you run wrangler login (opens a browser tab to authorize), then wrangler d1 create waitlist_db, then hand you the migration SQL and run it. This is precisely the pattern covered in more depth in the Claude Code + Cloudflare stack guide — once you've done it once, every future project reuses the same account and the same muscle memory.

Step 3: Wire the form to the database

This is the step that turns your page from decoration into infrastructure. Ask for it directly:

tell cc: "Add a Worker function at /api/signup that accepts a POST
with an email, validates it's a real email format, inserts it into
the waitlist_db D1 table, and returns success or a friendly 'already
signed up' message if the email already exists. Wire the form on the
page to call it and show the success state on a 200 response."

Claude Code writes the Worker, updates the frontend's fetch call, and — this is the part people don't expect from a terminal agent — actually runs it locally with wrangler dev so you can test the full loop before it's public. Submit a test email right there in your browser and watch it hit the local database.

Step 4: Deploy it

One command, and Claude Code runs it for you:

wrangler deploy

Or, if you built it as a Pages project rather than a standalone Worker, wrangler pages deploy. Either way you get back a live *.workers.dev or *.pages.dev URL in seconds. Point your own domain at it later — that's a five-minute DNS change, and Claude Code can walk you through that too if you ask.

Step 5: Verify it actually works

Don't take the green "deployed" message on faith. Go to the live URL, submit a real test signup, then check the database directly:

wrangler d1 execute waitlist_db --command="SELECT * FROM signups ORDER BY created_at DESC LIMIT 5"

If your row is there, you're done — genuinely done, not "done for a demo." This is a production waitlist collecting real emails into a database you own outright, with zero monthly fee and zero vendor lock-in.

When something breaks

Something will, probably a wrangler auth token expiring or a CORS error on your first fetch call. This is where the whole method pays for itself: copy the entire error message, paste it back into your cc session, and let the agent fix its own mistake. You don't need to understand D1's SQL dialect or how Workers handle CORS headers. You need to be willing to paste red text into a terminal and hit enter again. That's the entire debugging skill this whole approach runs on — the same brute-force loop covered in the vibe coding guide.

Worth adding once the base page works

Every one of these is a single follow-up prompt, not a new project. This compounding — describe one more thing, watch it appear — is exactly why growth people who pick up Claude Code for real use cases stop going back to no-code SaaS tools. The waitlist page you just built is also a template: the next internal tool, whether it's a marketing dashboard or a Telegram bot, reuses the same Cloudflare + D1 pattern.

Rather have me build the first one with you?

Book 15 minutes and I'll walk you through your first Claude Code + Cloudflare deploy live, on your actual project. No pitch — I just like watching this click for people.

Book a Setup Call →

FAQ

Do I need to know how to code to build a waitlist page this way?

No. You describe the page and the data you want captured in plain English, and Claude Code writes the HTML, the backend function, and the database schema. Your job is to describe outcomes clearly and paste back any error message the terminal shows you.

Is hosting actually free?

Yes, for a waitlist page's traffic level. Cloudflare Pages, Workers, and D1 all have a generous free tier that comfortably covers a landing page collecting signups. As of 2026 you'd need real scale to hit a paid limit — check Cloudflare's current pricing before a viral moment, but you're unlikely to pay anything for a waitlist.

Where do the emails actually get stored?

In a D1 database — Cloudflare's managed SQLite. Claude Code creates a signups table and every submission runs an INSERT through a small Worker function. Query it anytime with the wrangler CLI, or ask for a tiny admin view that lists and exports signups.

What if I want to email the waitlist later?

Export the table to CSV with one wrangler command and import it into your existing email tool, or have Claude Code wire a direct sync to your email provider's API. Both are a single follow-up prompt.

Can I add spam protection or duplicate-email blocking?

Yes — worth doing before you share the link widely. Ask for a unique constraint on the email column plus basic honeypot or rate-limiting protection. Both are small, well-documented additions Claude Code wires up in minutes.


Jonah is the founder of FindClout, a curated creator distribution network that has generated 3.3B+ views for brands across sports, prediction markets, AI, and more, built on verified American audiences. He builds most of FindClout's internal tooling himself, in a terminal, with zero formal coding background. Reach him at [email protected] or book a call.

Keep Reading

Terms · Privacy