stack / 06 — updated may 2026

Build a Landing page for $15/mo

One page, one form, one conversion goal. Anyone selling you more than this for a landing page is selling you the wrong thing.

$11 is the actual recurring monthly cost. Three of the four line items are free; the only paid one is the form, and only because the alternative is writing a serverless endpoint and a spam filter.

cap$15/mo
actual$11/mo
updatedMay 2026
services4 · 2 free
stack.txt — receipts/landing-15.mdmonthly
SERVICENOTESUSD
Cloudflare Pagesstatic hosting + edgefree
.com / 12domain registration$1
Formspreeform submissions + spam filter$10
Plausibleprivacy analyticsfree
SUBTOTAL · monthly4 services · 2 free tiers$11/mo
>cheapstack — runs in production. jump to setup →
why / the picks

Why this stack

A landing page’s job is to do one thing: convert visitors into a list. The page itself is simple HTML. The form is a form. The hosting is a CDN. None of it is hard, and none of it should cost much.

The only paid line item is the form — and only because rolling your own form handler is more work than it’s worth at this price. Spam filtering, file attachments, email forwarding, integrations — Formspree absorbs all of those into a $10/mo subscription that’s easier to keep working than a homegrown endpoint.

Cloudflare Pages and Plausible are both genuinely free at this scale. The combination is fast (edge-served HTML, 1KB analytics script) and private (no cookies, no banner, no third-party tracking). That makes the page itself feel different from typical “we use Hubspot” landing pages — and that signal matters to the kind of visitors who buy from this kind of page.

The honest tradeoff: you’re paying $10 for a form, and you could roll your own for $0. The reason not to is that maintaining the form handler — spam, retries, email forwarding, file size limits — is the kind of work that creates a false sense of progress while costing you the days you should be selling.

services / 4 picks

Per-service deep dives

01

Cloudflare Pages

free Updated May 2026
What it does

Serves the static landing page from Cloudflare's edge network — globally fast, with HTTPS and a custom domain at zero cost.

Why we picked it

Cloudflare Pages' free tier is genuinely generous: 500 builds/month, unlimited requests, unlimited bandwidth. For a single landing page that gets pushed once a week and served forever, that's infinite headroom. Build any static-site framework (Astro, Next.js static export, plain HTML) and let Cloudflare handle the CDN.

Where it might bite you
  • 500 builds/mo is plenty for one site, but if you accidentally enable preview deploys on every PR you can chew through the cap on a busy day.
  • Custom domain setup via Cloudflare's nameservers means migrating DNS away from your registrar. If your registrar handles email DNS too, plan that move carefully.
  • Functions/Workers on Cloudflare Pages have a separate quota. If your landing page grows server-rendered features, you'll consume the Workers free tier (100k requests/day).
02

.com / 12

$1/mo Updated May 2026
What it does

A .com or .dev or .io domain registered for a year, amortized to ~$1/mo.

Why we picked it

Porkbun and Cloudflare Registrar both register .com at registrar cost (~$10-12/year). If you're already on Cloudflare Pages, registering through Cloudflare Registrar is one less account, and DNS lives next to hosting.

Where it might bite you
  • Premium domains (short, English words) are priced higher — sometimes $500-$10,000 upfront. Pick a regular registration name unless brand pays for itself.
  • Some TLDs (.io, .dev) renew at higher rates than .com. Check the renewal price, not just the first-year price, before committing.
  • Don't park your domain on a free 'we'll host it for you' service that demands payment to release it. Use a real registrar.
03

Formspree

$10/mo Updated May 2026
What it does

Receives form submissions from the landing page, filters spam, forwards to email or Slack.

Why we picked it

$10/mo is the Personal tier: 1,000 submissions/month, custom from-domain, file uploads, plugin integrations (Slack, Webhooks, Zapier). The alternative is to write a serverless endpoint, validate input, run reCAPTCHA, store in a database, and wire email forwarding — that's a half-day of work that breaks the moment the spam pattern changes. Formspree handles all of it for $10.

Where it might bite you
  • Free tier is 50 submissions/mo, which is enough only for the first 24 hours after launch. Plan to upgrade before announcement day.
  • Spam filtering is honeypot + algorithmic, not perfect. The first time a form gets scraped, you may see a spam burst before Formspree's filter catches up — review the dashboard regularly the first month.
  • Submissions are stored on Formspree's side. If the landing-page form collects sensitive info (it shouldn't, on a marketing form), don't.
04

Plausible

free Updated May 2026
What it does

Tracks page views, sources, and conversion events — without cookies, without a banner, without selling your data.

