Welcome to Formtorch

Every project needs a contact form. Whether you're shipping a portfolio site, a SaaS landing page, or a documentation site, at some point you need to accept input from a visitor.
The problem is that handling form submissions correctly is more work than it looks. You need to store submissions, send email notifications, handle CORS for static sites, rate-limit bots, and filter spam — before you've written a single line of your actual product.
Formtorch solves this with a single hosted endpoint. Point your form at it, and submissions land in your dashboard.
What ships today
A public form endpoint
Every form you create gets a unique endpoint at formtorch.com/f/{formId}. Point any HTML form at it:
<form action="https://formtorch.com/f/abc123" method="POST">
<input name="name" placeholder="Your name" required />
<input name="email" type="email" placeholder="Your email" required />
<textarea name="message" placeholder="Message" required></textarea>
<button type="submit">Send</button>
</form>Your endpoint URL is shown in your dashboard immediately after you create a form. No setup step required.
No backend code. No API key in your frontend. No CORS configuration needed.
Works with any framework
Formtorch accepts standard HTML form submissions and JSON payloads, so it works with Next.js, Astro, Vue, and plain HTML.
// React / Next.js — fetch with FormData
async function handleSubmit(e: React.FormEvent<HTMLFormElement>) {
e.preventDefault();
const data = new FormData(e.currentTarget);
await fetch("https://formtorch.com/f/abc123", {
method: "POST",
body: data,
});
}---
// Astro — pure HTML, no JS required
---
<form action="https://formtorch.com/f/abc123" method="POST">
<input name="name" placeholder="Your name" />
<input name="email" type="email" placeholder="Your email" />
<button type="submit">Send</button>
</form>TorchWarden spam protection
Every submission is automatically scored across five signals. Submissions above the threshold are stored but excluded from email notifications and quota counts.
| Signal | What it detects |
|---|---|
| Keyword patterns | Common spam phrases and link-spam |
| Honeypot traps | Bots that fill hidden fields humans never see |
| Duplicate detection | Repeated identical submissions via Redis |
| Rate limiting | Per-IP and per-form submission caps |
| Behavioral signals | Suspiciously fast or bot-like form fills |
TorchWarden is on by default for all forms. You can toggle it per form in Form Settings → Spam Protection.
Email notifications
When a submission arrives, Formtorch sends you an email. You can add verified recipients in your form settings — each address is confirmed before it starts receiving notifications.
Notification emails skip spam submissions and test submissions (_test=true).
Check your spam settings if you're not seeing expected emails.
How to set up your first form
Create a project and form
Sign in to your dashboard, click New Project, then New Form inside it. Give it a name — the endpoint URL is generated immediately.
Copy the endpoint URL
Your endpoint looks like https://formtorch.com/f/abc123. Copy it from the
form overview page.
Add it to your HTML or code
Point your form's action attribute at the endpoint, or use it in a fetch
call. That's it — no other configuration needed.
Verify your notification email
Go to Form Settings → Notifications, add your email address, and confirm it via the verification email. You'll receive a notification for each new submission.
What Formtorch includes vs. what it doesn't
Included on the free plan:
- Unlimited projects and forms
- 100 submissions per month
- Email notifications to verified recipients
- TorchWarden spam protection
- CSV export
- Dashboard with search and filtering
Not included:
- Webhooks (coming soon)
- File upload storage (attachments received but not stored long-term)
- Custom domain for the endpoint URL
What's next
We're shipping webhooks, integrations, and a public docs site. Follow along in the changelog.