Furrow Forms

Visual CMS · works with Furrow Forms

Contact forms for Storyblok sites

One form component, droppable into any page your editors compose.

paste this into your agent

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

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

prefer clicking? start in the dashboard

components/ContactForm.vue
<script setup>
const loadedAt = Date.now();
defineProps({ blok: Object });
</script>

<template>
  <form v-editable="blok" 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="loadedAt" />
    <input name="name" type="text" required />
    <input name="email" type="email" required />
    <textarea name="message" required></textarea>
    <button>{{ blok.button_label }}</button>
  </form>
</template>

The gap

Why Storyblok sites need a form backend

Storyblok’s promise is that marketers compose pages from components while developers keep a clean headless stack. Forms are the component that breaks the spell: the visual editor can place one anywhere, but something still has to receive the POST, stop the spam, and tell the client an enquiry arrived. Furrow Forms is that something. Build the form component once, point it at a Furrow endpoint, and every page your editors assemble — on every site you run — has working forms with settings managed in one place.

01

Editors place forms; developers own what happens next

A form block in the component library means forms appear on pages you didn’t plan. With the endpoint, spam stack, and recipients configured at the project level, every placement just works — no per-page wiring.

02

Agency rosters multiply everything

Storyblok is an agency favorite, and every client site needs the same form plumbing. Furrow mirrors your structure: clients → projects → forms, with security and routing inherited — rotate a key or change a recipient once per site.

03

Headless means nobody catches the POST

Your Nuxt or Next frontend is static or edge-rendered; there is no server waiting for form submissions. Furrow is the always-on endpoint, with honeypot, Turnstile, domain allowlisting, and rate limits on by default.

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 Storyblok 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, a client, and a project per site (agencies: one workspace runs the whole roster).
  2. 02Build the form component once and point it at the form’s endpoint.
  3. 03Configure domains, notify emails, and webhooks at the project level — every form inherits.
  4. 04Editors drop the block wherever they need it; submissions route correctly without another deploy.

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

FAQ

Storyblok + Furrow Forms, answered

How do I add a contact form to a Storyblok site?

Create a form component in your frontend (Nuxt, Next, Astro) that POSTs to a Furrow Forms endpoint, and register it in your Storyblok component library. Editors can then place it on any page; Furrow handles spam, storage, notifications, and signed webhooks.

Can editors change where form submissions go?

Recipients and webhooks live in Furrow at the project level, so routing changes are one settings update — by a developer, or by an AI agent over Furrow’s API — and apply instantly to every form on the site, with no redeploy of the frontend.

We run many Storyblok client sites — how does that scale?

Furrow’s hierarchy is built for it: clients contain projects (one per website), and settings cascade from project to forms. One $199/yr workspace covers unlimited clients, projects, and forms, and an agent can provision a new client site in a single bootstrap_site call.

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 →