Why we picked it

Plausible Community Edition is open-source and self-hostable on a Cloudflare Worker or a tiny Render service for free. For the hosted version, the trial covers your first month while you decide if it's worth $9/mo. Either way, it gives you the one number that matters on a landing page: how many people are converting on the form.

Where it might bite you
  • Self-hosting Plausible CE requires a small server (a $5 VPS or a Cloudflare Worker). It's a real ops task — not zero work.
  • The hosted free trial is 30 days. After that you owe Plausible $9/mo, which technically pushes the stack to $20.
  • Conversion events on the free/trial tier are limited. Premium tiers unlock funnels. For a landing page with one conversion (form submit), the basic event is enough.
setup / ~30 minutes

Setup in 30 minutes

A working landing page in under an hour. The longest single block is writing the copy on the page; everything else is wiring.

  1. Register the domain

    Buy on Porkbun or Cloudflare Registrar. If you're going Cloudflare Registrar, you'll be on Cloudflare's nameservers automatically — one less DNS migration.

  2. Build the static page

    Astro, plain HTML, or Next.js static export — all work. Single page, single form, one above-the-fold value prop, one CTA. Add <link rel="icon" href="/favicon.svg"> or you’ll regret it on the first share.

  3. Deploy to Cloudflare Pages

    Connect the repo to Cloudflare Pages. Set build command and output directory; first build lands in two minutes. Add the custom domain via the Pages dashboard.

  4. Wire Formspree

    Sign up, create an endpoint, copy its URL into the form’s action attribute. Test once with a real submission and confirm it lands in your inbox or Slack.

  5. Add Plausible (or self-hosted Plausible CE)

    Plausible script in the page <head>. Add a goal for form-submit (Plausible custom event) and confirm it fires on a real submission. If self-hosting, deploy plausible/community-edition to a Cloudflare Worker or a $5 VPS.

  6. Set up email alerts on Formspree submissions

    First-submission alert via Formspree, plus a low-volume Slack channel if you have one. Don't miss the first 10 leads while you're optimizing the headline.

thresholds / numeric

When this stack runs out

Landing pages don’t scale — they convert. The thresholds are about volume and the moment the page stops being a landing page.

1,000 form submissions/mo
Formspree's $10 tier ends. Bump to $20 for 5,000. By that volume the landing page is working — celebrate before paying.
Plausible trial ends
If using hosted Plausible, you owe $9/mo at day 30. If self-hosting Community Edition, no charge but you have a small ops task.
First A/B test
When you start testing variants, Cloudflare Pages doesn't natively split traffic. Add a Cloudflare Worker for routing, or move to Vercel where preview branches double as A/B routes.
Page becomes an app
If the landing page grows a dashboard, auth, or any user state, you've outgrown this stack. The natural graduation is to MVP-$50 — the same Cloudflare Pages site can stay as the marketing front-door.
Domain renewal
Year one is the cheap year. Renewal at registrar cost is fine; renewal at GoDaddy's marked-up rates is not. If you didn't pick a budget registrar at first, transfer before renewal.
gotchas / from production

Common gotchas

Even a one-page site has things that bite. None of these block launch; all of them have ruined a launch day for someone, somewhere.

  • FORMS

    Formspree spam burst on day one

    Bots scrape new domains within hours. Expect 5-50 spam submissions in the first 24 hours; Formspree's filter learns fast but isn't instant. Don't celebrate the first '50 leads.'

  • DNS

    Cloudflare DNS propagation

    Custom domain on Cloudflare Pages activates in minutes if your nameservers are already at Cloudflare; up to 24 hours if you're switching from another registrar. Plan announcements after propagation, not before.

  • ANALYTICS

    Plausible script blocked by ad-blockers

    Some ad-blockers block plausible.io even though Plausible is privacy-friendly. The proxy script (or self-hosted on your domain) bypasses this and your numbers will be more accurate.

  • SHARING

    OG image missing for social shares

    Without <meta property='og:image'>, your link previews on Twitter/Slack/iMessage are blank. Add an og:image (1200x630, JPEG) and a Twitter card meta tag — five minutes of work, huge perception impact.

  • FAVICON

    Default favicon embarrasses you on tab strips

    Browsers render the default Cloudflare or framework favicon if you don't ship one. Even a single-letter SVG is better. The first user to bookmark you sees this.

  • EMAIL

    Formspree from-address ends up in Gmail's promotions

    Default Formspree forwarding from `submission@formspree.io` lands in your Promotions tab. Use Custom Sender on the Personal tier to send from `notifications@yourdomain.com` — confirm DKIM is configured.