# FormHaven > EU-hosted form backend. A website's HTML form posts to a FormHaven endpoint; each submission is stored in the EU, spam filtered and emailed to the account owner. For web agencies and freelancers building static or AI-built sites. ## Key facts - Pricing: Solo €6/month (3 forms, 1,000 submissions a month); Agency €19/month (25 forms, 10,000 submissions a month); Agency Pro €49/month (unlimited forms, 50,000 submissions a month). Yearly billing is 10x the monthly price. - Trial: 14 days on the Agency plan, no card needed. No free plan. - Data location: submissions stored in the EU. A data processing agreement applies to every account: https://formhaven.net/legal/dpa - Subprocessors: https://formhaven.net/legal/subprocessors ## Make a form work 1. Create a form (dashboard, REST API or MCP) and take its endpoint, for example https://formhaven.net/f/FORM_ID 2. Set the HTML form's action to that endpoint with method POST. Every input needs a name. 3. Add a hidden input named _gotcha. Bots fill it in; those submissions are kept as spam and not emailed. 4. From JavaScript: POST JSON or form data with "Accept: application/json"; the reply is {"ok": true} or {"ok": false, "message": "..."}. Limits per submission: 50 fields, 5,000 characters per answer, 10 submissions per minute per visitor per form. ## API for agents Authentication: an API key from the dashboard (API keys page), sent as "Authorization: Bearer KEY". - MCP server: https://formhaven.net/mcp (tools: create_form, list_forms, list_submissions) - REST: GET https://formhaven.net/api/v1/forms, POST https://formhaven.net/api/v1/forms {"name": "..."}, GET https://formhaven.net/api/v1/forms/{id}, GET https://formhaven.net/api/v1/forms/{id}/submissions?spam=0&per_page=25 - Errors are JSON with a "message" field. ## Pages - Home: https://formhaven.net - Pricing: https://formhaven.net/pricing - Privacy: https://formhaven.net/legal/privacy - Terms: https://formhaven.net/legal/terms Contact: privacy@formhaven.net