Furrow Forms

Platform CMS · works with Furrow Forms

Contact forms for Craft CMS sites

For headless Craft frontends and installs that want to stay lean.

paste this into your agent

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

agent-readable recipe: /forms-for/craft-cms.md

prefer clicking? start in the dashboard

templates/contact.twig
<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 Craft CMS sites need a form backend

Craft doesn’t ship native front-end forms; its ecosystem answers with mature commercial plugins — Freeform, Formie — that render through Twig and store submissions in your Craft install. For a conventional Craft site with complex form needs, they’re the right tool. Furrow Forms targets the other cases: headless Craft, where a Next or Astro frontend consumes GraphQL and Twig-rendered forms don’t exist; simple sites where a contact form doesn’t justify a plugin license and its updates; and agencies who want submissions handled the same way across Craft and non-Craft projects alike.

01

Headless Craft has no Twig to render forms

When the frontend is Next, Nuxt, or Astro over Craft’s GraphQL API, plugin form tags never run. A Furrow endpoint gives the JS frontend a proper form backend rather than a hand-rolled controller.

02

A contact form shouldn’t require a plugin license

For one enquiry form, a commercial plugin plus its per-site license and update cycle is a lot of machinery. A plain form action and a free Furrow project covers it.

03

Submissions in the CMS database, again

Plugin submissions live in your Craft database — spam included, unless you configure captchas per plugin per site. Furrow keeps that traffic external and delivers verified submissions by signed webhook if you want them back.

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 Craft CMS 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 form to your Twig template or headless frontend — no plugin install.
  3. 03Set domain, recipients, and webhook once at the project level.
  4. 04For headless builds: submit via fetch() and read the JSON response for inline success states.

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

FAQ

Craft CMS + Furrow Forms, answered

How do I add a contact form to a headless Craft site?

Your JS frontend can’t use Twig-rendered plugin forms, so point a plain form at a Furrow Forms endpoint. Furrow filters spam, stores the submission, emails your team, and can deliver a signed webhook to any endpoint — including one that writes back into Craft.

Is Furrow a replacement for Freeform or Formie?

Only sometimes. Those plugins are excellent for editor-managed, complex forms on conventional Craft sites. Furrow replaces them when the frontend is headless, the form is simple, or you want form infrastructure that spans non-Craft sites too.

Can submissions still reach my Craft install?

Yes — subscribe an endpoint (a small Craft controller or serverless function) to Furrow’s HMAC-signed webhook and create entries with Craft’s APIs. You get signature verification, automatic retries, and a delivery log on the way in.

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 →