SalesTutorialCRMSalesforceHubSpot

How to Build a Lead Qualification Form That Routes Directly to Your CRM

Atul Kumar· June 8, 2026· 10 min read
From form submit to CRM record in under 2 secondsLead qualification formWork emailalex@acme.ioCompanyAcme Inc.Company size501-1000Budget$50K - $250KTimeline< 3 monthsScoring expressionsize ≥ 500 → +30budget ≥ 50k → +35timeline < 3mo → +25Score: 90 / 100 (MQL)Salesforce LeadStatus: MQL · Owner: Enterprise SDRHubSpot Contact + DealPipeline: Sales · Stage: QualificationSlack #sdr-inbound"Acme Inc. - MQL 90, contact in < 5 min"
One submission, one scoring pass, three records created — no middleware in the chain.

A working lead qualification form does three jobs in the same submission: it scores the lead, it routes the record to the right CRM with the right status, and it pings the right SDR before the lead loses interest. FlexForm runs all three in one round trip — a Salesforce Lead and HubSpot Contact appear in 1 to 2 seconds, Slack pings the on-call SDR a heartbeat later, and a buyer who saw your pricing page at 2pm hears from sales by 2:05.

This guide walks through the full setup: which fields a lead qualification form actually needs, how to wire conditional branching by company size, how the scoring expression maps to CRM Lead Status, and how to test the integration before flipping a paid campaign at it. Everything below is grounded in the FlexForm Founders plan, which is the tier where native CRM integrations and multi-page branching live.

What you ship

  • Multi-page form with conditional branching
  • Native Salesforce Lead creation in 1-2 seconds
  • Native HubSpot Contact + Deal creation
  • Slack ping to #sdr-inbound on high-score MQL
  • Partial saving (lead returns the next day, resumes)

Plan + setup time

  • Founders plan ($19/mo) or Enterprise
  • Salesforce or HubSpot account with admin access
  • Slack workspace + permission to create a webhook
  • Roughly 20 minutes end to end

The six fields a lead qualification form actually needs

Long forms hurt completion; short forms hurt qualification. The honest middle is six fields that together let scoring work and routing know where to send the lead. Every field below maps to a real FlexForm element type.

FieldElement typeWhy it matters
Work emailemail_inputFormat validated client-side; CRM upsert key
Full nameshort_answerSplits to firstname / lastname for HubSpot
Companyshort_answerDrives Account creation in Salesforce
Company sizedropdownRouting signal — enterprise vs self-serve
Budget rangedropdownScoring signal — primary MQL driver
TimelinedropdownScoring signal — urgency component

Optional adds: current tools (multiselect, Pro tier) and primary use case (long_answer). These earn the lead extra score and give the SDR something to open the conversation with. Don't ship them as required — the scoring expression should reward filling them, not penalise skipping.

Step 1 — Generate the form

Describe the form to FlexForm in plain English. A workable prompt:

"Create a 3-page lead qualification form:
 page 1 - work email, full name, company name
 page 2 - company size (1-10, 11-50, 51-200, 201-500, 501+),
           budget ($0-10k, $10-50k, $50-250k, $250k+),
           timeline (< 1 month, 1-3 months, 3-6 months, 6+ months)
 page 3 - review screen, then submit
Hide budget on page 2 if company size is 1-10."

The AI picks email_input for email (with format validation), dropdown for the three categorical fields (option count is 4–5, so a dropdown beats radio buttons on vertical density), and a review page type for the last page. The conditional "hide budget if 1-10" becomes an element-level conditional rule on the budget field with operator equals.

Step 2 — Configure the scoring expression

Scoring lives on the form's Actions tab as a small expression that runs against the submitted values. A practical default for B2B SaaS:

score = 0
+ (company_size == "501+"           ? 30 : 0)
+ (company_size == "201-500"        ? 20 : 0)
+ (budget == "$50-250k" ||
   budget == "$250k+"                ? 35 : 0)
+ (budget == "$10-50k"               ? 15 : 0)
+ (timeline == "< 1 month"           ? 25 : 0)
+ (timeline == "1-3 months"          ? 15 : 0)

status = score >= 60 ? "MQL"
       : score >= 30 ? "SQL-light"
       : "Nurture"

The output writes to a hidden field (lead_score, lead_status) that maps into the CRM. The expression evaluates server-side before the integration fires, so the Salesforce Lead and HubSpot Contact arrive already tagged — your CRM workflows can branch on status without a second round trip.

Step 3 — Wire Salesforce or HubSpot (or both)

