splitforms.com
All articles/ COMPARISONS10 MIN READPublished May 1, 2026

Self-hosted vs SaaS form backends: honest tradeoffs

When self-hosting a form backend (FormBricks, OhMyForm) makes sense vs paying for SaaS — TCO, deliverability, and operational overhead.

✶ Written by
splitforms.com / blog

Founder of splitforms — the form backend API for developers. Writes about form UX, anti-spam, and shipping web apps without backend code.

The self-hosted options

The serious self-hosted form backends in 2026:

  • FormBricks — Next.js + Postgres, AGPL-3.0, the most actively-maintained option. Built more for survey workflows than pure form-to-email but handles both. ~14k GitHub stars.
  • OhMyForm — TypeScript + GraphQL, originally a TellForm fork. Has a clean form builder. Maintenance has slowed; check recent commits before adopting.
  • Formie (Craft CMS) — A Craft plugin, not standalone, but production-grade if you already run Craft. Pay-once license model.
  • Plausible-style scratch build — Many teams roll their own with ~300 lines of Node + Postgres. Cheap to start, expensive to maintain once spam, retries, and deliverability enter the picture.

I've run FormBricks on a Hetzner CX22 in production for 8 months across two side projects. It works. The friction is everything around it.

Real TCO, line by line

The advertised cost of self-hosting is "a $5 VPS". The actual cost over the first year:

  • VPS — Hetzner CX22 at ~$5/mo, or DigitalOcean $6/mo droplet. ~$60–72/year.
  • Managed Postgres — DigitalOcean $15/mo or self-managed (free + risk of forgetting to back up). $0–180/year.
  • Object storage for file uploads — R2 or B2 at <$2/mo for typical volume. ~$24/year.
  • Email delivery — Postmark $15/mo for 10k emails, AWS SES at $0.10/1k. $24–180/year.
  • TLS cert — Let's Encrypt, free.
  • Monitoring — UptimeRobot free tier, or Better Stack at $24/mo if you want incident management. $0–288/year.
  • Backup tooling — Borg + S3, ~$3/mo for storage. ~$36/year.
  • Domain + DNS — $12–20/year.
  • Your time — initial setup is 4–8 hours, ongoing is 1–3 hours/month for upgrades, security patches, log review. At $100/hr that's $1,600–4,400/year.

Total fully-loaded year-one cost for a serious self-hosted setup at modest volume: $1,800–5,400. The pure infrastructure cost is genuinely small (~$200–700); your time is 80%+ of TCO unless you specifically enjoy this work.

Cost comparison table

Scenarios at three volume bands. Time priced at $100/hr; ops time at 2 hrs/month.

Scenario500/mo5,000/mo50,000/mo
FormBricks self-hosted$2,650/yr$2,800/yr$3,400/yr
splitforms Free$0/yr
splitforms Pro ($5/mo)$60/yr$60/yr
splitforms 4-Year ($59 once / 48 months)$59 once
Formspree Pro ($20/mo)$240/yr$240/yr$600+/yr
Custom Node + SES$2,200/yr$2,300/yr$2,500/yr

SaaS rows assume the volume fits the plan; self-host rows assume you stay sane and don't under-staff ops.

The deliverability problem

Email deliverability is the part nobody warns you about. The day you spin up your VPS, your IP has zero reputation. Inboxing rate to Gmail starts around 60% and climbs over 4–6 weeks of warmup — ifyou've set up SPF, DKIM, DMARC, configured a feedback loop with major mailbox providers, handle bounces correctly, and don't get blacklisted by Spamhaus for someone else's spam from your hosting provider's shared range.

The pragmatic answer is to skip the self-managed SMTP fight and use Postmark, AWS SES, or Resend. Which is fine — but at that point your "self-hosted" backend is calling someone else's SaaS for the part that actually matters. SES is cheap; Postmark is reliable; either way you're paying.

splitforms aggregates deliverability across thousands of customers, which means warmed pools, established sender reputation, and a tier-1 inbox rate measured at 98.4% to Gmail and 97.1% to Outlook over the last 30 days.

When self-hosting wins

  • Data sovereignty mandates — German healthcare, French public sector, Canadian PIPEDA-sensitive workloads where the legal team won't accept any US processor at any price.
  • Air-gapped or VPC-only environments — Where the form lives behind a corporate firewall and can't POST to the public internet.
  • >50,000 submissions/month with steady ops capacity — At enterprise volume the per-submission economics flip in favor of self-host.
  • You're building a product around forms — If forms are your core value prop, owning the backend matters.
  • Learning — Self-hosting once teaches you what SaaS hides. Worth doing at least one weekend.

When SaaS wins

  • You bill by the hour — Every hour on form ops is an hour not on the billable work.
  • You ship side projects — Friction kills projects before they have users; SaaS removes the friction.
  • You need a real dashboard — Building one isn't hard, but maintaining it is. SaaS dashboards get free updates.
  • Spam is a meaningful cost — SaaS providers see millions of submissions and ship classifier improvements weekly.
  • You want the integrations matrix — Slack, Discord, Zapier, n8n, Sheets, Airtable, HubSpot — building each is half a day; consuming them is one click.
  • You want predictable bills — the splitforms 4-Year plan ($59 once for 48 months) is hard to beat for indie projects.

