Customize and deploy
Download the zip, change the words and the form action, then put the folder on Cloudflare Pages or any static host.
Download template See live preview
1. What’s in the ZIP
waitlist-template/ index.html ← waitlist page css/styles.css ← layout js/app.js ← form toast + Formspree hook js/analytics.js ← UTM + event hooks (placeholders)
2. Copy and branding
- Open
index.htmland replace the product name, headline, and list items. - Update
<title>, meta description, Open Graph, and Twitter tags. - Swap the header text or drop in your own favicon.
- Colors live in
css/styles.cssunder:root.
3. Wire the email form
The demo form uses a Formspree placeholder and only shows a toast until you replace the ID:
<form data-waitlist-form action="https://formspree.io/f/YOUR_FORM_ID" method="POST"> <input name="email" type="email" required placeholder="you@company.com" /> <button type="submit">Join waitlist</button> </form>
- Formspree: create a form, paste the endpoint, replace
YOUR_FORM_ID. - EmailOctopus / Buttondown: point
actionat their form URL and match field names. - Own API: POST from
js/app.js, or drop the preventDefault once fetch is wired.
4. Meta / OG stubs
<meta property="og:title" content="Your Product — Join the waitlist" /> <meta property="og:description" content="One-line pitch for share cards." /> <meta property="og:url" content="https://your-domain.example/" /> <meta name="twitter:card" content="summary_large_image" />
5. Analytics placeholders
In the downloadable template, replace these before you ship your own page:
YOUR_CF_WEB_ANALYTICS_TOKEN— Cloudflare Web Analytics beaconG-XXXXXXXXXX— GA4 measurement ID
Events already hooked: click_cta, download_template, submit_waitlist (plus UTM/referrer capture).
6. Deploy on Cloudflare
From the project root (this site, or unzip the template into a Workers project with wrangler.jsonc pointing at ./public):
cd /workspace/day1-site/waitlist-saas-template npx wrangler@3 login npx wrangler@3 deploy
Or drag the folder into Cloudflare Pages → Create project → Direct Upload. Static files only — no KV, R2, or D1 required.
7. Quick check
- Static HTML/CSS/JS only
- No paid Cloudflare bindings
- Form works in demo mode without a backend
- robots.txt allows crawl; sitemap lists public pages
- Analytics tokens in the zip are placeholders
/waitlist-template.zipis a real archive