The agentic
form backend
for static sites._
One CLI for AI agents. One dashboard for everyone else. Both write to the same endpoint. No SDK to learn, no server to host, no copy-pasting form IDs from a dashboard.
- ✓ 100 submissions for $10
- ✓ Spam doesn't cost a credit
- ✓ Credits never expire
# 1. install + log in (browser pops, you click Authorize)
$ npx formsubmit-cli login
✓ Token saved to ~/.formsubmit/config.json
# 2. create a form, get HTML to paste
$ npx formsubmit-cli init --name "Contact"
✓ Form created: 7ab4aa9a
<form action="…/f/7ab4aa9a" method="POST">
<input name="email" required>
<button>Submit</button>
</form>
# 3. watch submissions flow in
$ npx formsubmit-cli submissions list 7ab4aa9a --json
[
"email": "[email protected]",
"createdAt": 1779352656010
]npm i -g formsubmit-cliDesigned for the agentic era of the web.
Every operation is a single shell command. --json on every read. Stable exit codes. Errors on stderr. No SDK, no copy-pasting form IDs.
- ▸ Browser device-code login No API key paste-shenanigans.
formsubmit loginopens a browser and you click Authorize. - ▸ JSON output on every read
forms list --json | jqworks. Stable shapes. Agents don't get surprised. - ▸ Works in Claude Code, Cursor, Bolt, v0, Replit Anything that can run a shell command can ship a form backend with one tool call.
- ▸ /llms.txt &
/.well-known/formsubmit.jsonDiscovery files so vibecoding tools surface us without you doing anything.
# 1. ensure auth + credits, abort with a helpful hint otherwise
formsubmit whoami --json || formsubmit login
CREDITS=$(formsubmit credits --json | jq -r .availableCredits)
[ "$CREDITS" -le 0 ] && { echo "run: formsubmit credits buy"; exit 2; }
# 2. create the form and capture its endpoint
FORM_JSON=$(formsubmit forms create --name "Contact" --json)
FORM_ID=$(echo "$FORM_JSON" | jq -r .id)
ENDPOINT=$(echo "$FORM_JSON" | jq -r .endpoint)
# 3. drop the snippet into the user's site
formsubmit snippet "$FORM_ID" --fields name,email,message > contact.html
echo "✓ form ready at $ENDPOINT"
echo " view: formsubmit submissions list $FORM_ID"Or just paste an HTML form and forget about it.
You don't have to know what a CLI is. Create a form in the dashboard, paste the HTML snippet into your site, get an email when someone fills it out. Done.
- ▸ Real-time inbox Submissions land in a dashboard with search, CSV export, and spam filtering you don't have to think about.
- ▸ Email on every submission Optional per-form. Flip a switch, get the inbound straight to your inbox.
- ▸ File uploads, redirects, custom thank-you pages Everything you'd want from a form backend without standing one up.
- ▸ Pay only for submissions you receive 100 credits = 100 submissions = $10. Credits never expire. No subscription.
Loved the workshop — can we book another?
Need help integrating with our static Next site.
Pricing question — annual discount?
Demo request from the homepage form.
<form action="https://app.formsubmit.site/f/abc123" method="POST">
<input name="name" required>
<input name="email" type="email" required>
<textarea name="message"></textarea>
<button>Submit</button>
</form>Six primitives. Nothing else to learn.
FormSubmit is intentionally small. Every feature listed below is shipped, documented, and reachable from both the CLI and the dashboard.
One URL, any HTML form.
Point your <form action> at our endpoint. We capture the POST, store the data, optionally email you. No JS required.
Created from the terminal.
Vibe coders + agents skip the dashboard entirely. `npx formsubmit-cli init` returns a form ID and a snippet.
Inbox for everyone else.
Search submissions, export CSV, see who submitted what when. No SQL required.
Notifications per form.
Flip a switch — get an email at your account address on every non-spam submission. Costs +1 credit per email.
Attachments to R2.
Submissions with file uploads land in cloud storage with signed URLs. 1 GB free, scale as you go.
Heuristics, not friction.
Rate-limit + duplicate detection + content scoring. We flag spam without making your users solve puzzles.
One credit. One submission.
$0.10 to start._
No monthly plans. No tiers locked behind sales calls. Buy credits when you need them, pay less per submission as you grow. Credits never expire.
formsubmit credits buy opens the checkout in your browser and the CLI waits until the credits land — exit 0 once they do.Pick your surface. Same backend either way.
Spin up a form in the terminal, or click through the dashboard. Both write to the same database, both bill from the same credit pool.
Questions, mostly answered.
How does FormSubmit work? +
What's the difference between the CLI and the dashboard? +
--json output. The dashboard is for everyone else — sign up at app.formsubmit.site, click around. Both write to the same database.How much does it cost? +
Do you work with my static site framework? +
How much does it cost to get started? +
How does the CLI authenticate? +
formsubmit login opens a browser to authorize the CLI via a device-code flow (same pattern as gh auth login). The CLI stores a Bearer token at ~/.formsubmit/config.json with mode 0600. You can also paste a token via --token for headless / CI use.Can my AI agent use FormSubmit? +
What about spam? +
Where is the data stored? +
Still stuck? Email [email protected].
Latest writing.

Maximizing Savings with FormSubmit’s Credit-Based Pricing
Learn how FormSubmit’s credit-based pricing helps you save on form management costs by paying only for what you use.

How FormSubmit Enhances User Experience on Your Website
Learn how using a form backend like FormSubmit can improve user experience on your website, from fast form submissions to secure data handling.

Why Every Small Business Needs a Simple Form Backend Solution
Discover how a form backend solution like FormSubmit can simplify form handling, reduce costs, and save time for small businesses.