stack / 03 — updated may 2026

Build a Newsletter business for $25/mo

A working newsletter operation: a primary ESP, a backup ESP, a fast static site, a domain, and a real forms tool. Up to about 2,500 subscribers without paying for the inbox.

$19 is the actual monthly bill at this scale. Below 2,500 subs, you owe nothing for sends; above it, this stack tells you exactly when to start paying.

cap$25/mo
actual$19/mo
updatedMay 2026
services5 · 2 free
stack.txt — receipts/newsletter-25.mdmonthly
SERVICENOTESUSD
Beehiiv freeprimary email service providerfree
Astro on Cloudflare Pagesstatic site + archivefree
MailerLitebackup ESP + automations$9
.com / 12domain registration$1
Tally Proforms + surveys$9
SUBTOTAL · monthly5 services · 2 free tiers$19/mo
>cheapstack — runs in production. jump to setup →
why / the picks

Why this stack

A newsletter business is a list, a way to send the list, and a way to grow the list. This stack gives you all three for $19, with the deliberate addition of a second ESP — because at any scale, the day your primary suspends your account is the day you wish you had one.

Beehiiv on free is genuinely the best free tier in the ESP market right now. ConvertKit caps you at 1,000 subs and limits sends. Substack takes 10% of revenue. Mailchimp’s free tier shrinks every year. Beehiiv hands you 2,500 subs, unlimited sends, working analytics, and a referral program at zero. There’s no realistic alternative below $20.

Astro on Cloudflare Pages is the cheapest possible static-site setup. Markdown becomes HTML at build time, the edge serves it for free, and pages load instantly because there’s no JS in the way. The newsletter archive lives here too — embedding RSS into the build is a five-minute add.

The honest tradeoff: you’re running two ESPs, which means double the setup time and a recurring “am I keeping the backup synced?” chore. You’re also at the mercy of Beehiiv’s content rules. If you write about anything controversial — politics, finance, anything that touches the “sensitive content” categories — the backup ESP isn’t a luxury, it’s the plan.

services / 5 picks

Per-service deep dives

01

Beehiiv free

free Updated May 2026
What it does

Sends the newsletter, hosts the archive, runs the signup form, and handles unsubscribes.

Why we picked it

Free up to 2,500 subscribers, with no send caps and no daily limits — the only ESP at the free tier that won't make you choose between launching and getting paid. The editor is built for newsletter writing (not transactional email), referrals are baked in, and the analytics show what you actually want: opens, clicks, unsubscribes, growth source.

Where it might bite you
  • Beehiiv hosts your archive on a beehiiv.com subdomain by default. Custom domain requires the paid tier — most readers won't notice, but it's a brand point.
  • Free tier branding includes a small Beehiiv logo in the footer of every email. Removable on paid only.
  • The recommendations network is opt-in but on by default — review the settings before you accidentally cross-promote a list you've never read.
02

Astro on Cloudflare Pages

free Updated May 2026
What it does

Serves the marketing site, an archive view, and any long-form essays as fully-static HTML.

Why we picked it

Astro builds out to plain HTML/CSS, which Cloudflare Pages serves at the edge for free. No serverless functions in the hot path means no cold starts and no per-invocation costs. Build-time content collections handle the markdown for essays; you write in your editor, push to git, the site updates.

Where it might bite you
  • Static doesn't mean no JS — Astro hydrates components on demand. Watch the bundle for dependencies that pull in React/Vue when a vanilla-JS island would do.
  • Cloudflare Pages' free tier has a 500-builds-per-month cap. Multi-author teams committing constantly will hit it — most newsletter authors won't.
  • RSS generation is your job. Build it once with @astrojs/rss; readers will appreciate it more than you'd expect.
03

MailerLite

$9/mo Updated May 2026
What it does

A second ESP, primarily for welcome sequences and the disaster-recovery scenario where your primary gets suspended.

Why we picked it

An ESP that doesn't know your list exists yet is a dead ESP at the moment of crisis. $9/mo keeps an account warm with a synced subscriber list and a working welcome automation. The day Beehiiv flags you for sending content they disagree with, you're not starting from zero — you're already running.

Where it might bite you
  • Cross-ESP list sync is manual or via Zapier — there's no native Beehiiv → MailerLite pipe. Set up a weekly export-import or a Zap, and confirm it actually works.
  • Sending from MailerLite while Beehiiv is alive will look like duplicate sends to subscribers. Use it for automations only until disaster strikes.
  • MailerLite's deliverability is solid but lower than premium-tier dedicated transactional providers. Marketing-shaped emails are fine; transactional belongs on Resend.
04

.com / 12

$1/mo Updated May 2026
What it does

A .com or branded 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) with WHOIS privacy free. You'll point the apex at Cloudflare Pages and a CNAME at Beehiiv's email subdomain (mail.yourdomain.com) for branded sender addresses.

Where it might bite you
  • Branded sender domain (sending from you@yourdomain.com instead of you@beehiiv.com) requires DNS records Beehiiv documents. Skip the setup and your open rates drop quietly.
  • Don't register parked domains at GoDaddy — their renewal pricing climbs every year. Registrar-cost providers stay flat.
  • .io, .dev, .news domains are appealing for newsletter brands but renew at higher rates than .com. Read the renewal price before committing.
