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
- Sign in to the staticq dashboard.
- Click New form (top-right of the overview page, or in the empty-state card if you have no forms yet).
- Enter a name for your form (e.g. “Contact form”). The name is for your reference only — visitors never see it.
- Click Create.
- You will see a confirmation screen with your endpoint URL. Copy it.
The endpoint URL looks like this:
https://api.staticq.app/q/aBcDeFgHiJThe 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', },})
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