Free plan

50 submissions/month · no credit card · View plans

Documentation

Getting started

Everything you need to start collecting form submissions with formvoxo.

Quick start

1. Create a form in your dashboard

2. Set your form action to the endpoint URL

3. Submit. emails arrive instantly

That's it. No backend to write, no webhooks to configure, no server to maintain. Create your free account →


Embedding a form

Set your form's action attribute to your formvoxo endpoint URL. The token is generated when you create a form in your dashboard.

contact.html
<form
  action="https://app.formvoxo.com/f/YOUR_TOKEN"
  method="POST"
>
  <!-- Always include this hidden honeypot -->
  <input type="text" name="_honey" style="display:none" tabindex="-1">

  <input type="text"  name="name"    required>
  <input type="email" name="email"   required>
  <textarea name="message"></textarea>
  <button type="submit">Send</button>
</form>

Replace YOUR_TOKEN with the unique token from your form's dashboard page.


Reserved fields

These field names are handled specially by formvoxo and are stripped from stored and emailed data.

Field Purpose Required
_honey Honeypot spam trap. Must always be empty. Keep it hidden with CSS. Recommended
_redirect Override the redirect URL for this specific submission (Pro+). Optional
_subject Custom subject line for the notification email. Optional

AJAX / JSON API mode

Send Accept: application/json to receive a JSON response instead of a redirect. Perfect for single-page apps and headless sites.

JavaScript
async function submitForm(data) {
  const res = await fetch(
    'https://app.formvoxo.com/f/YOUR_TOKEN',
    {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Accept':       'application/json',
      },
      body: JSON.stringify(data),
    }
  );

  if (!res.ok) throw new Error('Submission failed');
  return res.json(); // { message: "Submission received." }
}

JSON mode works with any JS framework. React, Vue, Svelte, vanilla JS. No special library needed.


Spam protection

formvoxo has two built-in spam defences. No CAPTCHA friction for real users.

Honeypot field

Add a hidden _honey text input. Bots fill it. Humans don't see it. If it's not empty when submitted, the submission is silently flagged as spam (stored but not emailed).

Per-IP rate limit

Configurable rate limit (default 5 submissions per 10 minutes per IP address). Exceeded requests receive a 429 response.


Custom redirects

By default, successful submissions redirect to /thank-you. Pro+ plans can override this globally per form or per-submission.

<!-- Global redirect: set on the form in your dashboard -->
<!-- Per-submission override: -->
<input type="hidden" name="_redirect"
       value="https://yoursite.com/custom-thank-you">

Domain whitelist

Pro+ plans can restrict which domains can submit to a form. Add domains in your form's settings. Supported patterns:

example.com        # exact match
*.example.com      # any subdomain
localhost           # local development

If no domains are configured, submissions are accepted from any origin.


Error responses

All errors return JSON with a single error key when Accept: application/json is set.

Status Meaning
200 Submission received successfully.
403 Form inactive / domain not allowed / submission limit reached.
404 Token not found (form does not exist).
429 Rate limit exceeded. Too many requests from this IP.

Ready to try it?

Create a form in under 2 minutes. completely free.

Get started free →