Formcarry

formcarry.com

YES

Replaceable in one session with an AI coding agent.

A form endpoint for static sites: point an HTML form at their URL and submissions arrive in an inbox, with spam filtering, file uploads and forwarding into other tools.

Promptfree, for everyone, and the only version there is
Build me a form endpoint that replaces Formcarry: my static site posts to it, the submission arrives, and the spam does not.

STACK
- Node 20+ with Fastify
- SQLite through better-sqlite3, WAL mode
- No client-side framework — this must work from a plain HTML form with no JavaScript at all
- Caddy in front

THE DATA MODEL
- forms: id, uid, name, target_emails_json, redirect_url, allowed_origins_json, is_active, created_at
- submissions: id, form_id, payload_json, spam_score, spam_reasons_json, status, ip_hash, referrer, user_agent_bucket, country, created_at
- files: id, submission_id, field, path, sha256, mime_detected, bytes, scan_status
- deliveries: id, submission_id, target_kind, target, status, attempts, response_excerpt, at
- blocklist: id, kind, value, reason, added_at
- Every submission stored, including the ones judged spam. A false positive that was silently dropped is a customer you never knew wrote to you

THE ENDPOINT
- POST to /f/:uid as form-encoded or multipart, exactly as a browser sends it
- Answers with a redirect to the form's thank-you page, or JSON if the request asked for it. Both paths must work
- Origin checked against the form's allow-list; a submission from elsewhere is refused and recorded
- Reserved fields for the redirect, the subject and the reply-to address, all validated

SPAM, WHICH IS THE ENTIRE PRODUCT AFTER WEEK ONE
- A honeypot field, documented, that a real form includes hidden and a bot fills in
- A minimum time between the page rendering and the form arriving, carried in a signed token. Bots post instantly
- Rate limits per address hash, per form and globally
- Content signals scored rather than judged: link count, all-capitals, a body that is a URL, a missing referrer, a user agent that is a library
- A score with reasons attached and a threshold per form. Above it the submission is held for review, never discarded
- Optional third-party checking, off by default, with the README saying plainly that turning it on sends the submission text to somebody else

FILES
- Multipart streamed to disk with a hard byte limit enforced as it arrives, never buffered whole
- Type from the file's own content, not the filename; an allow-list per form, not a block-list
- EXIF stripped from images, including the location a phone photograph carries
- Stored by hash outside the web root and served through a signed expiring link in the notification email — never attached, because attachments are what get the notification marked as spam

DELIVERY
- Email with the fields laid out readably and the reply-to set to the submitter, so replying works — which is what people actually want
- Webhook with an HMAC signature, retried with backoff, idempotent by submission id
- A daily digest option instead of one email per submission
- Send from your own domain with SPF, DKIM and DMARC configured; the From address is yours and the submitter's is only ever the reply-to

OPERATIONS
- .env: DATABASE_PATH, STORAGE_PATH, BASE_URL, SMTP_URL, FROM_ADDRESS, SESSION_SECRET, HASH_SALT, SIGNING_SECRET
- Migrations on boot, each once; nightly backup off the machine, restore script
- Health endpoint that checks the mail connection

WHAT MATTERS MOST
Spam scoring with reasons, and never dropping anything. Build the honeypot, the timing token and the review queue first, then leave a form public for a fortnight and read what arrives.

What you lose

  • Spam filtering tuned against traffic from thousands of sites, which is most of the value once a form has been public for a month
  • File upload storage with the size limits and scanning already handled
  • An endpoint that stays up without you, so a contact form does not go down with your server
  • Integrations into spreadsheets, chat and automation tools you did not write

If you would rather not build

  • A twenty-line handler on any server you already run, which is where most people start
  • A honeypot plus a timing token, which stops most of it before any scoring

The escape hatch

open source · no votes, no paid placement

Formbricks

$0

Open-source surveys and forms with a self-hosted option.

formbricks/formbricksfree · open source

OhMyForm

$0

A self-hosted form builder and endpoint.

ohmyform/ohmyformfree · open source

Why this verdict

our own opinion · changed only by a person

87/100

Verdict yes at 87: an endpoint, a table and an email. The spam defences are the whole build, and the entry names the three that do almost all of the work.

History

tracked since 14 Aug 2026 · nothing is ever overwritten

Interest · last 30 dayspeak 3/day
views012317 Jul22 Jul27 Jul1 Aug6 Aug11 Aug15 Aug
views prompt copies none yet votes none yet

Questions about Formcarry

answered from the record above

Is Formcarry free?

No — the plan we track is $15 a month. Basic at $15/month billed monthly for a fixed number of submissions; a free tier covers a handful.

Can you replace Formcarry by building your own?

YES. Replaceable in one session with an AI coding agent. Replacement score 87 out of 100, build time one session. Read what you lose before you decide.

How much does Formcarry cost?

$15 a month on Basic — $180 a year. Recorded 14 Aug 2026.

What do you lose by replacing Formcarry?

Spam filtering tuned against traffic from thousands of sites, which is most of the value once a form has been public for a month; File upload storage with the size limits and scanning already handled; An endpoint that stays up without you, so a contact form does not go down with your server; Integrations into spreadsheets, chat and automation tools you did not write. If any of those carry weight for you, keep paying.

Is there an open-source alternative to Formcarry?

Yes: Formbricks, OhMyForm. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 19 in Forms

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc