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
- Sign in to Formlane, create a form and copy its access key (
fl_…). - Change your form's
actiontohttps://smallwerk.com/formlane/api/submitand add a hiddenaccess_keyinput. - Keep
email,subjectand_gotcha. Rename the legacy fields_replytotoemail,_subjecttosubjectand_nexttoredirect. - Publish and send a test. Keep the Formspree form until the first real submission has arrived in Formlane.
Code
<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>
<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>
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 Free | Formlane Free | |
|---|---|---|
| Submissions per month | 50 | 250 |
| How long submissions are kept | 30-day archive | until you delete them (deleting your account deletes them) |
| Export | paid plans (from Personal) | CSV export included |
| Your own thank-you page | paid plans (from Personal) | included (redirect field) |
| Spam protection | Formshield filter, reCAPTCHA | honeypot, rate limit, content rules, no captcha |
| Email notification per submission | yes | included |
| File uploads | paid plans (from Personal) | not yet |
| Autoresponses | paid plans (from Professional) | not yet |
| Integrations / webhooks | plugins by plan | not yet |
| Where submissions are stored | privacy policy: "the United States and any other country where Formspree operates" | database in Frankfurt (EU) |
| First paid plan | Personal: $15/month billed monthly, 200 submissions | Starter: $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
| Formspree | Formlane |
|---|---|
action="https://formspree.io/f/…" | action="https://smallwerk.com/formlane/api/submit" + hidden access_key |
email (reply-to) | email (also replyto, reply_to) |
subject | subject |
_gotcha (honeypot) | _gotcha, botcheck or _honey |
| thank-you page in the form settings | hidden redirect field (absolute URL) or a default redirect in the form settings |
legacy _replyto / _subject / _next | email / subject / redirect |
Accept: application/json | same; 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.
Related guides
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