Lead Assignment Rules Software: Automate Lead Routing Rules in Salesforce, HubSpot, Dynamics 365, and Zoho
Every CRM calls it lead assignment rules and every CRM means something different by it. One does not rotate at all. One rotates but keeps a separate counter per workflow. One reads capacity and calendars. One quietly ignores every lead a rep types in by hand. Here is what each engine really does, side by side, and how to write rules that still work after somebody leaves.
In short
Lead assignment rules are criteria-based rules in a CRM that decide who owns a new lead. They do two jobs: match the lead against conditions such as country, source, industry, or deal size, then hand the record to a user, a team, or a queue. What differs between CRMs is the second job. Salesforce evaluates rule entries in order and gives the lead to the first entry that matches, with no rotation of any kind, so round robin has to be built. HubSpot adds a Rotate record to owner action on Sales or Service Hub Professional and above, and keeps its rotation counter per action rather than per account. Dynamics 365 Sales is the only one of the four with a native engine that reads seller capacity and work schedules, and it stores the round robin order at the organization level so every rule shares one sequence. Zoho CRM rotates through the users you pick, but its assignment rules do not fire on manually created records at all, only on imports, web forms, and API inserts. Assigner runs one rule engine beside the CRM you already have, from $12 per user per month, with true rotation, weighted rotation, workload balancing, skills, and availability, and it records the rule and the candidates behind every assignment. The AI assists your triage, the rules stay yours, and the demo data shown is illustrative rather than a live integration.
Why it fits
RevOps, sales operations, and CRM admins running Salesforce, HubSpot, Dynamics 365, or Zoho who have outgrown criteria-only assignment rules and need rotation, workload, skills, or availability without rebuilding the routing layer in code every time the team changes.
Rules that survive a team change
Native rules encode people. A rep leaves and somebody has to remember which rule entries name them, which formula counted them, and which rotation index shifts. Assigner rotates over a roster rather than a hardcoded list, so removing somebody is one toggle and the sequence closes over the gap on its own.
Criteria and rotation in one rule
Most CRMs make you choose. Criteria matching lands the lead on a team, then a second mechanism, a formula, a Flow, or an app, decides the person. Assigner does both in one rule set, so the condition that sent a lead to the enterprise team is the same rule that picked which enterprise rep is next.
Every assignment explains itself
When a rep asks why they did not get a lead, native rules give you an owner field and nothing else. Assigner records the rule that fired, the candidates it considered, and why each one was passed over, which ends the argument in about ten seconds.
Side by side
Native lead assignment rules compared across four CRMs
| Lead assignment capability | Salesforce | HubSpot | Dynamics 365 Sales | Zoho CRM |
|---|---|---|---|---|
| Native round robin rotation | Rotate record to owner action | |||
| How the next owner is chosen | First matching rule entry | Lowest assignment count for that action | Seller who has waited longest | Rotation through the selected users |
| Routes by current open workload | Load Balanced, tickets only | Load balancing by available capacity | ||
| Respects a work schedule or time off | Available within 1 to 120 hours | |||
| Runs on manually created records | Only if the assignment checkbox is ticked | |||
| Runs on web form submissions | ||||
| Runs on API and code inserts | Only with DMLOptions set | |||
| Where the rotation position is stored | There is no rotation to store | Per workflow action | Organization level, shared by every rule | Not documented |
| Lowest tier that includes rotation | Not available at any tier | Sales or Service Hub Professional | Work assignment in sales accelerator | Standard and above, not Free |
Verified in August 2026 against Salesforce, HubSpot, Microsoft Learn, and Zoho documentation. Vendors repackage between releases and entitlements differ by account, so confirm your own edition before you design around any row.
In detail
Lead assignment rules, CRM by CRM
What lead assignment rules actually do
A lead assignment rule is two things wearing one name. The first half is a condition: country equals United States, source equals demo request, employee count above 500. The second half is a destination: a named user, a team, or a queue. Nothing more complicated than that, and the simplicity is why the pattern has survived twenty years of CRM releases. The trouble starts when the destination has to be a person on a team rather than the team itself. Criteria can express "this belongs to enterprise sales" perfectly well. Criteria cannot express "and it is Dana's turn", because whose turn it is depends on the previous lead, and no field on the incoming record knows about the previous lead. That single gap is the reason every CRM in this comparison behaves differently. Each one answers the question "where does the memory of the last assignment live?" in a different place, or refuses to answer it at all. Read the table above with that question in mind and the differences stop looking arbitrary. If you are still designing the conditions themselves, how to write lead routing rules covers the ordering and fallback patterns that keep a rule set readable.
Salesforce: one active rule, first match wins, no rotation
Salesforce is the strictest of the four and the most predictable. Only one lead assignment rule can be active at a time. Inside it you build rule entries, each with its own criteria and its own destination, and the entries are evaluated in sort order from the top, with the first matching entry winning and evaluation stopping there. Nothing further is considered, which makes ordering the whole design: put your narrow entries above your broad ones or the broad ones swallow everything. A lead that matches no entry at all falls to the Default Lead Owner configured in Lead Settings, which is worth setting to a real person or queue rather than leaving on whoever set the org up. Where teams get caught is which entry points actually run the rule. Web-to-Lead runs it automatically. Lead import runs it if the person importing opts in. A lead created manually only runs the rule when the Assign using active assignment rule checkbox is ticked, and if it is not, the owner is simply whoever created the record. Leads inserted by Apex or the API do not run assignment rules unless the call attaches Database.DMLOptions with the assignment rule header, which is why leads from an integration so often land on the integration user. And the headline: Salesforce has no native round robin on leads at any edition. Assignment rules match criteria and stop; they hold no memory of who received the last record. Our page on Salesforce lead assignment rules goes through the native workarounds honestly, including where staying native is the right call.
HubSpot: rotation exists, and the counter is not where you think
HubSpot does have real rotation, through the Rotate record to owner workflow action, and it needs Sales Hub or Service Hub Professional or Enterprise. On tickets it offers three methods: Load Balanced, which assigns to the user with the fewest open tickets, Round Robin, which goes in sequence, and Random. That load-balanced option is genuine workload awareness and it deserves more credit than most comparison pages give it. Two things about eligibility bite before anything else. A user only appears in a rotation if they hold an assigned paid Sales or Service Hub Professional or Enterprise seat; users on core or view-only seats, and users who have not accepted their invite, are silently skipped rather than flagged. And team rotation includes main team members only, so anyone added as an additional team member is left out unless the multiple main teams beta is switched on. Then the part that generates the most confused support threads: the rotation counter is kept per action, not per account. Each record goes to whichever eligible owner has the lowest count for that specific action, the very first assignment is effectively random because everyone is tied at zero, and two workflows rotating across the same five reps keep two separate tallies that drift apart over weeks. That is the real answer to "why is my HubSpot round robin uneven", and it is a design decision rather than a bug. HubSpot round robin covers the workflow build and the seat gating in detail.
Dynamics 365 Sales: the only native engine that sees capacity and calendars
Microsoft went furthest here, and if your requirement is workload-aware assignment without buying anything extra, Dynamics is the one to look at first. Its assignment rules distribute leads, opportunities, and insights by either round robin or load balancing. Round robin gives the record to the seller who has waited longest, and it counts records assigned manually or by an add-in as well as rule-driven ones, so a manager handing out a lead by hand moves that person to the back of the line. Load balancing gives it to the seller with the most available capacity. Two options sit on top of both. Assign based on seller capacity restricts distribution to sellers with available capacity above zero, and if nobody qualifies the record is deliberately left unassigned rather than dumped on somebody underwater. Assign if a seller is available within N hours, where N is a whole number from 1 to 120, checks work schedules, bucketing matched sellers into six blocks of 24 hours and walking down until it finds a non-empty bucket. A lead arriving on a Friday evening with a 48 hour limit and nobody working the weekend is left unassigned; set 60 hours and it goes to the first person available Monday morning. Two documented quirks are worth designing around. The round robin order is stored at the organization level, not per rule, so three rules over the same sellers share one sequence and a single rule can legitimately assign to the same person twice in a row. And a seller who creates a record becomes its owner and joins the distribution order, which shifts the rotation for everyone else. Dynamics 365 lead routing has the wider picture.
Zoho CRM: rotation is easy, the trigger set is the catch
Zoho keeps its assignment rules refreshingly simple. They work on standard and custom modules, and when you select multiple users, roles, or groups as the destination, records are assigned in a round robin pattern. No formula, no counter object, no app. Assignment rules are not in the Free edition but are available from Standard upward. The catch is not the rotation, it is when the rules run. Zoho assignment rules do not fire on manually created records. They trigger on records that are imported, that arrive through web forms, or that come in through third-party APIs, and the documentation states plainly that they cannot be triggered on manual creation and cannot be applied to records created by workflow rules. In practice that splits your lead flow in two without anyone deciding to. Web form leads rotate beautifully. Leads a rep types in after a conference call, or leads a workflow generates from a form on another module, keep whichever owner they were created with and never touch the rotation. Teams usually discover this months later, when the rotation looks fair in the rule screen and unfair in the pipeline report. If you run Zoho, audit how many of last month's leads were created manually before you decide the rules are working. Zoho lead routing covers the setup and the workarounds.
Writing lead assignment rules that survive a team change
Whichever CRM you are in, the rules that age badly all fail the same way: they name people. Here is the discipline that holds up. Order narrow before broad. First-match-wins engines reward specific entries at the top and a deliberate catch-all at the bottom. Write the catch-all first so you always know where an unmatched lead lands, then add specificity above it. Point entries at teams or queues, not at named users. A rule that says "enterprise inbound goes to the enterprise queue" needs no edit when the enterprise team changes; a rule that says "enterprise inbound goes to Dana" needs an edit and will not get one. Keep the person-picking separate from the criteria. Criteria answer which team, rotation answers which person. Mixing them produces a rule set where adding one rep means touching nine entries. Write down the fallback. Every engine has a behavior when nothing matches, and it is different in each: Salesforce uses the Default Lead Owner, Dynamics can leave the record unassigned on purpose, HubSpot skips a record whose eligible owner list is empty. Decide which you want rather than inheriting it. Test the entry points, not just the rules. Most rules that "do not work" are perfectly correct rules that never ran, because a checkbox was unticked, an API call did not set the header, or the lead was created by hand in a CRM that ignores manual creation. Create one lead through each route you actually use and check the owner on each.
When native rules stop being enough
Criteria-based assignment rules are a good tool and most teams should keep using them. The point where they start costing more than they save is well defined, and it is not about volume. It is the moment assignment has to consider something the lead record cannot tell you. Who is working today. Who is already sitting on eleven open opportunities. Who speaks Spanish. Who joined last week and should carry a half share until they are ramped. None of that lives on the lead, so no criteria-based rule can express it, and each workaround, a formula over an auto-number, a Flow with a counter object, a rotation app for one CRM, solves one part and adds a thing to maintain. That is where Assigner fits, beside the CRM rather than instead of it. One engine handles sales lead routing, support ticket routing, and ops task assignment, with round-robin assignment that keeps real rotation state, weighted rotation for part-time and ramping reps, workload balancing on open effort rather than record counts, skills-based routing, and availability routing that removes people from the rotation when they are off. It is $12 per user per month, every assignment records the rule and the candidates behind it, and it is a companion to your CRM rather than a live two-way sync or a guarantee of an outcome.
Questions buyers ask
Frequently asked questions
What are lead assignment rules?
Lead assignment rules are criteria-based rules in a CRM that decide who owns a new lead. Each rule entry pairs a condition, such as country, lead source, industry, or company size, with a destination, such as a user, a team, or a queue. When a lead arrives, the CRM tests it against the entries and sets the owner accordingly. The rules handle matching well; rotation between people on a team is a separate problem most CRMs solve differently.
How do lead assignment rules work in Salesforce?
Only one lead assignment rule can be active at a time. Inside it, rule entries are evaluated in sort order from the top, and the first entry whose criteria match sets the owner and stops evaluation. A lead matching nothing goes to the Default Lead Owner set in Lead Settings. Web-to-Lead runs the rule automatically, imports run it if the importer opts in, and manual creation runs it only when the assignment checkbox is ticked.
Do lead assignment rules support round robin?
It depends entirely on the CRM. Salesforce has no native round robin on leads at any edition, so rotation has to be built with Flow, Apex, or a tool. HubSpot rotates through its Rotate record to owner action on Sales or Service Hub Professional and above. Dynamics 365 Sales offers round robin and load balancing natively. Zoho CRM rotates automatically when you select multiple users, roles, or groups as the destination.
Why are my lead assignment rules not working?
The most common cause is a correct rule that never ran. In Salesforce, a manually created lead skips the rule unless the assignment checkbox is ticked, and an API or Apex insert skips it unless the call sets Database.DMLOptions with the assignment rule header. In Zoho, assignment rules never fire on manually created records at all. Check which entry point created the lead before you rewrite the rule itself.
Do Zoho CRM assignment rules run on manually created records?
No. Zoho documentation states that assignment rules cannot be triggered when records are created manually, and cannot be applied to records created through workflow rules. They run on records that are imported, that arrive through web forms, or that come in via third-party APIs. If a large share of your leads are typed in by reps, those leads bypass the rotation entirely and keep whichever owner created them.
How does Dynamics 365 decide who gets a lead?
Assignment rules distribute by round robin or load balancing. Round robin picks the seller who has waited longest since their last record, counting manual and add-in assignments too. Load balancing picks the seller with the most available capacity. You can also require available capacity above zero, and require a seller to be available within 1 to 120 hours based on their work schedule, in which case unmatched leads are deliberately left unassigned.
Why is my Dynamics 365 round robin assigning the same seller twice?
Because the round robin order is stored at the organization level rather than per rule. If three rules cover an overlapping group of sellers, they all advance the same shared sequence, so one rule can legitimately hand records to the same person on consecutive runs while the other rules moved the position in between. A seller who creates a record also becomes its owner and joins the order, which shifts it again.
Why is my HubSpot round robin uneven?
HubSpot keeps its rotation counter per workflow action rather than per account. Each record goes to whichever eligible owner has the lowest count for that specific action, the first assignment is effectively random because everyone starts tied at zero, and two workflows rotating across the same reps maintain separate tallies that drift apart. Seat eligibility compounds it: users without a paid Professional or Enterprise seat are skipped silently.
What happens when no lead assignment rule matches?
Each CRM handles it differently, so decide rather than inherit. Salesforce assigns the lead to the Default Lead Owner configured in Lead Settings. Dynamics 365 can leave the record unassigned on purpose when you have required available capacity or seller availability. HubSpot leaves the record with its current owner if no eligible owner exists. A deliberate catch-all rule entry pointing at a monitored queue is safer than any of these defaults.
Can lead assignment rules consider workload?
Only in some CRMs. Dynamics 365 Sales has native load balancing based on available capacity, and HubSpot offers a Load Balanced method that assigns to the user with the fewest open tickets. Salesforce and Zoho assignment rules match criteria only and have no view of how much work anyone is holding. Where workload matters, the usual pattern is rules choosing the team and a separate engine choosing the person.
Do lead assignment rules run on leads created by the API?
In Dynamics 365 and Zoho, yes. In HubSpot, workflow enrollment covers API-created records. In Salesforce, no: an Apex or API insert bypasses assignment rules unless the call attaches Database.DMLOptions with assignmentRuleHeader and calls setOptions. This is why leads from marketing automation and form integrations so often end up owned by the integration user rather than by the rule you wrote.
How do I test lead assignment rules before I trust them?
Create one lead through every entry point you actually use, not just the one that is easiest to test. That means a web form submission, a manual creation, a small import, and an API insert from whichever integration feeds you leads. Check the owner on each. Then deactivate one user in the rotation and repeat, because absent people who keep drawing their share are the most common late failure of any rule set.
Keep reading
Deeper on the CRM you actually run, plus the routing patterns these rules cannot express.
- Salesforce lead assignment rules - What the native rules do well, where they stop, and when staying native is the right call.
- Salesforce lead routing - The full lead-side picture, from assignment rules to territories and queues.
- HubSpot round robin - The Rotate record to owner action, seat gating, and the per-action counter.
- Dynamics 365 lead routing - Work assignment, seller capacity, and the availability buckets in practice.
- Zoho CRM lead routing - Rotation that works, and the manual-creation gap that quietly halves it.
- How to write lead routing rules - Ordering, fallbacks, and keeping a rule set readable as the team grows.
- Lead routing software pricing - What routing tools actually cost per seat once implementation is included.
More use cases
Related features
Stop hand-sorting your incoming work
Let Assigner route it to the right available person by skill, workload, and availability, using rules you control. Nothing sits unassigned and no one gets cherry-picked. Every assignment shows why.