Forms — live in the EU

Forms that never leave Europe.

Point any HTML form at deploybase — we store, filter, and email every submission from EU infrastructure. No server of your own, no US spam service in the loop.

The 30-second setup

One action URL. That's the integration.

Swap in your form ID and ship. It works from any site — CORS is open — form-encoded or as JSON over AJAX.

<form action="https://api.deploybase.eu/f/your-form-id" method="POST">
  <input type="email" name="email" />
  <input type="text" name="_gotcha" style="display:none" tabindex="-1" autocomplete="off" />
  <button>Send</button>
</form>
  • Any site. Static, SSR, or JS-rendered — it's a stable runtime endpoint, not build-time HTML parsing, so the form doesn't have to exist in your built HTML.
  • Form-encoded or JSON. Send Accept: application/json and you get {"ok": true} back for a clean AJAX flow. Otherwise we issue a 303 redirect to your _next URL — or our hosted thank-you page when you haven't set one.
  • Formspree-compatible reserved fields. Migration is a URL swap: keep your markup, change the action.
_gotcha honeypot — leave it hidden and empty
_replyto sets the Reply-To on the email we send you
_subject sets the notification subject line
_next where to send the visitor after a submit

Spam without surveillance

We filter bots, not your visitors.

Five layers, named plainly. Spam is quarantined, never dropped — one click marks it "not spam", and a bot always sees a normal success response. No Akismet, no reCAPTCHA, no US spam services, no CAPTCHA hoops for the people filling in your form.

  1. Configurable honeypot

    A hidden field bots fill in and humans never see. Named per form, so scrapers can't learn it. A hit looks like success to the bot and lands in quarantine to you.

  2. Origin allow-list

    Pin a form to the domains it should be submitted from. Off by default — CORS stays open so the endpoint works from anywhere — on when you want it.

  3. Per-IP rate limit

    The only hard refusal on the page. One address firing far faster than a human can type gets turned away at the door. Everyone else passes.

  4. Flood quarantine

    When a form is buried under a burst, the burst is set aside — not discarded. A real lead caught in a flood is never lost, just held for your review.

  5. Duplicate absorption

    A double-clicked submit or a retrying script collapses into one submission, so your inbox isn't a hall of mirrors.

Raw IP addresses are never stored or logged — truncated (185.12.x.x) or nothing at all, your choice per form. Retention is yours to set: keep forever, or auto-purge after 30, 90, or 365 days. Data-subject requests run through an erasure API with an audit trail. Every submission is stored in the EU, in Paris.

The honest gap

What it doesn't do yet — stated plainly.

  • No file uploads yet. Accepting files means malware scanning, and we won't half-ship that. Text submissions today; uploads when we can do them safely.
  • No outbound webhooks or Slack yet. They're coming — signed webhooks are on the roadmap. For now, notifications arrive by email.
  • No autoresponders. Sending mail on your behalf to whoever fills in a form is a spam-relay risk, and we'd rather not be that open relay.

On quotas: we count verified submissions, spam never counts, and going over pauses your notifications — never your site, and never with a surprise bill.

Where your data lives

deploybase vs Netlify Forms vs Formspree

Netlify and Formspree are good products. The axis here is one thing: where your form data physically sits.

FeaturedeploybaseNetlify FormsFormspree
Form data residencyEU (Paris)US (no EU region)US (AWS)
Included free100 submissions/moFree on credit plans50 submissions/mo
Spam filteringHoneypot + rate limits, no CAPTCHAAkismet + optional reCAPTCHAHoneypot + reCAPTCHA + classifier
Works with SSR / JS-rendered formsYesBuild-time HTML parsing (SSR needs workarounds)Yes
Retention auto-purgeYes (30 / 90 / 365d)Manual delete
Erasure API + audit trailYes
File uploadsNot yetYesPaid plans

Facts checked July 2026. “—” means not offered.

Straight answers

Common questions

Is this a GDPR-compliant form backend?

Submissions are stored and processed in the EU (Scaleway, Paris) — no US sub-processors in the path. Raw IP addresses are never stored or logged: you choose truncated (185.12.x.x) or nothing at all, per form. Set retention to keep forever or auto-purge after 30, 90, or 365 days, and handle data-subject requests through an erasure API that leaves an audit trail. It's built to sit inside a GDPR-compliant setup rather than around one.

Is deploybase a European alternative to Netlify Forms?

Yes. Netlify Forms and Formspree both store form data on US infrastructure. deploybase keeps every submission in the EU (Paris) and filters spam without Akismet, reCAPTCHA, or any US spam service. If your form data needs to stay in Europe, that's the difference. On features like file uploads Netlify does more today — we're honest about the gap.

Can I handle forms on a static site without a backend?

That's exactly the case it's built for. Point any HTML form's action at https://api.deploybase.eu/f/your-form-id and we store, filter, and email each submission — no server of your own, no serverless glue. It works from a static site, an SSR page, or a JS-rendered form, because it's a stable runtime endpoint, not build-time HTML parsing.

How do you stop spam without reCAPTCHA?

In layers, none of which put a puzzle in front of your visitors: a per-form configurable honeypot, an optional origin allow-list, a per-IP rate limit (the one hard refusal), flood quarantine, and duplicate absorption. Suspected spam is quarantined, never dropped — you get one-click 'not spam' in the dashboard, and a bot always sees a normal success response. No Akismet, no reCAPTCHA, no CAPTCHA hoops.

Can I migrate from Formspree?

Usually it's a one-line change. Our reserved fields — _gotcha, _replyto, _subject, _next — match Formspree's, so swap the form's action URL for your deploybase endpoint and existing markup keeps working. Form-encoded and JSON/AJAX submissions are both supported; send Accept: application/json and you get {"ok": true} back.

What happens if I go over my submission quota?

We count verified submissions; spam never counts against you. Going over pauses notifications until the next cycle — it never pauses your site, and it never bills you a surprise overage. The form keeps accepting and storing submissions; you just stop getting the emails until the next cycle starts — or sooner, if you move up a plan.

Give your forms an EU home.

Point a form at deploybase and read the first submission in your inbox — filtered, stored in Paris, and never routed through a US service.