05

Tally Pro

$9/mo Updated May 2026
What it does

Embeds signup forms, polls, and reader surveys without writing form-handling code.

Why we picked it

Free Tally is generous; Pro at $9/mo unlocks custom domains, removed branding, and webhook integrations to push form data into Beehiiv. Building the same thing yourself in HTML + a serverless endpoint is a half-day of work that breaks the moment you change ESPs.

Where it might bite you
  • Forms hosted on Tally's domain look like Tally's domain — sometimes that's fine, sometimes that's brand-corrosive. Use the custom-domain feature on Pro for anything front-facing.
  • Webhook integrations need a paid Beehiiv account to receive — on the free Beehiiv plan you'll be exporting CSVs. Plan accordingly.
  • Conditional logic and calculation features are powerful and easy to abuse. Surveys with 40 conditional branches break in subtle ways.
setup / ~30 minutes

Setup in 30 minutes

Half a Saturday if you’ve done one before, full Saturday if you haven’t. The DNS step is the longest single block; everything else is forms and copy.

  1. Register the domain and set DNS at the registrar

    Buy on Porkbun or Cloudflare Registrar. Add Cloudflare Pages records for the apex (CNAME to your-project.pages.dev) and a separate CNAME for the email subdomain (configured in Beehiiv).

  2. Bootstrap the Astro site and deploy to Cloudflare Pages

    npm create astro@latest with the “blog” template if you want a starter. Connect the repo to Cloudflare Pages, set the build command to npm run build and the output directory to dist. First deploy lands in under five minutes.

  3. Set up Beehiiv and import the empty list

    Create the publication, configure the brand (logo, colors, sender name), and add the email subdomain DNS records. Send a test issue to your own address before any subscribers exist — confirm sender domain, footer, unsubscribe link.

  4. Wire MailerLite as the warm backup

    Create a free MailerLite account, set up the same sender info, design a single welcome email, and seed the list with a CSV export from Beehiiv. Re-run the export every Sunday or set up a weekly Zap.

  5. Build the signup form on Tally

    Three fields max: email, optional name, optional source dropdown. Connect the Tally webhook to Beehiiv via Zapier or Beehiiv's HTTP API endpoint. Embed the form on the Astro site's hero and footer.

  6. Add @astrojs/rss and link from the archive

    RSS readers won't subscribe themselves. Generate the feed at build time, expose it at /rss.xml, link to it from the site footer with a recognizable RSS icon.

  7. Schedule a recurring 'send a test issue' calendar reminder

    Once a quarter, send yourself a test newsletter from MailerLite. The day you need it for real, you don't want to be debugging DNS for the first time in eight months.

thresholds / numeric

When this stack runs out

The thresholds for a newsletter business are about list size, send volume, and what counts as monetization. Each one moves you toward needing the next price tier.

2,500 subs
Beehiiv free tier ends. Launch tier is $39/mo, which buys you up to 5k subs and a few automation features. Worth it the moment you can monetize.
10k subs
Beehiiv Grow at $99/mo. By this point most newsletters are running paid sponsorships, premium tiers, or both — the spend tracks revenue.
First sponsor sale
Astro static site is great for content but not for sponsor-management workflows. A small admin panel — even a Notion sheet — beats juggling spreadsheets at 3 sponsors a month.
Premium tier launch
If you're charging for a paid tier, Beehiiv handles paywalled content natively (Premium tier required, $99+/mo). Substack would be 10% of revenue forever — Beehiiv is flat.
Beehiiv suspension
If your account gets flagged (rare, but it happens for finance/political content), the MailerLite backup is your continuity plan. Reroute DNS, switch the signup webhook, send a transparency email to existing subs explaining the move.
gotchas / from production

Common gotchas

The pitfalls of running a newsletter on this stack — deliverability traps, ESP politics, and DNS quirks you can’t debug at midnight.

  • DELIVERABILITY

    DKIM/DMARC missing means quiet spam folders

    Beehiiv documents the records and the verification step is one click. Skip them and your open rates drop 30% silently — there's no error, just fewer opens.

  • ESP

    Beehiiv recommendations network can cross-promote unwanted lists

    Recommendations are a discovery tool but they're enabled by default. Audit the network settings before launch — you might be recommending a list you've never read to your own subscribers.

  • BACKUP

    MailerLite list goes stale fast

    Without active syncing, the backup is reading a 6-month-old list. New subs since the last export aren't on it. Schedule the sync, automate it via Zapier, or accept the gap and document it.

  • RSS

    Astro's RSS plugin needs an explicit base URL

    Without setting `site` in astro.config.mjs, the RSS feed has relative URLs that break in every reader. Set the production URL once during initial setup.

  • DOMAINS

    Email subdomain != site subdomain

    Beehiiv expects mail.yourdomain.com for sending; Cloudflare Pages serves yourdomain.com. Two separate DNS records, two propagation windows. Don't troubleshoot one while the other is still propagating.

  • FORMS

    Tally embeds load slowly without DNS prefetch

    The default embed code adds a noticeable delay above the fold. Use `<link rel='dns-prefetch' href='https://tally.so'>` in the Astro layout's head or load the form below the fold.