Lead capture
Lead capture form for static sites.
Qualify serious inquiries from a static marketing site without adding a server. FormsFort receives accepted submissions and delivers them; your CRM remains the system of record.
Start a lead capture formAsk for the context that makes a lead actionable.
A short contact form tells a sales team who wrote in. A useful qualification form also asks what the project can spend, when it needs to start, which company is involved, and what outcome is in scope. Make those choices concrete with ranges such as under $10,000, $10,000–$25,000, or $50,000+, and timelines such as within 30 days or still researching.
Keep source or campaign attribution as a structured field instead of asking someone to type it into a message. An explicit consent checkbox records permission for follow-up. Only ask for information that changes routing or the next conversation; optional fields should stay optional.
- Budget and timeline ranges let a team prioritize without pretending they are a quote.
- Company, scope, and work email give a first reply enough context to be useful.
- Source and campaign values preserve acquisition context for downstream reporting.
- Consent should be a clear, required choice with nearby explanatory text.
Use native validation, then layer on abuse controls.
The example uses labels, matching id and for attributes, native email and required validation, a scope length range, autocomplete hints, and a fieldset legend. The browser catches obvious omissions, but server-side validation still decides which submission is accepted; never treat HTML constraints as a security boundary.
FormsFort's honeypot, allowed-domain rules, and rate limits help reduce automated traffic before it becomes a sales notification. Test the botcheck field with your deployed form and add a challenge provider only when your threat model requires one. Hosted production does not include a managed shared CAPTCHA, so document any external challenge and its privacy impact separately.
- Return a useful error state and preserve entered values when client-side validation fails.
- Reject unexpected field names, oversized values, and malformed email addresses server-side.
- Use an allowed domain policy and rate limits before promoting a campaign.
- Test one valid, one incomplete, and one honeypot submission from the deployed origin.
Route the accepted lead without making FormsFort your CRM.
FormsFort can send the accepted submission by email, autoresponder, or webhook. Forward structured fields to the CRM or automation receiver that owns deduplication, pipeline stages, lead scoring, enrichment, and opportunity reporting. Keep private CRM credentials and enrichment logic out of browser markup.
Start with the lead-capture preset in the related resources below if you want a generated baseline, then adapt the fields to the questions your team can actually answer. The inquiry form template is a shorter alternative when budget qualification would add friction.
Implementation
From form markup to delivery.
Choose qualification questions
Select budget, timeline, company, scope, source, and consent fields that map to a real sales handoff.
Generate and wire the markup
Use the lead-capture preset or standard HTML, point the form at the FormsFort endpoint, and add the access key.
Validate and harden the public form
Exercise native and server-side validation, configure the honeypot, allowed domains, and rate limits, then test from the deployed origin.
Route accepted submissions
Confirm email or autoresponder delivery, then forward accepted leads by webhook or API to the CRM or automation path.
Code
Accessible static-site lead capture form
<form action="https://api.formsfort.com/submit" method="POST">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY" />
<input type="hidden" name="subject" value="New qualified lead" />
<fieldset>
<legend>Tell us about your project</legend>
<div>
<label for="name">Name</label>
<input id="name" name="name" type="text" autocomplete="name" required />
</div>
<div>
<label for="email">Work email</label>
<input id="email" name="email" type="email" autocomplete="email" required />
</div>
<div>
<label for="company">Company</label>
<input id="company" name="company" type="text" autocomplete="organization" required />
</div>
<div>
<label for="budget">Budget range</label>
<select id="budget" name="budget" required>
<option value="">Choose a range</option>
<option value="under-10k">Under $10,000</option>
<option value="10k-25k">$10,000–$25,000</option>
<option value="25k-50k">$25,000–$50,000</option>
<option value="50k-plus">$50,000+</option>
</select>
</div>
<div>
<label for="timeline">Desired timeline</label>
<select id="timeline" name="timeline" required>
<option value="">Choose a timeline</option>
<option value="0-30-days">Within 30 days</option>
<option value="1-3-months">1–3 months</option>
<option value="3-plus-months">More than 3 months</option>
<option value="researching">Researching options</option>
</select>
</div>
<div>
<label for="source">How did you hear about us?</label>
<select id="source" name="source">
<option value="">Choose one</option>
<option value="organic-search">Organic search</option>
<option value="referral">Referral</option>
<option value="partner">Partner</option>
<option value="campaign">Campaign</option>
</select>
</div>
<div>
<label for="scope">Project scope</label>
<textarea id="scope" name="scope" rows="5" minlength="20" maxlength="2000"
aria-describedby="scope-help" required></textarea>
<p id="scope-help">Share the site, audience, and outcome you are planning.</p>
</div>
<div>
<input id="consent" name="consent" type="checkbox" value="yes"
aria-describedby="consent-help" required />
<label for="consent">I agree to be contacted about this request.</label>
<p id="consent-help">We use these details to review and respond to your inquiry.</p>
</div>
</fieldset>
<input type="checkbox" name="botcheck" tabindex="-1" autocomplete="off"
aria-hidden="true" style="display:none" />
<button type="submit">Request a conversation</button>
</form>Fit boundaries
When FormsFort is not the right tool.
- Choose a full CRM or marketing automation platform when you need pipeline stages, lead scoring, campaigns, or contact history in the same product.
- Build a custom backend when qualification requires private pricing logic, authenticated account data, or a multi-step transaction before acceptance.
- Use a dedicated consent-management workflow when follow-up requires jurisdiction-specific records beyond this form's explicit checkbox.
- Do not put CRM secrets in browser markup; use a server-side or automation receiver for privileged enrichment and writes.
Related resources
Continue with the next step.
Solutions hub
Browse use-case, platform, and comparison guides before choosing a workflow.
Lead-capture preset
Generate a complete static HTML baseline, then add your qualification fields.
Inquiry form template
Start with a structured template for sales and support routing.
HTML signup templates
Compare shorter signup and waitlist patterns when qualification needs to stay light.
Static form backend comparison
Compare static form backend workflows, delivery, and operational boundaries.
Webhook forwarding
Send accepted submissions to an endpoint or automation workflow.
Form validation guide
Review browser constraints and custom validation patterns.
Static-site spam prevention
Layer honeypots, domain rules, rate limits, and testing into launch.
Static-site form guide
Learn the endpoint, deploy, and test workflow.
FAQ
Common questions.
Is FormsFort a CRM?
No. FormsFort receives and delivers form submissions. Use its webhook or API to hand accepted leads to your CRM, while the CRM owns records, stages, scoring, and reporting.
Which qualification fields should a static-site lead form include?
Start with name, work email, company, budget range, timeline, project scope, source, and consent when each field has a routing or follow-up purpose. Keep optional fields optional.
Can I collect budget, timeline, company, and scope?
Yes. Use ordinary named inputs, selects, and textareas. FormsFort delivers accepted field values with the submission; your downstream CRM decides how to score or route them.
How should I validate and protect a public lead form?
Use accessible labels and native constraints for the browser, then validate again on the receiving side. Configure the botcheck honeypot, allowed domains, and rate limits, and test valid, incomplete, and automated-looking submissions from the deployed origin.
Can a lead receive an autoresponder?
Yes. Configure an autoresponder for the submitter and use delivery records to confirm the accepted request. Keep sales automation and pipeline updates in your CRM or webhook workflow.
Ship the form workflow.
Start with a static form endpoint, then add the delivery path your team needs.
Start a lead capture form