Skip to content

Getting Started

staticq lets you collect form submissions from any static website. You create a form in the dashboard, get an endpoint URL, and point your HTML form’s action attribute at it. That’s it — no server code, no infrastructure.


Create a form

  1. Sign in to the staticq dashboard.
  2. Click New form (top-right of the overview page, or in the empty-state card if you have no forms yet).
  3. Enter a name for your form (e.g. “Contact form”). The name is for your reference only — visitors never see it.
  4. Click Create.
  5. Your endpoint URL appears in a confirmation banner at the top of the page. Copy it.

The endpoint URL looks like this:

https://api.staticq.app/q/aBcDeFgHiJ

The last part (aBcDeFgHiJ) is a unique, random slug generated for your form. It cannot be guessed or enumerated.


Use the endpoint URL

Point your HTML form’s action attribute at the endpoint URL:

<form action="https://api.staticq.app/q/aBcDeFgHiJ" method="POST">
<label for="email">Email</label>
<input type="email" id="email" name="email" required />
<label for="message">Message</label>
<textarea id="message" name="message" required></textarea>
<button type="submit">Send</button>
</form>

When a visitor submits the form, the data is sent to staticq. You can view submissions in the dashboard, and you’ll receive an email notification by default. You can also add a webhook connector to forward submissions to any URL.

The endpoint accepts standard HTML form encodings (application/x-www-form-urlencoded and multipart/form-data) as well as application/json. Standard HTML forms work without any extra configuration.


Spam protection

Add a hidden honeypot field to catch bots. Real users won’t see or fill it, but bots typically fill every field:

<input type="hidden" name="_honeypot" value="" style="display:none" />

If _honeypot (or _gotcha) has a value when submitted, staticq silently accepts the request but does not store it. Bots cannot tell the difference.


JavaScript submissions

If you prefer to submit via JavaScript instead of a standard form post, set the Accept: application/json header to receive a JSON response instead of a redirect:

const res = await fetch('https://api.staticq.app/q/aBcDeFgHiJ', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Accept: 'application/json',
},
body: JSON.stringify({ email: '[email protected]', message: 'Hello!' }),
});
const data = await res.json();
// { ok: true }

Without the Accept header, the endpoint redirects to a thank-you page (useful for plain HTML forms).


Finding your endpoint URL later

Open any form in the dashboard to see its endpoint URL at the top of the page. Click the Copy button next to it.


Limits

  • Free plan: up to 5 forms and 100 submissions per month (shared across all forms).
  • Rate limits: 60 submissions per form per minute, 10 per IP per minute.

If you hit a limit, you’ll see a clear error message. See the Limits page for full details.


What’s next