Vlozi Forms is fully compatible with plain HTML <form> tags. No JavaScript, no SDK, no build step — just point your form's action at your form's endpoint.
Basic example
<form action="https://api.vlozi.app/forms/f/YOUR_FORM_ID" method="POST">
<label>
Email
<input type="email" name="email" required />
</label>
<label>
Message
<textarea name="message" required></textarea>
</label>
<!-- Spam protection: always include this hidden honeypot field -->
<input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off" />
<!-- Redirect after success (important for plain HTML — see below) -->
<input type="hidden" name="redirect" value="https://yoursite.com/thank-you" />
<button type="submit">Send</button>
</form>The redirect field
Without a redirect field (or a form-level redirect URL), the browser displays the raw JSON response after submission. Always set one for a plain HTML form:
<!-- Option A: per-submission redirect field -->
<input type="hidden" name="redirect" value="https://yoursite.com/thank-you" />
<!-- Option B: configure at form level in the dashboard (Settings → Redirect URL) -->The redirect field takes priority over the form-level redirectUrl setting.
File uploads
Plain HTML forms can also upload files — just set enctype="multipart/form-data":
<form
action="https://api.vlozi.app/forms/f/YOUR_FORM_ID"
method="POST"
enctype="multipart/form-data"
>
<input type="email" name="email" required />
<input type="file" name="resume" accept=".pdf,.doc,.docx" />
<input type="checkbox" name="botcheck" style="display:none" tabindex="-1" autocomplete="off" />
<input type="hidden" name="redirect" value="https://yoursite.com/thank-you" />
<button type="submit">Send</button>
</form>Limits: up to 5 files per submission, 25 MB each.
Reserved field names
These field names are consumed by the service and are not stored in the submission:
| Field | Purpose |
|---|---|
botcheck (or your custom honeypot field name) |
Spam trap — always include as a hidden checkbox |
cf-turnstile-response |
Turnstile CAPTCHA token (auto-added by the Turnstile widget) |
redirect |
303-redirect destination on success |
access_key |
Ignored — Vlozi uses the URL form_id instead |
Adding custom fields
Any name attribute not in the reserved list above is stored verbatim:
<input type="text" name="company" placeholder="Company (optional)" />
<input type="tel" name="phone" placeholder="Phone" />
<select name="budget">
<option value="">Select budget</option>
<option value="under-10k">Under $10k</option>
<option value="10k-50k">$10k – $50k</option>
<option value="over-50k">Over $50k</option>
</select>TIP
If you define fields in your form's schema (dashboard → Forms → your form → Fields), the service validates submitted values against those field definitions. Without a schema, any field is accepted — this is the Web3Forms-parity mode.
Web3Forms migration
Switching from Web3Forms? Change the action URL and remove the access_key field — everything else stays the same:
- <form action="https://api.web3forms.com/submit" method="POST">
- <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
+ <form action="https://api.vlozi.app/forms/f/YOUR_FORM_ID" method="POST">
<input type="email" name="email" required />
<textarea name="message" required></textarea>
<button type="submit">Submit</button>
</form>