The hybrid play

The strongest pattern I've seen at small companies: SaaS form backend + self-hosted enrichment. splitforms receives the submission, fires a webhook into your own service, your service does the lookups, scoring, and routing, then writes to your own DB. You get SaaS reliability for the public-facing endpoint and full control over the data once it's in your perimeter. Best of both worlds, and the migration path off splitforms (if you ever need it) is just "point the form action at your own URL."

The advantage of this split goes beyond reliability. Your perimeter is a much smaller compliance surface than the entire public internet. Auditors care about who can read your CRM; they care less about who can ingest a contact form. Pushing the public-facing endpoint to a hardened SaaS shrinks the surface area you have to defend, which makes everything from SOC 2 prep to breach response easier.

What ops actually looks like

The strongest argument for SaaS isn't cost — it's the recurring weekly load that nobody plans for. Running my FormBricks instance in 2025 generated, on average:

  • 2–3 security advisories per month across the OS, Node runtime, Postgres, and the app itself. Each requires read, judgment, and a maintenance window.
  • One major version upgrade per quarter for either the app or the underlying frameworks. Some are smooth; some require schema migrations, breaking-change audits, and a rollback plan.
  • One cert/DNS/email-deliverability incident per quarter — Let's Encrypt rate-limit, DKIM rotation, an SES sending-quota throttle, an IP suddenly on a blocklist.
  • One backup-validation drill per quarter if you're honest about disaster recovery — restore the latest backup to a fresh VPS and confirm everything works.
  • Steady spam-rule tuning — every new spam wave that bypasses your filter requires a new rule.

None of this is hard. All of it is interruption. If your week already has 30 hours of focused work in it, adding another 4–6 hours of ops triage is the difference between shipping and not shipping. The point of a SaaS isn't that the ops work goes away — it's that someone else does it on their schedule, not yours.

Lock-in and the exit plan

The legitimate concern with SaaS is lock-in. The question to ask of any form backend is: "If you raise prices 5x or pivot tomorrow, how long does it take me to move?" For form backends the answer should be hours, not weeks, because the data shape is dead simple — flat key/value pairs per submission.

splitforms commits to: full submission export to CSV/JSON at any time, no rate limit on export; a documented schema; and the right to take your data even after canceling. The migration target can be your own Node + Postgres in a weekend if you ever need it. There's no proprietary block diagram, no "custom flows" that don't survive export.

For comparison: Typeform's answer is "CSV export, but logic and design don't come with you." That's real lock-in. A flat form-to-email backend is the lowest-lock-in software category I work with, which is part of why so many SaaS form backends compete on price — switching costs are floor-low.

Common pitfalls when self-hosting

If you go the self-hosted route anyway, the five issues that bite teams hardest in the first 90 days:

  • Gmail spam folder — fresh sending IPs land in spam until reputation builds. Warm up over 4-6 weeks or proxy through Postmark/SES from day one.
  • Postgres backup left untested — backups exist but no one has restored from them. Run a quarterly drill on a fresh VPS.
  • Spam wave bypasses filter — open-source backends rarely ship learned classifiers. Add hCaptcha + a honeypot field, or accept periodic noise.
  • TLS cert auto-renewal silently fails — Let's Encrypt rate limits triggered or DNS provider rotated. Monitor cert expiry, not just uptime.
  • Schema migration breaks production — major version upgrades require staging. Don't apt-get upgrade the form server on a Friday.

If any of these feel like work you'd rather not own, the splitforms hosted option exists for exactly that reason — see the docs, API reference, and FAQ for the full feature surface.

FAQ

What is a self-hosted form backend?

A self-hosted form backend is software you run on your own server (FormBricks, OhMyForm, Formie, etc.) that receives HTML form submissions, stores them, and forwards them to email, webhooks, or integrations. You own the infrastructure, the data, and the operational burden.

What's the cheapest self-hosted form backend?

FormBricks (open source, MIT) on a $5/month Hetzner VPS is the cheapest viable setup. Add SES or Postmark for delivery (~$1.50/mo at low volume) and you're under $10 fully loaded — but only if you don't count your time.

When does self-hosting actually save money?

Self-hosting wins on cost above roughly 50,000 submissions/month, when SaaS pricing tiers start charging $50+/month. Below that, your hourly rate makes SaaS strictly cheaper unless you're doing it for learning or sovereignty reasons.

Can I self-host and still get good email deliverability?

Yes, but you have to do the work: dedicated IP, SPF/DKIM/DMARC, IP warmup, bounce handling, FBL registration. Or you outsource it to Postmark/SES/Resend, in which case you're paying SaaS prices for the hardest part anyway.

Why is splitforms not just an open-source self-host?

Because the operational work — deliverability, spam classification, abuse handling, legal compliance, uptime — is most of the value. We open-source the SDKs and integrations, but the backend itself is hosted so you don't have to wake up when AWS SES drops your reputation score.

Next steps

About the author
✻ ✻ ✻

Get your free contact form API key in 60 seconds.

1,000 free form submissions per month. No credit card. No SDK, no PHP, no plugin. Drop one POST endpoint in your form and submissions land in your inbox.

Generate access key →Read the docs
v0.1 · founders pricing locked in · early access open