Skip to content

Overview

Understand what Formlander ships with and how to plug it into your stack.

Static and serverless sites still need a place to receive contact forms, hiring funnels, and feedback widgets. Most solutions hand that data to a SaaS. Formlander keeps the entire pipeline under your control with a self-hosted appliance:

  • One binary, written in Go, backed by SQLite, and shipped as a Docker image.
  • Complete ownership: deploy once, handle unlimited submissions without vendor lock-in.
  • Asynchronous deliveries that you own: webhooks, SMTP & Mailgun email forwarding, and exports.
  • Zero external dependencies at runtime—no hosted DB, queue, or cache.
  • Open source: Available on GitHub.
FeatureWhat it doesWhy it matters
Forms & tokensCreate forms via the dashboard or API. Each form has a slug + secret token.Map any HTML form (static/Jamstack) to a secure endpoint.
SubmissionsAccept application/x-www-form-urlencoded or JSON payloads. Rate limiting and Turnstile captcha support included.Keep bots out and store the payload as canonical JSON.
DeliveriesConfigure a per-form delivery profile. Webhooks and SMTP/Mailgun emails queue with retries.Forward submissions to the rest of your workflow asynchronously.
DashboardPolished, HTMX-powered UI for reviewing submissions, copying embed snippets, and exporting data.No SPA build step, just responsive interactions.
ExportsDownload CSV or JSON per form.Keep snapshots or sync with other systems manually.
HTML form ──► Formlander API ──► SQLite (submissions)
├──► Webhook dispatcher (async, retry)
├──► SMTP / Mailgun email forwarding
└──► Dashboard & exports

The submission endpoint lives at:

POST https://<your-host>/forms/<slug>/submit?token=<secret>

The equivalent JSON API lives at /x/api/v1/submissions and accepts the form slug + token in the body.

<form action="https://formlander.example/forms/contact/submit?token=abc123" method="post">
<label>
Name
<input type="text" name="name" required />
</label>
<label>
Email
<input type="email" name="email" required />
</label>
<label>
Message
<textarea name="message" rows="4"></textarea>
</label>
<button type="submit">Send</button>
</form>

Add or remove fields freely; everything is stored as JSON.

  • Formlander is open source.
  • Current version: v1.0.0 (stable release)
  • Source code: github.com/karloscodes/formlander
  • Contributions welcome via pull requests and issues
  1. Read the Deployment guide to run Formlander on your server.
  2. Pull the Docker image or download binaries from GitHub Releases.
  3. Generate a form in the dashboard, test submissions from your static site, and wire deliveries (webhooks, SMTP, or Mailgun) when you’re ready.