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.
Platform CMS · works with Furrow Forms
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
<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
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.
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.
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.
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
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.free tier: 100 subs/mo · unlimited forms · full API + MCP · pricing →
FAQ
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.
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.
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.
paste this into your agent
Fetch furrowforms.com/ai and set up forms for this site.