Powerups  /  Forms

A contact form, without a back end.

The one thing a static site genuinely cannot do for itself is accept a form. Create an endpoint, point your form at it, and enquiries arrive in your inbox and your dashboard.

index.htmlyour site
<form method="post" action="/.well-known/platform/forms/YOUR_KEY">
  <input name="name">
  <input name="email" type="email">
  <textarea name="message"></textarea>
  <button>Send</button>
</form>
That is the integrationno script tag

The action is a path on your own site, not somebody else’s domain. It keeps working when you add a custom domain, and there is no third-party script for a visitor’s browser to load, block or distrust.

After they press send

You choose what the visitor sees.

Option one

Show a message

Write the thank-you in the dashboard and we render it. Nothing else to build, and no half-finished thank-you page sitting in your repository.

Option two

Send them to a page

Give us a URL and we redirect there instead — your own thank-you page, or a booking link somewhere else entirely.

Option three

Handle it yourself

Submit with fetch and ask for JSON. You get the outcome back and can update the page without navigating away.

Where enquiries go

Email and a dashboard, not one or the other.

Email is how you find out. The dashboard is how you find it again three weeks later.

01

Emailed to whoever you pick

Choose anyone with access to the site. Reply-to is set to the sender, so replying in your mail client reaches them directly.

02

Kept until you delete them

Nothing is removed on a timer. An enquiry from last year is still there, because a lead deleted on a schedule is a lead lost.

03

Exportable as CSV

One button, opens cleanly in a spreadsheet. Your data, whenever you want it, in a format nothing else has to be able to read.

04

Never lost quietly

If we cannot store a submission, the visitor is told plainly rather than shown a thank-you page over a message that went nowhere.

Spam

Filtered without a puzzle to solve.

No image grids, no traffic lights, nothing for a real visitor to fail. The checks are invisible: a decoy field bots fill in and people never see, a check that the form was not submitted faster than a human could type, and rate limits per sender.

Anything caught is kept and marked rather than deleted, so a false positive is a click away from your inbox instead of gone forever.

Decoy fieldInvisible to visitors
Submitted implausibly fastFlagged, not dropped
Rate limited per senderYes
CaptchaNot needed

Your visitors’ data

Held for you, in the EU, on your instructions.

Form submissions are personal data belonging to the people who send them. You decide what your form asks; we hold the answers on your behalf, in Germany, and you can export or delete any of it at any time.

The arrangement is set out in our Data Processing Agreement, and what we store is listed in the privacy policy.

Get started

Add a form endpoint in about a minute.

Included on every tier. No separate form service, no monthly fee.