Overview
Understand what Formlander ships with and how to plug it into your stack.
Why Formlander exists
Section titled “Why Formlander exists”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.
Core capabilities
Section titled “Core capabilities”| Feature | What it does | Why it matters |
|---|---|---|
| Forms & tokens | Create forms via the dashboard or API. Each form has a slug + secret token. | Map any HTML form (static/Jamstack) to a secure endpoint. |
| Submissions | Accept 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. |
| Deliveries | Configure a per-form delivery profile. Webhooks and SMTP/Mailgun emails queue with retries. | Forward submissions to the rest of your workflow asynchronously. |
| Dashboard | Polished, HTMX-powered UI for reviewing submissions, copying embed snippets, and exporting data. | No SPA build step, just responsive interactions. |
| Exports | Download CSV or JSON per form. | Keep snapshots or sync with other systems manually. |
Request flow
Section titled “Request flow”HTML form ──► Formlander API ──► SQLite (submissions) │ ├──► Webhook dispatcher (async, retry) ├──► SMTP / Mailgun email forwarding └──► Dashboard & exportsThe 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.
Snippet quick start
Section titled “Snippet quick start”<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.
Licensing & support
Section titled “Licensing & support”- Formlander is open source.
- Current version: v1.0.0 (stable release)
- Source code: github.com/karloscodes/formlander
- Contributions welcome via pull requests and issues
Next steps
Section titled “Next steps”- Read the Deployment guide to run Formlander on your server.
- Pull the Docker image or download binaries from GitHub Releases.
- Generate a form in the dashboard, test submissions from your static site, and wire deliveries (webhooks, SMTP, or Mailgun) when you’re ready.