Forms land in your inbox.
Point any HTML form at EasyForms and we route the submission to your email — rendered by EasyRender — and to a webhook with HMAC and retries. No more cobbling together Zapier flows.
Free plan includes 100 submissions/mo, no card required.
<form action="https://easyfrm.dev/f/Crp6zkfAJV" method="POST"> <input name="email" type="email" required> <input name="message" required> <!-- honeypot, ignored if filled --> <input name="_url" style="display:none"> <button>Send</button> </form> # We POST a webhook too: { "id":"sub_…", "data":{ "email":"…", "message":"…" } }
Built for real teams.
Six things every form backend should do well. We focus on those, and only those.
Email out of the box
A clean HTML template by default. Bring your own EasyRender template per form for full custom branding.
Webhooks with retries
HMAC-SHA256 signature header. Exponential retries 1m → 5m → 30m → 2h → 12h. Delivery log per attempt.
Spam-resistant
Honeypot field, per-IP rate limiting, hCaptcha verification, declared field schema with type validation.
Handlebars everywhere
Subject templates, webhook payloads, derived fields and conditional rules. Same engine your EasyRender templates use.
Scoped API keys
Account keys manage everything. Form-scoped keys can read and submit a single form — perfect for sharing with a partner.
Self-hostable
Single Bun process, SQLite, S3-compatible storage for uploads. One docker compose up and you are running.
From form to inbox in 90 ms.
Receive
POST /f/<id> accepts JSON, urlencoded or multipart. CORS-aware. Honeypot + rate-limit are checked before storage.
Transform
Validate against your declared schema, compute derived fields, evaluate conditional rules — all in Handlebars.
Three plans, one job.
All plans include API + dashboard + email + webhook. Differences are quotas and Pro-only extras.
- 5 000 submissions/mo
- 20 forms
- 3 recipients/form
- 180-day retention
- hCaptcha · CSV export
- File uploads up to 2 MB
- 50 000 submissions/mo
- 200 forms · 10 recipients
- 730-day retention
- File uploads up to 25 MB (S3)
- Custom branding
A small REST API.
Authenticate with a Bearer key. Everything you do in the dashboard is also available programmatically.
curl -X POST https://easyfrm.dev/api/v1/forms \
-H 'Authorization: Bearer ef_...' \
-H 'content-type: application/json' \
-d '{
"name": "Contact",
"config": {
"recipients": ["me@example.com"],
"honeypotField": "_url"
}
}'<form action="https://easyfrm.dev/f/Crp6zkfAJV"
method="POST">
<input name="email" type="email" required>
<input name="message" required>
<button>Send</button>
</form>Stop wiring forms manually.
Free plan, no card. Cancel by deleting your account.