Bot2Bot Labs

BOT2BOT LABS

Quick receipt

$0.64/mo vs $49.00/mo (beehiiv Lite, up to 1,000 subscribers)

MailCheap, the AI-built beehiiv alternative: what it costs to self-host

Price date: 2026-10-20Partially Verified

MailCheap is an AI-built alternative to beehiiv. Quick receipt: MailCheap (open-source beehiiv-style newsletter app by @marclou) vs beehiiv. We cloned the public repo, ran the full test suite and a local self-host path on free local MongoDB, checked list prices for SES/Upstash/Atlas/beehiiv/MailCheap Cloud, and compared newsletter-core features. On 2026-10-20 we sent one live transactional email (MailCheap's sign-in code) through the Amazon SES sandbox; campaign send and QStash fan-out were not run.

On price date 2026-10-20, running the clone yourself is about $0.64 per month (estimate (cited list prices; live SES campaign bill and Atlas/Upstash usage not observed — see setup.blocked)) versus $49.00/mo (beehiiv Lite, up to 1,000 subscribers) for beehiiv. At 1,000 subscribers and 4 sends/mo, self-host ~$0.64/mo vs beehiiv Lite $49/mo yearly (~$48/mo less before your time). Break-even on ops time depends on your hours (not measured); on infra alone it is cheaper from the first month.

Verdict: good for Operators who want newsletter send + archive + API/MCP and will run SES + Mongo themselves, especially around the 2026-11-01 beehiiv renewal change. Skip if You need beehiiv's ad network, podcasts, community, paid-subscription monetization, SOC 2 on the app vendor, or zero ops time. Main risk: You own deliverability and AGPL obligations; campaign/QStash path not verified in this quick run and our SES test email landed in Spam without domain DKIM; SES Essentials is $0.16/1k for many new accounts vs builder's $0.10 claim..

Quick receipt

r-0004 · Published 2026-10-23 · Price date 2026-10-20

Quick receipt: MailCheap (open-source beehiiv-style newsletter app by @marclou) vs beehiiv. We cloned the public repo, ran the full test suite and a local self-host path on free local MongoDB, checked list prices for SES/Upstash/Atlas/beehiiv/MailCheap Cloud, and compared newsletter-core features. On 2026-10-20 we sent one live transactional email (MailCheap's sign-in code) through the Amazon SES sandbox; campaign send and QStash fan-out were not run.

Break-even

Cheaper on infra from day one at 1,000 subscribers

~$0.64/mo self-host (SES Essentials @ 4k emails) vs $49/mo beehiiv Lite yearly. Excludes your setup and maintenance hours.

Verdict

Good for: Operators who want newsletter send + archive + API/MCP and will run SES + Mongo themselves, especially around the 2026-11-01 beehiiv renewal change.

Skip if: You need beehiiv's ad network, podcasts, community, paid-subscription monetization, SOC 2 on the app vendor, or zero ops time.

Main risk: You own deliverability and AGPL obligations; campaign/QStash path not verified in this quick run and our SES test email landed in Spam without domain DKIM; SES Essentials is $0.16/1k for many new accounts vs builder's $0.10 claim.

Confidence — 52.6% measured by us

measured 10/19 · builder-stated 6 · unverified 3 — Counts from claims[] types on this quick receipt (prices and measurements 2026-10-20; published 2026-10-23).

No upfront license fee; break-even month 0 on listed infra vs Lite.

Labor-adjusted operator TCO @1 user (year 1): $7.68 — Same as tco_year_1 until hours measured.

Self-host run cost (free tiers + SES list price) vs beehiiv Lite at 1,000 subscribers

Estimate at 1,000 active subscribers × 4 issues/mo = 4,000 emails. Amazon SES Essentials (default for new accounts as of 2026-07-21): $0.16/1,000 → $0.64/mo (aws.amazon.com/ses/pricing, checked 2026-10-20). Builder cites $0.10/1,000 (à-la-carte); that would be $0.40/mo if the account can use à-la-carte. Hosting Vercel Hobby $0, MongoDB Atlas Free (M0) $0, Upstash Redis Free $0, Upstash QStash Free $0 (80 QStash messages/mo at 50 emails/message per MailCheap README). Excludes domain DNS, production SES access request, and human time. A live transactional send through Amazon SES (MailCheap's sign-in email, us-west-2 sandbox) was verified on 2026-10-20; campaign sends were not run and no live campaign bill was measured.

beehiiv Lite, Up to 1,000 subscribers, billed yearly ($49/mo; $59/mo monthly). https://www.beehiiv.com/pricing checked 2026-10-20. Existing customers move to this new pricing on first renewal on/after 2026-11-01 (https://www.beehiiv.com/blog/beehiiv-pricing-2026).

estimate (cited list prices; live SES campaign bill and Atlas/Upstash usage not observed — see setup.blocked)

Two-sided receipt

A · Operator receipt

Builder or operator running the software

Build — tokens est. vs billed
Not disclosed / Not disclosed(Unverified)
Build — human hours
Not disclosed(Not disclosed)
Run @ 1 user / mo
$0.64/mohost $0.00 + DB $0.00 + email $0.64 + APIs $0.00 + tokens $0.00(Estimate)
Run @ 10 users / mo
$6.40/mohost $0.00 + DB $0.00 + email $6.40 + APIs $0.00 + tokens $0.00(Estimate)
Run @ 100 users / mo
$72.00/mohost $0.00 + DB $0.00 + email $64.00 + APIs $8.00 + tokens $0.00(Estimate)
Maintenance h / mo (@ 1 / 10 / 100)
Not measured · Not measured · Not measured(Not measured (quick))
TCO year 1 (@ 1 / 10 / 100 users)
$7.68 · $76.80 · $864.00(Estimate)
Labor-adjusted TCO year 1 (@ 1 / 10 / 100)
$7.68 · $76.80 · $864.00(Not measured on this quick receipt)
  • Builder: few prompts with Opus 5.5; no hours or token $ published.
  • 1 publisher, 1k subs, 4 issues/mo → 4k emails. SES Essentials $0.16/1k = $0.64. Atlas Free $0, Upstash Redis Free $0, QStash Free $0 (80 msgs), Vercel Hobby $0. À-la-carte SES would be $0.40.
  • Same 4k emails/mo per publisher × 10 = 40k emails → SES Essentials $6.40. Free tiers may still cover QStash/Redis/Atlas at this volume; unverified under load.
  • 100 × 4k = 400k emails → SES Essentials $64. QStash ~8k messages/mo ≈ $0.08 on PAYG if over free (or $0 if still under 1k/day). Placeholder $8 apis for Redis/QStash headroom — not a measured bill.
  • 12 × $0.64 SES Essentials at 4k emails/mo; excludes domain and time.
  • 12 × $6.40
  • 12 × $72 placeholder

B · User receipt

Someone using the product vs the commercial alternative

Clone price
MailCheap Cloud Starter (hosted) or self-host $0 + SES — $19.00/mo(builder-stated (mailcheap.ai/pricing, read 2026-10-20))
Real product @ 1 / 10 / 100 tiers / mo
$49.00 · $49.00 · $119.00(measured)
Price date
2026-10-20
Switching effort
MailCheap imports beehiiv/Substack/Mailchimp CSVs; README claims ~1 hour self-host setup mostly waiting on DNS/SES production. We did not complete DNS/SES in this run.(partially verified)
Risk — reliability
Transactional SES send verified (sign-in email; landed in Gmail Spam without domain DKIM). Campaign fan-out not verified. Production deliverability is on you + SES.
Risk — security
OSS has no SOC 2; beehiiv publishes SOC 2 Type 2. You run your own Mongo/SES.
Risk — support
Self-host: issues closed / no support per README. Cloud has chat.
Risk — data export
Contacts export via signed links (SECURITY.md); CSV import from beehiiv documented.
Risk — legal
AGPL-3.0 — network use may require offering source of your modified version.
  • Self-host is free software + provider fees. Cloud Starter $19/mo for 20k emails (mailcheap.ai/pricing 2026-10-20).
  • beehiiv Lite yearly @ ≤10,000 subscribers = $119/mo (pricing page 2026-10-20)
  • List price source: https://www.beehiiv.com/pricing

Scan results

Scan date 2026-10-20

Reliability

Core flow: 1032/1032 tests passed

not run (quick receipt; no load or live campaign-send test)

Setup from README: Pass

Security audit
0 critical · 9 high

npm audit on our local clone at commit bb82ec6 (all 9 high are in devDependencies; production deps 0); gitleaks on our clone only; beehiiv via https://security.beehiiv.com/ only

Feature parity
17 of 26 checklist features(source)

Maintenance pulse

Measured 2026-10-20

Last commit
2026-10-20T14:23:35Z
Open issues
13
Contributors
1
License
AGPL-3.0
Stars
1265

Source: https://api.github.com/repos/marclou/mailcheap

Data & lock-in

Self-host: your MongoDB + SES. Cloud: MailCheap's infra (not inspected).

Export: yes — Contacts CSV export (signed links); beehiiv CSV import documented in README.

Feature parity detail

Checklist row-by-row (MailCheap vs beehiiv tier).

FeatureMailCheapbeehiivMatched
Campaign editor (write/send)YesFreeYes
Schedule sendsYesFreeYes
Unlimited email sends (SaaS plans)YesFreeYes
Welcome emailYesFreeYes
Subscribe forms / signup APIYesFreeYes
One-click unsubscribe (RFC 8058)YesFreeYes
Confirmed / double opt-inYesFreeYes
Custom sending domain (DKIM/SPF/DMARC)YesLiteYes
Public archive / newsletter websiteYesFreeYes
Open & click tracking / campaign statsYesFreeYes
CSV import (beehiiv/Substack/Mailchimp)YesFreeYes
REST APIYesFreeYes
MCP for AI agentsYesFree (read) / Lite (write)Yes
List cleanup / dormant handlingYesLite (automations)Yes
Bounce & complaint suppressionYesFreeYes
A/B testingNoLiteNo
Visual automation builderNoLiteNo
Segments (basic)YesFreeYes
Paid subscriptions / 0% take rateNoLiteNo
Ad networkNoLiteNo
Podcast hostingNoFreeNo
CommunityNoFree/LiteNo
Digital products / storefrontNoFree/LiteNo
Remove platform brandingYesProYes
SSO / SAMLNoEnterpriseNo
Dedicated IPs (managed)NoEnterpriseNo

Price history

Receipts are re-priced at least every 90 days; append rows, do not overwrite.

CheckedProductPriceSource
2026-10-20beehiiv Lite, up to 1,000 subscribers (yearly billing)$49 USD/molink
2026-10-20beehiiv Lite, up to 1,000 subscribers (monthly billing)$59 USD/molink
2026-10-20beehiiv Lite, up to 10,000 subscribers (yearly billing)$119 USD/molink
2026-10-20Amazon SES Essentials outbound (0–10M emails/mo)$0.16 USD per 1,000 emailslink
2026-10-20Amazon SES à la carte outbound$0.1 USD per 1,000 emailslink
2026-10-20MailCheap Cloud Starter (20,000 emails/mo)$19 USD/molink
Breakage log: Not started14-day breakage log not started: no public deploy; SES campaign send not exercised (see verification_note). Start and end dates are not set.
AI ReceiptPartially Verified
TaskQuick receipt: MailCheap (open-source beehiiv-style newsletter app by @marclou) vs beehiiv. We cloned the public repo, ran the full test suite and a local self-host path on free local MongoDB, checked list prices for SES/Upstash/Atlas/beehiiv/MailCheap Cloud, and compared newsletter-core features. On 2026-10-20 we sent one live transactional email (MailCheap's sign-in code) through the Amazon SES sandbox; campaign send and QStash fan-out were not run.
Tool + modelAI coding agents (builder's build; Opus 5.5 mentioned) · Opus 5.5 (builder-stated) · Not disclosed
Human hoursNot disclosed
Token $ est vs billedNot disclosed / Not disclosed
Run $/mo$0.00 tokens + $0.64 hosting
BrokeNone logged
Dated2026-10-20

Builder did not publish human hours. He said it took a few prompts with Opus 5.5.

Builder-stated vs measured

TypeClaimValueSource
Builder-statedBuilder: 83% cheaper than beehiiv"I vibe-coded beehiiv, and it's 83% cheaper." Hosted from $19/month; open source free.Link · 2026-10-15
Builder-statedBuilder: $0.10 per 1,000 emails (SES)$0.10 per 1,000 emails on Amazon SESLink · 2026-10-10
Builder-statedBuilder: less than $300/year run cost"I will pay less than $300/year" on AWS SES + MongoDB (his stack)Link · 2026-10-09
Builder-statedBuilder: prior beehiiv billsFirst yearly bill $1,000; future bill would have been $4,000 (his statement)Link · 2026-10-09
Builder-statedBuilder: build method"a few prompts with Opus 5.5"; no human hours or token invoice publishedLink · 2026-10-09
Builder-statedMailCheap Cloud Starter price$19/month for 20,000 emails / up to 10,000 active subscribers ($0.95 per 1,000 emails)Link · 2026-10-20
UnverifiedHuman hours to buildNot disclosedLink · 2026-10-09
UnverifiedToken $ to buildNot disclosed (no usage export)Link · 2026-10-20
Measured by Bot2BotLocal clone install (npm ci)8.11 s wall-clock; 846 packages; Node 22.20.0Link · 2026-10-20
Measured by Bot2BotUnit + integration tests1032/1032 pass (Node 22.20.0, throwaway local mongod per tests)Link · 2026-10-20
Measured by Bot2BotProduction buildnext build succeeded in 17.5 sLink · 2026-10-20
Measured by Bot2BotLocal health + sign-in/api/health 200; email OTP sign-in as allowlisted admin works; dashboard shows Sending off until SES/QStash configuredLink · 2026-10-20
UnverifiedLive SES campaign send / subscribe / unsubscribe (us-west-2 sandbox)Not run. Campaign sends need SES_SNS_TOPIC_ARN (bot2bot-ops has no SNS permissions), an SES tenant + DKIM-verified sending domain (DNS change), and a public APP_URL for QStash fan-out (QStash calls APP_URL/api/jobs/*); this run had none of them. Live subscribe/unsubscribe also not exercised.Link · 2026-10-20
Measured by Bot2BotLive transactional send via Amazon SES (MailCheap sign-in email, production build)2026-10-20 10:49:09 PT: MailCheap SendEmail to SES us-west-2 returned 200 in 112 ms, MessageId 010101a15a6e7162-7cfa7283-042e-459c-bd79-5592186498d8-000000; SES SentLast24Hours 0→1, 1 delivery attempt, 0 bounces/complaints/rejects. Gmail received it ~1 s after the click (Gmail message id time 10:49:10 PT) but filed it in Spam (sandbox, From on a domain with no SES DKIM); its code completed sign-in. Earlier 3 test emails the same day went via Resend because a RESEND_API_KEY in the host env silently overrides EMAIL_PROVIDER=ses.Link · 2026-10-20
Measured by Bot2BotDependency audit (production)0 advisories in production deps; 9 high in devDependencies only (eslint-config-next / shadcn → braces/micromatch). npm audit 2026-10-20.Link · 2026-10-20
Measured by Bot2BotSecrets scan (our copy)gitleaks: only test fixtures and Next.js cache local keys (false positives / test secrets). No live credentials in source tree.Link · 2026-10-20
Measured by Bot2BotSES Essentials list price (new accounts)$0.16 per 1,000 outbound emails (0–10M/mo); à-la-carte $0.10/1,000 still listedLink · 2026-10-20
Measured by Bot2Botbeehiiv Lite @ 1k / 10k (yearly)1,000: $49/mo; 10,000: $119/mo (yearly). Monthly: $59 / $139.Link · 2026-10-20
Measured by Bot2Botbeehiiv existing-customer price changeNew pricing for existing customers on first renewal on/after 2026-11-01Link · 2026-10-01

Acceptance criteria

  • Builder $ claims traced to his X posts or mailcheap.ai/pricing with dates
  • Repo installs and tests on Node 22 from README
  • Run-cost math at stated volumes with cited pricing pages
  • Reliability: tests + local health/sign-in; live SES path tested where possible, untested parts marked
  • Security: npm audit + gitleaks on our copy; beehiiv via public Trust Center only
  • Feature match vs beehiiv public feature list (newsletter-core subset)
  • Labeled quick; no invented numbers

No token usage export or invoice. Build cost is builder_stated / unverified.

No AI tokens required to run the app once deployed. Upstream note: marclou/mailcheap had 41 commits on main after our pin bb82ec64 as of 2026-10-23 (GitHub API); this receipt stays pinned to bb82ec64.

Run cost services

  • Host: Vercel Hobby or any Node 22+ ($0 on Hobby; not deployed in this run)
  • MongoDB Atlas Free / M0 ($0) — not connected in this run (our box blocks TCP 27017); local mongod used
  • Amazon SES us-west-2 (sandbox; one live transactional send 2026-10-20; production access not requested)
  • Upstash QStash Free (required for campaign batches; token valid, fan-out not exercised — needs a public APP_URL)
  • Upstash Redis Free (optional rate limits; used live in this run)

Status pages

Subscription it replaces

beehiiv (Lite (Up to 1,000 subscribers, yearly)) — $49.00/mo checked 2026-10-20. Source · see also /prices

Reliability notes

Measured: 1032/1032 automated tests pass. Local /api/health 200; allowlisted admin sign-in works. Live 2026-10-20 (production build): MailCheap's transactional sign-in email sent through Amazon SES us-west-2 sandbox (SendEmail 200 in 112 ms, SES counted 1 send, 0 bounces) and reached Gmail in ~1 s, but landed in Spam (no domain DKIM in sandbox setup); the emailed code completed sign-in. Upstash Redis rate limiting worked live. Note: with RESEND_API_KEY present, MailCheap silently sends its own emails via Resend instead of SES (our first 3 test emails did). Not measured: campaign send / QStash fan-out, subscribe/unsubscribe live, inbox placement with a DKIM-signed domain, MongoDB Atlas (our box blocks outbound TCP 27017; local mongod used).

Security check

Tested 2026-10-20 · Status: Pass

  • npm audit (full and --omit=dev) on commit bb82ec64
  • gitleaks git + dir on our local clone
  • beehiiv public Trust Center only (no probing)
  • Production dependencies: 0 npm advisories.
  • DevDependencies: 9 high (eslint-config-next / shadcn → braces stack-exhaustion GHSA-vfj7-8cjw-p6xm); not in production bundle.
  • gitleaks flagged only hashed test OTP secrets in tests/*.mjs and local .next cache keys — not production credentials.
  • MailCheap SECURITY.md documents account isolation, hashed API keys, closed Better Auth OTP HTTP routes, and private vuln reporting via GitHub Security tab.
  • beehiiv: SOC 2 Type 2 as of 2026-01-22 per https://security.beehiiv.com/ (public Trust Center; report itself not reviewed by us).

Own business

Total / mo
$0.64
Hosting / mo
$0.64

Self-host: you own the stack and compliance burden. No SOC 2 on the open-source project. beehiiv publishes SOC 2 Type 2 on its Trust Center.

SES list price and plan defaults can change (Essentials default for new accounts from 2026-07-21). Upstash free-tier limits apply. beehiiv renewals move 2026-11-01.

Estimate at 4k emails/mo. Add your ops time.

Sell @ 10 customers

Hosting / mo
$6.40

AGPL-3.0: offering MailCheap as a network service to others triggers source-sharing obligations. Prefer MailCheap Cloud or a clean-room product if you sell newsletter SaaS.

Same SES/Upstash risk; plus support load for 10 customers.

Estimate: 10 publishers × 4k emails/mo = 40k emails → SES Essentials ~$6.40/mo (same math as the operator 10-user tier); free tiers may still cover Atlas/Redis/QStash. Compliance and AGPL dominate.

Sell @ 100 customers

Hosting / mo
$64.00

Expect paid Atlas/Redis/QStash, SES production, deliverability ops, and likely SOC 2 asks. Do not treat this OSS as a drop-in beehiiv replacement for regulated buyers.

At ~100 publishers × ~4k emails each ≈ 400k emails/mo → SES Essentials ~$64 before other services; QStash may leave free tier.

Rough SES-only floor at 400k emails/mo Essentials ($64); the operator 100-user tier adds an $8 placeholder for Redis/QStash ($72). Not a measured multi-tenant deploy.

Reproducible setup

  • git clone https://github.com/marclou/mailcheap.git @ bb82ec64
  • npm ci (Node >= 22)
  • npm test → 1032/1032
  • npm run build → ok
  • Local mongod + next dev with MONGODB_URI, BETTER_AUTH_SECRET, SUPPRESSION_HASH_KEY, ADMIN_EMAILS, EMAIL_FROM, SENDING_ENABLED=false
  • 2026-10-20 live: next start (NODE_ENV=production) with SES keys (us-west-2), Upstash Redis, EMAIL_PROVIDER=ses, EMAIL_FROM=jordan@bot2botlabs.com (SES-verified identity), local mongod
  • Sign-in code requested 3x for jordan@bot2botlabs.com; all 3 delivered to Gmail; code completed sign-in; /admin read SES account (GetAccount 200)
  • Instrumented TLS/HTTPS hook: zero SES SendEmail calls during the 3 sends; SES SentLast24Hours stayed 0 -> emails went via Resend (RESEND_API_KEY present in host env)
  • Final send: server started with env -u RESEND_API_KEY; 1 sign-in code to jordan@bot2botlabs.com -> SES SendEmail 200 (112 ms), MessageId 010101a15a6e7162-7cfa7283-042e-459c-bd79-5592186498d8-000000; SentLast24Hours 1; Gmail Spam; code completed sign-in
  • Not run: campaign send (needs SES_SNS_TOPIC_ARN + DKIM-verified domain + tenant), QStash fan-out (needs public APP_URL), Atlas (TCP 27017 blocked from box)
  • 2026-10-23: upstream check only — 41 commits on marclou/mailcheap main since bb82ec64 (GitHub API compare); not re-run, pin kept

Repo: https://github.com/marclou/mailcheap

License: AGPL-3.0-only

Sources

Disclosure

Verification: Partially Verified. Bot2Bot Labs (internal quick receipt; $0 spend)

Quick receipt. Install, tests, build, local sign-in, audits, and public price/feature pages measured. Verified live 2026-10-20: MailCheap's transactional email (sign-in code) sent through Amazon SES (MessageId 010101a15a6e7162-7cfa7283-042e-459c-bd79-5592186498d8-000000, SES counted 1 send, 0 bounces) and delivered to Gmail in ~1 s, though to Spam in our sandbox setup without domain DKIM; Upstash Redis rate limiting live. Still untested: campaign send and QStash fan-out (needs an SNS topic for SES events, a DKIM-verified sending domain, and a public URL for QStash callbacks), live subscribe/unsubscribe, inbox placement, and MongoDB Atlas (port 27017 blocked from our box; local MongoDB used). Builder build $ and hours unverified.

Get this receipt for your AI-built app — Receipt Scan $19 →

For AI and citation

Machine-readable summary and citation line for crawlers, assistants, and footnotes. Content is always in the page HTML.

Key facts, quotable summary, and how to cite

Download all receipts (JSON)

More receipts