Furrow Forms

Headless CMS · works with Furrow Forms

Contact forms for Strapi sites

Skip the public create-permission recipe — your CMS stays read-only.

paste this into your agent

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

agent-readable recipe: /forms-for/strapi.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>
  <button>Send</button>
</form>

The gap

Why Strapi sites need a form backend

The standard Strapi contact-form tutorial goes: create a "submission" content-type, grant the public role create permission, configure the email plugin, and hope the spam stays manageable. That recipe turns your CMS — the thing running your content — into an unauthenticated write target. Furrow Forms replaces the whole chain with one POST endpoint: submissions stored elsewhere, spam filtered before it counts, notifications delivered, and a signed webhook if you do want the data back in your own pipeline.

01

Public create permission is a standing invitation

An open create endpoint on your Strapi instance will be found and hammered. Now your admin panel fills with junk entries, and your database and your content share fate with a bot wave. Furrow absorbs that traffic on its own infrastructure.

02

The email plugin is another thing to run

Provider credentials, templates, failure handling — per environment, per site. Furrow sends notification emails with template tokens on every tier, no plugin configuration.

03

Your Strapi server is precious; bots aren’t

Self-hosting Strapi means every form POST is compute you pay for and traffic you defend. Rate limiting, honeypot, Turnstile, and domain allowlisting are Furrow defaults — configured once per project, inherited by every form.

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 Strapi 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 — no changes to your Strapi instance.
  2. 02Paste the snippet into whichever frontend your Strapi feeds.
  3. 03Set domains, notify emails, and an optional webhook once on the project.
  4. 04Want submissions in Strapi anyway? Receive the signed webhook server-side and create the entry with an authenticated call — no public permission needed.

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

FAQ

Strapi + Furrow Forms, answered

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

Point the form in your frontend at a Furrow Forms endpoint instead of opening a public create permission on Strapi. Furrow stores the submission, filters spam, and emails your team; your Strapi API stays read-only to anonymous visitors.

What’s wrong with a public create permission on a Strapi content-type?

It exposes your production CMS to unauthenticated writes: spam entries in the admin panel, database growth you didn’t plan, and your content infrastructure absorbing bot traffic. It works — the tutorials exist for a reason — but a dedicated form backend keeps that risk off the system your site depends on.

Can I still get submissions into Strapi?

Yes, the safe way around: subscribe your server to Furrow’s signed webhook and create entries with an authenticated API token. You get HMAC signatures to verify, automatic retries with backoff if your endpoint is down, and a delivery log — instead of a public write hole.

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 →