Furrow Forms

Frameworks & SSGs · works with Furrow Forms

Contact forms for Eleventy sites

Keep 11ty’s plain-HTML purity — the form backend is one attribute.

paste this into your agent

Fetch furrowforms.com/ai and set up a contact form backend for my Eleventy site.

agent-readable recipe: /forms-for/eleventy.md

prefer clicking? start in the dashboard

_includes/contact-form.njk
<form action="https://api.furrowforms.com/s/fp_k7m2" method="POST">
  <input type="text" name="_gotcha" style="display:none" tabindex="-1" />
  <input type="hidden" name="_ft" value="" />
  <script>document.currentScript.previousElementSibling.value = Date.now();</script>
  <input name="name" type="text" required />
  <input name="email" type="email" required />
  <textarea name="message" required></textarea>
  <button>Send</button>
</form>

The gap

Why Eleventy sites need a form backend

Eleventy people choose 11ty because it gets out of the way: templates in, plain HTML out, deploy anywhere. A contact form is where that purity usually cracks — suddenly the tutorials say “add a serverless function,” and your dependency-light site acquires a runtime. Furrow Forms keeps the crack sealed: the form is ordinary markup in a Nunjucks or Liquid include, the action attribute is the entire integration, and spam filtering, storage, notifications, and the thank-you redirect happen on Furrow’s side.

01

No functions folder required

The whole point of 11ty is not running infrastructure. One action attribute keeps it that way — no functions, no environment variables, no cold starts.

02

Works on every host 11ty works on

GitHub Pages, Cloudflare, Netlify, S3 — the form POSTs to Furrow regardless, so your hosting choice stays a pure price/preference decision.

03

Spam handled before it reaches you

Honeypot, optional Turnstile, domain allowlisting, and rate limits are project-level defaults. Rejected posts are never stored and never count.

Two ways in

Set it up yourself, or don’t

Hand it to your agent

[ recommended ]

Furrow’s whole control plane is an API and MCP server. Paste this prompt into Claude Code, Cursor, or any agent — it does the rest:

paste this into your agent

Fetch furrowforms.com/ai and set up a contact form backend for my Eleventy site.
  1. 1.Registers the account over POST /api/register — you read one 6-digit email code
  2. 2.Provisions the site: client, project, and forms in one idempotent bootstrap_site call
  3. 3.Pastes the generated snippet into your codebase
  4. 4.Fires test_webhook and verifies the signed delivery

Or do it by hand

  1. 01Create a free account and a project for the site.
  2. 02Add the include to your contact page template.
  3. 03Set your domain, notify email, and thank-you URL once on the project.
  4. 04Build and deploy — output is still 100% static HTML.

free tier: 100 subs/mo · unlimited forms · full API + MCP · pricing →

FAQ

Eleventy + Furrow Forms, answered

How do I add a contact form to an Eleventy site?

Put a plain HTML form in a template with its action pointed at a Furrow Forms endpoint. No serverless function or client JavaScript needed — Furrow receives the POST, filters spam, emails you, and redirects the visitor.

Do I need Netlify or a specific host for this to work?

No — that is the point. The form backend is host-independent, so the same markup works on GitHub Pages, Cloudflare, Netlify, or a plain web server, and keeps working if you move.

Can I get submissions anywhere besides email?

Yes: the dashboard, the API, and HMAC-signed webhooks with automatic retries. Point the webhook at any endpoint to pipe submissions into your own tools.

The form backend your agent can run.

paste this into your agent

Fetch furrowforms.com/ai and set up forms for this site.

Setup for agents →