Lead capture forms
Point any form on your website at KruxCRM. Plain HTML or JSON, with built-in spam protection.
The idea
Your website keeps its own form — KruxCRM gives it somewhere useful to go. Create a form under Settings → Lead forms, point your form's submit at the endpoint URL, and every submission becomes a tagged lead (or an update to an existing contact) with the message on their timeline.
Plain HTML — no JavaScript needed
<form action="https://kruxcrm.com/api/forms/YOUR_FORM_TOKEN" method="POST">
<input type="email" name="email" required placeholder="Email">
<input type="text" name="name" placeholder="Name">
<input type="tel" name="phone" placeholder="Phone (optional)">
<input type="text" name="address" placeholder="Address (optional)">
<textarea name="message"></textarea>
<!-- honeypot: keep hidden, leave empty -->
<input type="text" name="_gotcha" style="display:none" tabindex="-1">
<!-- optional: your own thank-you page -->
<input type="hidden" name="_redirect" value="https://yoursite.com/thanks">
<button type="submit">Send</button>
</form>
Or JSON
await fetch("https://kruxcrm.com/api/forms/YOUR_FORM_TOKEN", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ email, name, message, _gotcha: "" })
});
// => { "ok": true }
Fields
email is required. Optional: name (or first_name / last_name), phone, company, job_title, address, interest (a "reaching out as…" choice, prepended to the message), and message (shown on the contact's timeline).
Spam protection, built in
- Domain allowlist — submissions are only accepted from the website domains you list on the form.
- Honeypot — bots that fill the hidden _gotcha field are silently dropped.
- Rate limiting — bursts from a single visitor are rejected.
- Deduplication — a known email updates the existing contact instead of creating duplicates; existing data is never overwritten.
Pause a form anytime — its endpoint immediately stops accepting.