FRAMEWORK
The form backend for your Svelte app
Formstork is the backend that receives your Svelte form's POST. Your component sends its fields to a Formstork endpoint with your access key, and Formstork emails you each submission, sets the visitor's email as the reply-to, and saves it to a searchable dashboard.
How it works
Svelte is a frontend framework, so it renders your form but has no server of its own to receive the submission. Formstork is that server. You point your form at https://api.formstork.com/submit, include a hidden access_key field or POST it from an on:submit handler with fetch, and Formstork takes it from there. Every submission is emailed to you, stored in a searchable, taggable dashboard, and screened by spam filtering before it reaches you. From there you can forward it to Slack, Discord, Notion, Google Sheets, or a signed webhook, all without running a backend yourself.
<script>
let status = "";
async function handleSubmit(event) {
const res = await fetch("https://api.formstork.com/submit", {
method: "POST",
headers: { Accept: "application/json" },
body: new FormData(event.currentTarget),
});
status = res.ok ? "Thanks, we got your message." : "Something went wrong.";
}
</script>
<form on:submit|preventDefault={handleSubmit}>
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
<input type="email" name="email" placeholder="Your email" required />
<textarea name="message" placeholder="Your message" required></textarea>
<button type="submit">Send</button>
</form>
{#if status}<p>{status}</p>{/if}No backend to build
Svelte handles the UI, Formstork handles the POST. You skip writing a server, an email sender, and a database, and your form works from a static host or a SvelteKit adapter all the same.
SvelteKit or plain Svelte, either way
Because it is a single POST to an endpoint, the same setup works in a Vite Svelte SPA, a SvelteKit route, or a fully static build. There is no server-side code or environment to configure.
Email, dashboard, and integrations
Each submission is emailed to you with the visitor's address as reply-to, saved to a searchable dashboard, and screened for spam. From there route it to Slack, Notion, Google Sheets, or a signed webhook without extra code.
Set it up
- 1Create a form in the Formstork dashboard and copy its access key. No credit card is needed on the free plan.
- 2In your Svelte component, POST the form fields to https://api.formstork.com/submit with fetch, sending the access_key as a field.
- 3Submit the form once. Check that the email arrives and the submission shows up in your dashboard.
- 4Optionally add spam protection like Turnstile, an autoresponder, or an integration such as Slack or a signed webhook.
Frequently asked questions
How do I handle form submissions in Svelte without a backend?
Point your form at Formstork. In an on:submit handler, POST the form fields to https://api.formstork.com/submit with your access_key using fetch. Formstork receives the submission, emails it to you, and stores it, so you never write server code.
Does it work with SvelteKit?
Yes. Formstork is just an HTTP endpoint, so it works from a SvelteKit route, a client-side form, or a static adapter build. You do not need SvelteKit server endpoints or form actions unless you want them.
Is there a free plan?
Yes. The free plan includes 250 submissions per month, email delivery, spam filtering, integrations, CSV and JSON export, and 90-day retention, with no credit card. Paid plans add forever retention, autoresponders, and file uploads.
Try Formstork free
250 submissions a month with a full dashboard. No credit card required.
Get your access keyRead the docs