Migrate from Formspree
If you are currently using Formspree, migrating to Formward typically requires changing a single line in your HTML. Formward's special fields use the same names as Formspree's, so most forms work immediately without further changes.
Step 1: Create a form in the dashboard
Log in to Formward and click New form. Set the notification email. Copy the form ID from the settings page.
Step 2: Swap the action URL
Find the line in your HTML that looks like this:
<form action="https://formspree.io/f/<your-id>" method="POST">Replace it with your Formward endpoint:
<form action="https://forms.formward.eu/f/<formId>" method="POST">That is the only required change for most forms.
Compatible special fields
Formward recognises the same special field names that Formspree uses, so you do not need to rename any hidden fields:
| Field | Works in Formward? | Notes |
|---|---|---|
| _redirect | Yes | Must be a relative path or an absolute URL from an allowed origin. Arbitrary external URLs are rejected by an open-redirect guard. |
| _subject | Yes | Sets the notification email subject |
| _replyto | Yes | Also accepted as _reply_to |
| _gotcha | Yes | Honeypot - same behaviour |
AJAX / fetch usage
If you are using fetch() with Accept: application/json, no changes are needed beyond the URL. Formward returns { ok: true, id } on success, the same shape as Formspree's { ok: true }. Your existing error handling will continue to work.
Why switch to Formward?
- EU data residency: All submission data is stored in Sweden on infrastructure operated by Hostup AB. No data leaves the European Union.
- GDPR-clean by design: IP addresses are stored as one-way hashes only. Raw IPs are never written to disk.
- AI features on Pro: Automatic spam scoring, submission summaries, lead scoring, and plain-English routing, all running on EU infrastructure (Mistral, France).
- Open infrastructure: Authentication runs on your own instance of better-auth. Credentials are not transmitted to third-party identity providers.
Checklist
- Create a form in the dashboard and note the form ID.
- Replace
action="https://formspree.io/f/..."withaction="https://forms.formward.eu/f/<formId>". - Add your site's origin to the form's allowed origins list to prevent cross-origin spam.
- Submit a test form entry and confirm it appears in the dashboard.
- Remove the Formspree integration from your project once confirmed.