Furrow Forms

Frameworks & SSGs · works with Furrow Forms

Contact forms for Astro sites

Zero-JS forms for the zero-JS framework — Astro snippets generated natively.

paste this into your agent

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

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

prefer clicking? start in the dashboard

src/components/ContactForm.astro
---
const endpoint = 'https://api.furrowforms.com/s/fp_k7m2';
---
<form action={endpoint} method="POST">
  <input type="text" name="_gotcha" style="display:none" tabindex="-1" />
  <input type="hidden" name="_ft" value="" />
  <script is:inline>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 Astro sites need a form backend

Astro’s bet is that most of your site doesn’t need JavaScript — and with the right form backend, neither does your contact form. A plain <form> with its action pointed at Furrow Forms works from a fully static Astro build: the visitor POSTs, Furrow filters spam and stores the submission, and the browser follows a redirect to your thank-you page. No island, no hydration, no API route. Furrow generates Astro snippets natively from your form’s field contract, honeypot and Turnstile included — and if you’d rather stay in the terminal, your agent can provision the whole thing over MCP.

01

No API route, no adapter required

A contact form shouldn’t be the reason a static Astro site grows a server. The form POSTs cross-origin to Furrow; your build output stays plain files on any host.

02

Ship zero JavaScript — or one island, your call

The classic POST works with no client JS at all. Prefer an inline success state? Make the form an island and fetch() the same endpoint — the JSON response is { ok, id }.

03

First-class snippets, not adapted ones

get_snippet emits .astro component code directly — field contract, honeypot, and the Turnstile widget when your project requires it. Paste and commit.

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 Astro 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 (or paste the prompt above into your agent).
  2. 02Copy the generated Astro snippet into src/components and drop it on a page.
  3. 03Set your domain, notify emails, and thank-you URL once on the project.
  4. 04Build and deploy anywhere — the output is still fully static.

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

FAQ

Astro + Furrow Forms, answered

How do I add a contact form to an Astro site?

Add a form component whose action points at a Furrow Forms endpoint. No API route, adapter, or client JavaScript is needed — the browser POSTs directly to Furrow, which filters spam, stores the submission, emails you, and redirects the visitor to your thank-you page.

Do I need SSR or an Astro adapter for forms?

No. The form works from a fully static build because the backend is external. That keeps your deploy target flexible — GitHub Pages, Cloudflare, Netlify, or a plain file server all behave identically.

Can I show a success message without a page redirect?

Yes — submit with fetch() from a small client-side script or framework island, and Furrow returns { "ok": true, "id": "sub_…" } as JSON. The redirect behavior is only for classic HTML POSTs.

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 →