Forms that blend right in
The easy form builder that saves every response and sends it straight to your inbox. All data is stored in the EU.
How it works
- 1
Build the form
Add fields in the form builder and choose which ones are required.
- 2
Connect your site
Your developer connects the form API to your Next.js, Nuxt or React site with one API key. The form renders with your own fonts, buttons and fields, so it matches your site exactly. This is a one-time job.
- 3
Get every response
Each response is saved and sent to your inbox or a Slack channel. Reply to the email, and it goes straight to the customer.
Form builder and form backend in one
Looks Like Your Site
The form renders with your own React or Vue components, your design system and your translations. No iframe and no third-party script on your page.
Edit Forms Yourself
Add a field or change a label in the dashboard. With the setup from our docs, your site shows the change within a minute. No ticket, no deploy.
Never Miss a Response
Each response is saved before the email notification goes out. When an email fails, it is sent again automatically.
One Inbox for the Team
Your team sees every response in the dashboard and in Slack. Export to CSV at any time.
Spam Protection Built In
Each submission is checked before it is saved. Your visitors never see a captcha.
Your Data Stays in the EU
Responses are stored in Frankfurt and emails are sent from the EU. Delete forms and responses whenever you want.
A form API for your developer
A small REST API with two endpoints: one reads the form, one posts a submission. JSON in, JSON out, no SDK to install. The docs have guides for Next.js, Nuxt and GraphCommerce.
- Validation errors per field, ready to show under each input.
- Server-to-server with a secret key. No CORS, no public token.
- Older builds of your site keep working after you change a form.
The complete API
GET /api/v1/forms/{formId}
{ "name": "Contact",
"fields": [
{ "id": "email", "type": "email",
"label": "Email address", "required": true },
{ "id": "message", "type": "textarea",
"label": "Message", "required": false }
] }
POST /api/v1/forms/{formId}/entries
Authorization: Bearer sk_live_…
{ "values": { "email": "anna@example.com", "message": "…" } }
201 CreatedSimple pricing
Per month, including VAT. Paid plans start with a 14-day free trial. Cancel at any time.
Basic
2215EUR /month
For a business site with a few forms.
- 5 forms
- Unlimited responses
- 5 GB file storage
- 5 team members
Pro
3222EUR /month
For shops and teams with many forms.
- Unlimited forms
- Unlimited responses
- 20 GB file storage
- Unlimited team members
Frequently asked questions
What is a headless form builder?
You build the form in a dashboard. Your site reads the fields from an API and renders them with its own components, so the form matches your design. sendplane.app saves each submission and sends it to your inbox.
Which sites does sendplane.app work with?
Any website or webshop with React, Vue or a framework such as Next.js, Nuxt, Remix, Astro or GraphCommerce. The API call runs on a server with your secret key. A React or Vue app that runs only in the browser needs one server function for that call, such as a Vercel or Netlify function.
How much developer work is it?
Two API calls: one reads the form, one posts the response. The docs have ready-to-use examples for Next.js, Nuxt and GraphCommerce.
What happens when I change a form?
With the setup from our docs, your site shows the new fields within a minute. Each response keeps the labels it was sent with.
Can I move my existing forms?
Yes. The import copies your forms and all their responses, with the original dates.
Is sendplane.app free?
Yes, for two forms and 100 responses per month, with no credit card. Paid plans start with a 14-day free trial.
Can I cancel at any time?
Yes, on the billing page. Your plan runs until the end of the paid period. Then your account moves to the Free plan.
Start with your first form
Log in with your email address, no password needed. Build the form and send the API key to your developer.
Start for free