Furrow Forms

Headless CMS · works with Furrow Forms

Contact forms for Contentful sites

Skip the custom-Lambda chore that ships with every Contentful build.

paste this into your agent

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

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

prefer clicking? start in the dashboard

components/ContactForm.tsx
'use client';

export function ContactForm() {
  const loadedAt = Date.now();
  async function submit(formData: FormData) {
    await fetch('https://api.furrowforms.com/s/fp_k7m2', {
      method: 'POST',
      body: formData,
    });
  }

  return (
    <form action={submit}>
      <input type="text" name="_gotcha" style={{ display: 'none' }} tabIndex={-1} />
      <input type="hidden" name="_ft" value={loadedAt} />
      <input name="email" type="email" required />
      <textarea name="message" required />
      <button>Send</button>
    </form>
  );
}

The gap

Why Contentful sites need a form backend

Contentful is deliberate about its boundary: it is a content platform, and form submissions sit outside it. So every Contentful build ends with the same chore — someone writes a serverless function to catch the contact form, bolts on a captcha, wires up an email service, and promises to monitor it. Multiply by every site your team runs. Furrow Forms is that function as a product: one endpoint per form, spam stack on by default, notifications and signed webhooks included, settings inherited across each site.

01

The form handler nobody budgeted for

The build is scoped around content modeling and the frontend — then the contact form needs storage, spam, and email, and a custom function appears in the repo. It works until it quietly doesn’t. Furrow makes it a managed dependency instead.

02

Enterprise stack, per-site glue

Teams pick Contentful to standardize content ops across many properties — then hand-roll a different form handler per site. Furrow’s project-level settings cascade gives forms the same operational story: configure once, inherit everywhere.

03

Compliance wants to know where submissions go

A dedicated backend gives a clean answer: submissions live in Furrow with configurable retention, reach your team by email, and reach your systems by HMAC-signed webhooks you can verify — not in an ad-hoc function’s logs.

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 Contentful 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 per site.
  2. 02Paste the generated snippet into your frontend; delete the custom form Lambda from the backlog.
  3. 03Configure domains, recipients, and webhooks once at the project level.
  4. 04Route submissions onward — CRM, Slack via your own receiver, data warehouse — through signed, retried webhooks.

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

FAQ

Contentful + Furrow Forms, answered

Does Contentful handle form submissions?

No — Contentful is a content platform and deliberately leaves form handling to your stack. The common answers are a custom serverless function or a dedicated form backend. Furrow Forms is the latter: endpoint, spam filtering, storage, notifications, and signed webhooks as a service.

How do teams usually handle contact forms on Contentful sites?

Most write a serverless function per site: validate, filter spam, send email, store somewhere. It is a recurring per-project cost and an unowned service in production. A form backend replaces it with one POST endpoint and project-level settings your whole roster of sites inherits.

Can submissions flow into our existing systems?

Yes — every Furrow delivery is an HMAC-signed webhook with automatic retries (up to 8 attempts over ~24 hours) and a delivery log. Point it at your integration layer and treat submissions like any other verified event stream.

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 →