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. You will see a confirmation screen with your endpoint URL. 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 application/x-www-form-urlencoded, multipart/form-data, and application/json content types. Standard HTML forms use the first two automatically.


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) contains a value, the submission is silently accepted but not stored. Bots can’t tell the difference.


AJAX submissions

If you prefer to submit via JavaScript (e.g. fetch), 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

All of your forms and their endpoint URLs are listed on the dashboard overview page. Each row has a Copy button next to the URL.


Limits

  • Free plan: up to 5 forms per account, 100 submissions per form per month.
  • Rate limit: you can create up to 10 forms per hour. Submissions are limited to 60 per form per minute and 10 per IP per minute.

If you hit a limit, the API returns a clear error response. See the Limits page for full details.


What’s next

  • Email Notifications — configure email alerts for new submissions
  • Connectors — forward submissions to webhooks, Zapier, Slack, and more
  • Limits — submission limits, rate limits, and plan comparison