Formstork

FRAMEWORK

The form backend for your Vue app

Formstork is the backend that receives your Vue form's POST. Point your submit handler at the Formstork endpoint with your access key, and every submission is emailed to you, saved to a searchable dashboard, and answerable by hitting reply.

How it works

In Vue you already have the form state, so all you need is a submit handler that sends those fields to Formstork. Your handler POSTs the form data to https://api.formstork.com/submit with a hidden access_key field, and Formstork takes it from there. It emails you each submission, sets the visitor's email as the reply-to, and stores the message in a searchable, taggable dashboard. Because it is a plain fetch call, it works the same in a Vite app, Nuxt, or any Vue setup, on the client with no server of your own. You can also drop in @formstork/vue if you would rather not wire the fetch by hand.

vue
<script setup>
import { ref } from "vue";

const sent = ref(false);

async function onSubmit(e) {
  const res = await fetch("https://api.formstork.com/submit", {
    method: "POST",
    headers: { Accept: "application/json" },
    body: new FormData(e.target),
  });
  if (res.ok) sent.value = true;
}
</script>

<template>
  <p v-if="sent">Thanks, we will be in touch.</p>
  <form v-else @submit.prevent="onSubmit">
    <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>
</template>

No backend to build or deploy

Vue runs in the browser, and so does this. There is no Express route, no serverless function, and no server of your own to maintain. Your form POSTs straight to Formstork and you ship a static build.

Every submission, stored and searchable

Beyond the email, each submission is saved to a dashboard you can search, tag, and export to CSV or JSON. Nothing lives only in an inbox, so you never lose a lead to a deleted message.

Spam filtered before it reaches you

A hidden honeypot and a server-side content filter catch junk automatically, and you can switch on Turnstile, hCaptcha, or reCAPTCHA when you want more. Real messages come through clean.

Set it up

  1. 1Create a form in Formstork and copy its access key from the dashboard.
  2. 2In your Vue component, add a submit handler that builds a FormData from the form.
  3. 3POST that data to https://api.formstork.com/submit with the access_key included.
  4. 4Submit once to test. The submission lands in your inbox and your dashboard.

Frequently asked questions

How do I handle form submissions in Vue without a backend?

Add a submit handler to your Vue component that POSTs the form fields to https://api.formstork.com/submit with your access key. Formstork receives the request, emails you the submission, and stores it, so you do not need a server or an API route of your own.

Should I use FormData or JSON?

Either works. FormData is the simplest since you can build it straight from the form element, and it is what you need for file uploads on paid plans. If you prefer, send a JSON body with an application/json content type instead.

Do I have to use the @formstork/vue package?

No. The package is a convenience composable, but a plain fetch call to the endpoint works everywhere and is all you need. Use whichever fits your project.

Try Formstork free

250 submissions a month with a full dashboard. No credit card required.

Get your access keyRead the docs