Furrow Forms

Hosts & site builders · works with Furrow Forms

Contact forms for Cloudflare Pages

Skip the DIY Pages Function — Turnstile support is already built in.

paste this into your agent

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

agent-readable recipe: /forms-for/cloudflare-pages.md

prefer clicking? start in the dashboard

contact.html
<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>
  <div class="cf-turnstile" data-sitekey="0x4AAA…"></div>
  <button>Send</button>
</form>

The gap

Why Cloudflare Pages sites need a form backend

Cloudflare Pages serves static sites brilliantly and offers no form handling of its own. The documented DIY route — write a Pages Function, validate a Turnstile token, call an email API, add your own storage and rate limiting — is a genuinely educational afternoon that then becomes production code you own. Furrow Forms is that stack as a service, and it speaks Cloudflare’s language: Turnstile is Furrow’s first-class captcha, configured once with your project’s keys and inherited by every form. Your Pages deployment stays purely static; the form just works.

01

The Pages Function you’d rather not own

Form handling as custom Worker code means validation, spam, email, and storage are now your uptime problem. Furrow packages them behind one endpoint with a delivery log.

02

You’re already in the Turnstile ecosystem

Furrow supports Cloudflare Turnstile natively — project-level keys, widget included in generated snippets. The spam stack matches the platform you chose.

03

Email from Workers is its own project

Reliable notification email means wiring and monitoring a third-party mail API. Furrow sends notifications with template tokens on every tier, no provider account needed.

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 Cloudflare Pages 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; add your Turnstile keys to it if you use the widget.
  2. 02Paste the snippet — your Pages project needs no Functions directory.
  3. 03Set your pages.dev and custom domains on the allowlist, plus notify emails.
  4. 04Deploy. Static files on Cloudflare, form handling on Furrow.

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

FAQ

Cloudflare Pages + Furrow Forms, answered

How do I add a contact form to a Cloudflare Pages site?

Point a plain HTML form at a Furrow Forms endpoint — no Pages Function required. Furrow filters spam (including native Cloudflare Turnstile verification with your project’s keys), stores the submission, emails you, and redirects the visitor.

Can’t I just write a Pages Function for this?

You can — Cloudflare even documents the pattern. But the Function needs spam logic, an email provider, storage, and rate limiting, and then it needs maintaining. A form backend collapses all of it into an endpoint with delivery guarantees.

Does Furrow work with Cloudflare Turnstile?

Yes — Turnstile is Furrow’s built-in captcha. Set the site and secret keys once at the project level; every form under the project verifies tokens automatically, and generated snippets include the widget markup.

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 →