In the Integrations tab, connect Salesforce, HubSpot, or both. Both connections use OAuth and store at the workspace level — the same connection serves every form in the workspace.

  1. Salesforce Lead creation — map work email, name, company, company size, lead_status (from scoring), and lead_score (numeric). Set Lead Source to a static value like "FlexForm — Demo Request". Optionally assign Lead Owner conditionally: company_size = 501+ → Enterprise SDR queue; else → general inbound queue.
  2. HubSpot Contact + Deal — map the same fields into Contact properties. Add a Deal action: pipeline = Sales, stage = Qualification (or Discovery for MQL), dealname = "{Company}{Use Case}", amount from budget when present.
  3. Conditional dual-CRM (optional) — if your org uses Salesforce for enterprise and HubSpot for self-serve, gate each integration on company_size. Both fire in parallel; the Slack ping only fires once.

Step 4 — Slack the SDR before the lead cools

The CRM record is the system of record. Slack is the system of action. Add a Slack integration that fires only when status = MQL, posts to #sdr-inbound, and includes the company name, score, and a deep link to the new Salesforce or HubSpot record.

:bell: New MQL — score 90
Company:   Acme Inc.   (501-1000)
Budget:    $50-250k
Timeline:  < 1 month
Contact:   alex@acme.io
Open:      <https://salesforce.com/lead/...|Salesforce>
SLA:       Respond within 5 minutes

The 5-minute response SLA is not a vanity number. Independent lead-response research has shown that contact within the first minute correlates with materially higher conversion versus contact at five or thirty minutes; the curve falls off sharply after the first hour. The Slack ping plus a sub-2-second CRM landing is what makes the SLA achievable.

Step 5 — Embed, test, ship

Three checks before flipping paid traffic at the form:

  1. Submit a test lead — fill in your own contact details with company size 501+, budget $50K+, timeline under 3 months. Confirm the Salesforce Lead and HubSpot Contact arrive within 2 seconds with status MQL.
  2. Verify the Slack ping — the message should appear in #sdr-inbound with the right score and a working deep link. Click it; the CRM record should open.
  3. Submit a low-score test — fill in 1-10, no budget, 6+ months. Confirm status is "Nurture", the CRM record exists but is routed to the marketing queue, and Slack does NOT fire.

Embed the form on your pricing page, request-demo page, or contact page using the FlexForm web embed — one script tag and one div. Embed reference. The same form renders inside a mobile app via the FlexForm SDK without rebuilding it. Android SDK guide.

Frequently asked questions

What fields should a lead qualification form include?

A working lead qualification form has six core fields: work email (email_input with format validation), full name (short_answer), company name (short_answer), company size (dropdown, used for routing), budget range (dropdown, used for scoring), and timeline to decision (dropdown). Optional follow-ups like current tools (multiselect) and use case (long_answer) gate the score higher. Keep the form to one page if scoring isn't needed, two to three pages if conditional branching by company size or use case is in play.

How does a form qualify leads automatically before sending them to a CRM?

FlexForm runs a scoring expression on the submitted values before the integration fires. A lead with company size of 501+, budget over $50K, and timeline under 3 months scores as MQL (marketing-qualified); the same lead with under 10 employees and no budget scores as 'nurture'. The score sets a hidden field that maps into the CRM's Lead Status property, so HubSpot or Salesforce already knows which queue to route to before the workflow fires.

Can a lead qualification form route to both Salesforce and HubSpot?

Yes. A single form can fire multiple native integrations on submit: create a Salesforce Lead, create a HubSpot Contact, and post a Slack notification to the SDR channel — all configured per-form, all running in 1 to 2 seconds. Conditional rules can route enterprise leads to Salesforce and self-serve to HubSpot if your team uses both CRMs for different segments.

What's the difference between a multi-page and single-page lead qualification form?

Single-page forms (one page with all fields) convert better at the top of funnel because they look short. Multi-page forms convert better when scoring matters because you can branch — show enterprise prospects different qualification fields than self-serve. Multi-page also enables partial saving so a lead returning the next day picks up where they left off. Multi-page forms require the Founders plan ($19/mo) and above.

How fast does a form-to-CRM integration actually run?

FlexForm's native Salesforce and HubSpot integrations write to the CRM API the moment the submit button is pressed. The Lead or Contact record appears in the CRM in 1 to 2 seconds. A Zapier-mediated equivalent polls the source on a 1 to 15 minute schedule depending on plan, then forwards — so the same lead lands minutes later. For sales teams running a 5-minute response SLA, the gap is material.

Ship a lead qualification form in 20 minutes

Describe the form, connect Salesforce or HubSpot, embed. Founders plan from $19/mo, multi-page and CRM included.

Start Free →
A

Atul Kumar

Co-Founder & CTO, FlexForm