← All guides
Formspree

Formspree alternative with data stored in the EU

Switch from Formspree: new form action, a hidden access_key field, legacy fields like _replyto or _subject renamed if used. Data stored in the EU (Frankfurt).

If your visitors or clients are in Europe, sooner or later your privacy policy has to say where form submissions end up. Formspree's privacy policy says it "will use your information in the United States and any other country where Formspree operates" (checked 20 October 2026). Formlane works the same way, with one endpoint for your HTML form, but stores the submissions in a database in Frankfurt.

Steps

  1. Sign in to Formlane, create a form and copy its access key (fl_…).
  2. Change your form's action to https://smallwerk.com/formlane/api/submit and add a hidden access_key input.
  3. Keep email, subject and _gotcha. Rename the legacy fields _replyto to email, _subject to subject and _next to redirect.
  4. Publish and send a test. Keep the Formspree form until the first real submission has arrived in Formlane.

Code

Before: Formspree
<form action="https://formspree.io/f/YOUR_FORM_ID" method="POST">
  <label for="cf-email">Email</label>
  <input id="cf-email" type="email" name="email" required>
  <label for="cf-message">Message</label>
  <textarea id="cf-message" name="message" required></textarea>
  <input type="text" name="_gotcha" style="display:none" tabindex="-1">
  <button type="submit">Send</button>
</form>
After: Formlane
<form action="https://smallwerk.com/formlane/api/submit" method="POST">
  <input type="hidden" name="access_key" value="fl_YOUR_ACCESS_KEY">
  <input type="hidden" name="redirect" value="https://example.com/thanks">
  <label for="cf-email">Email</label>
  <input id="cf-email" type="email" name="email" required>
  <label for="cf-message">Message</label>
  <textarea id="cf-message" name="message" required></textarea>
  <input type="text" name="_gotcha" style="display:none" tabindex="-1">
  <button type="submit">Send</button>
</form>
fetch() / AJAX
const res = await fetch("https://smallwerk.com/formlane/api/submit", {
  method: "POST",
  headers: { "Content-Type": "application/json", Accept: "application/json" },
  body: JSON.stringify({ access_key: "fl_YOUR_ACCESS_KEY", email, message }),
});
const json = await res.json();
// Formspree: res.ok + json.ok   →   Formlane: res.ok + json.success
if (json.success) showThanks(); else showError(json.message);

Formspree Free vs. Formlane Free

Formspree values from formspree.io/plans, checked 21 October 2026.

Formspree FreeFormlane Free
Submissions per month50250
How long submissions are kept30-day archiveuntil you delete them (deleting your account deletes them)
Exportpaid plans (from Personal)CSV export included
Your own thank-you pagepaid plans (from Personal)included (redirect field)
Spam protectionFormshield filter, reCAPTCHAhoneypot, rate limit, content rules, no captcha
Email notification per submissionyesincluded
File uploadspaid plans (from Personal)not yet
Autoresponsespaid plans (from Professional)not yet
Integrations / webhooksplugins by plannot yet
Where submissions are storedprivacy policy: "the United States and any other country where Formspree operates"database in Frankfurt (EU)
First paid planPersonal: $15/month billed monthly, 200 submissionsStarter: $8/month, 2,500 submissions

Be honest about what you need: if you rely on file uploads, autoresponses or integrations, stay with Formspree for now. If you need a contact form that keeps its data in the EU and doesn't run out at 50 submissions, Formlane covers that today.

Field mapping

FormspreeFormlane
action="https://formspree.io/f/…"action="https://smallwerk.com/formlane/api/submit" + hidden access_key
email (reply-to)email (also replyto, reply_to)
subjectsubject
_gotcha (honeypot)_gotcha, botcheck or _honey
thank-you page in the form settingshidden redirect field (absolute URL) or a default redirect in the form settings
legacy _replyto / _subject / _nextemail / subject / redirect
Accept: application/jsonsame; check success instead of ok

Spam protection without a captcha

  • Honeypot: if a hidden honeypot field is filled in, Formlane returns a normal success response and stores nothing.
  • Rate limit: 10 submissions per 10 minutes per visitor and form.
  • Content rules: 4 or more links, link markup or typical spam phrases move a submission to a separate spam tab. Spam doesn't count toward your monthly limit.
  • Allowed domains: restrict each form to your own domains.

What "data stored in the EU" means here

Submissions are stored in a Supabase database in Frankfurt (region eu-central-1). The app runs on Vercel with compute in Frankfurt; static assets and the edge network are global, and Vercel and Supabase are US companies. All providers are listed in the privacy policy. Formlane is run by Mindcaptain Services OÜ in Tallinn, Estonia. A data processing agreement is included in the Terms (Art. 28 GDPR, smallwerk.com/dpa), and IP hashes are deleted after 30 days.

So we don't call it "100% EU". It does mean the submissions themselves sit in a database in Frankfurt.

FAQ

Is Formlane free?

Yes. The free plan includes 250 submissions a month and up to 5 forms, with a "Powered by Formlane" link on the hosted thank-you page. Starter costs $8/month for 2,500 submissions, Pro $19/month for 25,000.

Do I have to change my field names?

Mostly not. email, subject and the _gotcha honeypot work as they are. Only the legacy fields _replyto, _subject and _next need renaming, to email, subject and redirect.

Will I still get an email for each submission?

Yes. Every submission that isn't flagged as spam is emailed to you, with reply-to set to the sender's address. It is also in your Formlane dashboard and can be exported as CSV. Keep your Formspree form running until you're happy with the switch.

Can I import my old Formspree submissions?

Not yet. Export them from Formspree first (export is part of Formspree's paid plans) and keep the file.

Does Formlane support file uploads, autoresponses or integrations?

Not yet. If you need those today, Formspree's paid plans have them.

What about GDPR?

Whether your form meets the GDPR depends on your whole setup, your privacy policy and your contracts, so we don't claim it. What Formlane does: it stores the submissions in a database in Frankfurt (EU), the DPA is included in the Terms (Art. 28 GDPR), and IP hashes are deleted after 30 days.

Get your access key

Free for 250 submissions a month. Data stored in the EU (Frankfurt).

Get your access key