Furrow Forms

Headless CMS · works with Furrow Forms

Contact forms for Directus sites

Your database deserves better than an anonymous-write collection.

paste this into your agent

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

agent-readable recipe: /forms-for/directus.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 Directus sites need a form backend

Directus turns your SQL database into an API — so the tempting contact-form recipe is obvious: make a submissions collection, grant the public role create access, done. Except now anonymous internet traffic writes directly into the database that runs your project, and the spam cleanup happens in the same Data Studio your team works in. Furrow Forms keeps that write path external: the form POSTs to Furrow, spam dies there, and verified submissions can flow back into Directus through a signed webhook — authenticated, on your terms.

01

Anonymous writes to the database of record

The public-create recipe points bots at the same SQL database your application depends on. Growth, junk rows, and cleanup are now database-administration problems. Furrow absorbs the raw traffic and stores submissions on its side.

02

Rate limiting and abuse are on you

Self-hosted Directus means you tune the throttles and eat the traffic. Furrow ships per-IP, per-form rate limits, honeypot, Turnstile, and domain allowlisting — on by default, configured once per project.

03

Flows deserve verified input

If you automate on submissions with Directus Flows, feed them from Furrow’s HMAC-signed webhook rather than an open collection — you can verify every payload’s signature and timestamp before acting on it.

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 Directus 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 schema changes, no public permissions.
  2. 02Paste the snippet into your frontend.
  3. 03Set domains, notify emails, and (optionally) a webhook pointing at a Directus Flow or your own endpoint.
  4. 04Verify the webhook signature server-side and write clean submissions into Directus with an authenticated token, if you want them there.

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

FAQ

Directus + Furrow Forms, answered

How do I add a contact form to a Directus project?

Point the form at a Furrow Forms endpoint instead of granting public create access on a collection. Furrow handles spam, storage, and notifications; if you want submissions inside Directus, consume the signed webhook and insert them with an authenticated call.

What’s risky about a public-create collection in Directus?

It routes unauthenticated internet traffic straight into your SQL database: spam rows beside real data, storage growth, and cleanup inside the Data Studio your team uses daily. It is fine for a prototype; for production, a dedicated form backend keeps that surface off your database.

Can Furrow trigger my Directus Flows?

Yes — point the project webhook at a Flow’s webhook trigger (or any endpoint you run). Payloads are HMAC-SHA256 signed with a timestamp header, retried with backoff up to 8 attempts, and logged, so your automation acts only on verified submissions.

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 →