Formstork

FRAMEWORK

Add a form backend to your Qwik app

Formstork receives submissions from any Qwik form, emails you each one, and keeps every message in a searchable dashboard. Your component$ POSTs the form data from an onSubmit$ handler, and there is no server or API route to build.

How it works

A Qwik component renders your form in the browser and, thanks to resumability, wires up the onSubmit$ handler without shipping much JavaScript up front. But the framework still has no place to send the submission on its own. Formstork is the backend that receives the POST. Your onSubmit$ handler builds a FormData and sends it 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. Because the request is a plain fetch(), it works the same in a standalone Qwik app or a Qwik City project, with nothing to deploy on your side. Turn on spam filtering, an integration like Slack or Google Sheets, or an autoresponder whenever you need them.

tsx
import { component$, useSignal } from "@builder.io/qwik";

export default component$(() => {
  const status = useSignal("idle");

  return (
    <form
      preventdefault:submit
      onSubmit$={async (event, form) => {
        status.value = "sending";
        const res = await fetch("https://api.formstork.com/submit", {
          method: "POST",
          body: new FormData(form),
        });
        status.value = res.ok ? "sent" : "error";
      }}
    >
      <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" disabled={status.value === "sending"}>
        {status.value === "sent" ? "Thanks!" : "Send"}
      </button>
    </form>
  );
});

No API route to build

Your Qwik app stays frontend-only. The onSubmit$ handler POSTs straight to Formstork with a plain fetch(), so there is no server, serverless function, or Qwik City routeAction$ to write, deploy, or keep alive.

Reply straight from your inbox

Every submission emails you with the visitor's address set as the reply-to, so you hit reply and it reaches the person who wrote in. Every message is also stored in a searchable, taggable dashboard you can export to CSV or JSON.

Spam handled for you

A hidden honeypot, a server-side content filter, and optional Turnstile, hCaptcha, or reCAPTCHA keep bots out before they ever email you. Flagged submissions are filtered out before they reach you, so your Qwik form needs no anti-spam logic of its own.

Set it up

  1. 1Build your form as a Qwik component with the fields you need (name, email, message), or start from Formstork's hosted no-code form builder.
  2. 2Add a hidden input named access_key, then in an onSubmit$ handler build a FormData from the form and fetch() it to https://api.formstork.com/submit.
  3. 3Submit once to test. The submission lands in your inbox and your Formstork dashboard, with the visitor's email set as the reply-to.
  4. 4Optional: track res.ok in a useSignal to show a success state, and connect an integration like Slack or Google Sheets in the dashboard.

Frequently asked questions

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

Send the form data with a fetch() POST from an onSubmit$ handler to a Formstork endpoint and include your access key. Formstork is the backend: it receives the submission, emails it to you, and stores it in a searchable dashboard. There is no server or API route to build.

Do I need a routeAction$ or server endpoint?

No. Formstork is the backend that receives the POST, so a client-side fetch() inside onSubmit$ is enough. If you prefer Qwik City's routeAction$, you can call the same endpoint from the server, but it is optional.

Is it free?

Yes, the free plan includes 250 submissions a month with a full dashboard and 90-day retention. Paid plans add more volume, forever retention, autoresponders, and file uploads or attachments.

Try Formstork free

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

Get your access keyRead the docs