How to route web-form leads into a CRM automatically
Automatic lead routing needs three pieces: a form that writes straight into the CRM, a deduplication rule, and an assignment step that puts a name on the lead in minutes. In HubSpot the first two are free and the rotation action is not, so the tier you need depends on how complex your rules are.
Routing a web-form lead into a CRM automatically takes three pieces: a form that writes straight into the CRM, a deduplication rule so the same person doesn't become three records, and an assignment step that puts a name on the lead within minutes. In HubSpot the first two are free and the third is not — the rotation action requires a Professional plan.
Below is a followable path with real menu names, plus a cheaper route if you can't justify the Professional tier. Prices and tier requirements were checked against HubSpot's and Zapier's own pages in September 2026.
Decide four things before you open any tool
- What counts as a lead. A contact form and a demo request are not the same thing and should not land in the same queue.
- Who owns it. Round robin across a team, or split by territory, product line or company size.
- How fast someone must respond. Pick a number. Fifteen minutes and four hours produce completely different designs.
- What happens when the rule fails. Every routing system eventually produces a lead with no owner. Decide now who gets paged.
What HubSpot deduplicates for you
This is the part people get wrong, and the vendor documentation is unambiguous about it. Per HubSpot's record deduplication article, contacts are automatically deduplicated on the Email property — when a new contact is added, HubSpot looks for a matching value in Email. Companies are deduplicated on the primary Company domain name. Deals have no automatic deduplication; you merge them by hand.
When an existing contact submits a form using the same email, the new information is added to the existing contact rather than creating a second record. That's the behavior you want, and it means a plain HubSpot form already handles the most common duplicate case at no cost.
Two things it does not handle. Someone who fills the form from a personal Gmail address on Monday and a work address on Thursday becomes two contacts, because the unique identifier is the email string. And the same doc notes that if a contact submits with a secondary email address, that value overwrites the primary email on the record — which quietly changes who your marketing emails go to. Watch for it.
If you need matching on something other than email, HubSpot allows custom properties that require unique values, up to ten per object. A customer number or an account ID from your billing system is a better identifier than an email address, and worth setting up if you have one.
Path A: HubSpot forms and workflows
Steps, with the menu names as they appear:
- Build the form in HubSpot rather than in your website's own form plugin. A native HubSpot form writes into the CRM directly and triggers dedupe on submission; a WordPress form emailing you a copy does neither.
- Add the fields the routing rule needs. If you route by state, the form has to ask for state. If you route by company size, ask for it or enrich it — a rule can only branch on data you actually have.
- Go to More > Automation > Workflows and create a contact-based workflow. Per HubSpot's workflow documentation, workflows are available on Professional and Enterprise plans across Marketing Hub, Sales Hub, Service Hub, Data Hub and Smart CRM.
- Set the enrollment trigger to the specific form submission — not "any form", or your newsletter signups end up in the sales queue.
- Add an if/then branch for territory or product. HubSpot's workflow actions reference documents branching on one property with up to 250 unique branches, and branching on AND/OR filter logic.
- In each branch, add the Rotate record to owner action, which the same reference describes as assigning enrolled records to users equally within a selected team or between specified users. It requires Sales Hub or Service Hub Professional or Enterprise.
- Add an internal notification to the assigned owner, and a task with a due date that matches your response target.
HubSpot documents that the rotate leads action can be delayed roughly 10 minutes for brand-new contacts when the "Assign company owner to contact by default" setting is on, because the contact-and-company owner sync has to complete first (HubSpot workflows FAQ). If you promise a 15-minute response, that delay eats most of your budget.
What the paid tier costs
| Plan | List price (as of September 2026) | Routing capability |
|---|---|---|
| HubSpot Sales Hub Free | $0, listed for up to 2 users | Forms and email dedupe; no workflows |
| HubSpot Sales Hub Starter | $7/seat/mo billed annually, $20 otherwise | Limited automation; no rotate action |
| HubSpot Sales Hub Professional | $90/seat/mo billed annually, $100 otherwise, plus a one-time $1,500 onboarding fee | Workflows and Rotate record to owner |
| Zapier Free | $0, 100 tasks/mo | Two-step Zaps only |
| Zapier Professional | From $19.99/mo, 750 tasks/mo | Multi-step Zaps, Filters and Paths, webhooks |
Figures from HubSpot's Sales Hub pricing page and Zapier's pricing page. The mandatory onboarding fee is the line item that surprises small teams: a two-person shop on Professional is $2,160 a year plus $1,500 up front in year one.
Path B: routing without the Professional tier
If Professional isn't justifiable yet, keep the free HubSpot CRM for storage and dedupe and put the routing logic in Zapier. The shape is: HubSpot form submission triggers the Zap, a Path evaluates the branching condition, and the final step updates the contact's owner and posts to a Slack channel or sends an email.
Zapier's pricing page lists Paths and multi-step Zaps starting on the Professional plan at $19.99 and up, with 750 tasks a month. Count your tasks honestly before you commit, because only successful action steps consume tasks — the trigger and any Filter or Paths steps are free (Zapier, How is task usage measured in Zapier?). A Zap with a trigger, a Path and two actions running on 200 leads a month is 400 tasks, comfortably inside the 750-task tier. Add a third action and you are at 600.
Round robin outside HubSpot needs somewhere to remember whose turn it is. A single-row Google Sheet or Airtable base holding a counter works, though it will occasionally double-assign under simultaneous submissions. For a handful of leads a day that's a shrug. At volume, pay for the native rotation.
A routing rule can only branch on data the form actually collected. Design the form and the rule together, or you'll build a beautiful workflow with nothing to test.
The safety net
Routing fails in specific, predictable ways, so build for them:
- Nobody matched. Give every branch structure a final "else" that assigns to a named fallback owner, not to nobody.
- The owner is on vacation. Rotation assigns by list membership, not by availability. Keep the rotation list current or you'll send Monday's best lead to someone who's out until the 20th.
- Nobody touched it. Add a second workflow: if a lead has an owner but no logged activity after your SLA window, notify a manager. This one catches more revenue than the routing rule itself.
- The duplicate that wasn't caught. Run a monthly check for contacts sharing a phone number or company domain but not an email, and merge by hand.
Test it before you trust it
Submit the form yourself, once per branch, using addresses you control. Confirm the contact appears, the owner is set, the notification arrives, and the task shows the right due date. Then submit the same email twice and confirm you get one contact, not two. Then submit with a field deliberately left blank and watch which branch it falls into — that is the test everyone skips and the case that shows up in production on day three.
Leave the workflow on for a week with the notification going to you as well as the owner. Reading every routing decision for a week is tedious and it is the only way to find out that half your leads are hitting the fallback branch.
Read next
- Connecting an AI Agent to a Work Inbox SafelyHow to automate
- Automating a Weekly Report That Fails LoudlyHow to automate
- Who Is Liable When Your Automation Makes a MistakeRisk & rules