How does lead routing work in HubSpot?
Lead routing in HubSpot is usually a workflow that decides who should own a new record and then sets the owner property, either to a specific person or by rotating through a group of users or teams with the Rotate record to owner action. The workflow checks conditions such as existing company ownership, region, company size or product interest, in a fixed order, and assigns accordingly.
That’s the mechanism. The hard part is everything around it: making sure only one process assigns owners, deciding the order of checks, and handling the cases that weren’t planned for. This guide is HubSpot-specific; for the general design principles, see our lead routing guide.
Where do owners get assigned?
Before designing anything new, list every place that can set Contact owner (and Company owner, and Deal owner if deals are created early). In most portals it’s more than people expect:
- one or more routing workflows
- chat and inbox settings, which depending on configuration can assign the contact to whoever handled the conversation
- meeting links, particularly team or round-robin links, if they’re set to assign an owner on booking
- integrations such as Salesforce, an enrichment tool or a sales engagement platform
- imports, where a column maps to the owner property
- reps assigning themselves or each other by hand
- company-to-contact owner logic in your own workflows
Each of these is reasonable on its own. Together, they compete, and the first one to set an owner usually wins, because routing workflows often skip records that already have one.
A common example: an existing customer’s new colleague fills in the demo form while chatting with your website bot. The chat assigns the contact to the support agent who answered. Your routing workflow, set not to overwrite existing owners, ignores the record. The account manager for that customer finds out three weeks later, when the deal has already been passed between two other reps.
Open the property history on a few recent contacts and look at the Contact owner changes. The source column tells you which tool set each value. Do this for ten recent inbound leads and you’ll have a fairly accurate map in half an hour.
Design the order of checks first
Write the routing rules as a numbered list before building anything. Something like this:
- Is the contact already owned by an active rep? If yes, keep that owner and notify them.
- Is the associated company owned? If yes, assign the contact to the company owner. Existing relationships come first.
- Is this a customer? Route to the account manager or customer team, not new-business sales.
- Which territory? Branch on country or region.
- Which segment? Within the territory, branch on company size or employee band.
- Who in that group? Rotate across the reps who cover that territory and segment.
- Nothing matched? Assign to a named fallback owner or queue, and alert a manager.
The order matters more than the conditions. If territory comes before company ownership, an existing account’s new contact gets sent to whichever rep covers the region, even when another rep has owned that account for years.
Steps 2 and 3 depend on the contact being associated with the right company. If association happens later (say, by a nightly enrichment sync), your routing needs to wait for it, either with a short delay or by triggering on the association instead of on contact creation.
How does the Rotate record to owner action work?
Rotate record to owner is a workflow action, found in the CRM section of the action panel, that assigns an owner by rotating through a set of users or teams. It requires Sales Hub or Service Hub Professional or Enterprise. Only active users with a paid Sales or Service seat at those tiers can be assigned. Users without a paid seat, view-only users and people who haven’t accepted their invite appear grayed out, and teams need at least one paid-seat member.
The main settings at the time of writing:
- HubSpot user property: defaults to the object’s owner, but you can rotate into a custom HubSpot user property instead, such as “SDR owner”.
- Overwrite if [object] has an existing owner: off means records that already have an owner are left alone. On means the rotation replaces it.
- Rotate between: specific users, or teams.
For most objects, records are split evenly across the selected users. If you change the list of owners after the workflow is live, HubSpot resets its counts and rotates evenly across the new list from that point.
Lead and ticket workflows have their own options. For records in the leads object, you can assign to specific users and teams, to the contact owner, or to no one, choose a distribution type (load balanced, round robin or random), and tick Assign to available users only so reps marked Away are skipped. If everyone is away, the lead is left unassigned. At the time of writing HubSpot labels lead rotation as a beta feature, and it asks you to turn off the setting that syncs lead owner with contact or company owner.
Two practical consequences:
- Seats are a routing dependency. When a rep’s paid seat is removed, they drop out of the rotation. When a new rep joins, they aren’t in it until someone adds them to the action or the team. Put both into your onboarding and offboarding checklists.
- Salesforce can undo it. If the owner property syncs with Salesforce, Salesforce may set the previous owner back. Decide which system owns ownership before routing in either.
Overwrite, or respect existing owners?
Respect existing owners in almost every case, but only if you also check whether the existing owner is still valid. An owner who left the company eight months ago is technically “existing”.
A reliable pattern:
- Before the rotation, branch on whether the current owner is in a list of active reps. HubSpot’s if/then branches let you split by one property value or by AND/OR criteria.
- If the owner is active, keep them and notify them that their contact has come back.
- If the owner is inactive or empty, clear it and continue down the routing steps.
This avoids the two classic failures: reassigning a contact away from a rep who’s mid-conversation, and leaving a returning lead with someone who no longer works there.
What happens when nobody picks the lead up?
Routing is only finished when the lead has been contacted, and setting the owner is just the first step toward that. HubSpot sets a few properties automatically that make this measurable:
- Owner assigned date: the most recent time an owner was assigned to the contact.
- Lead response time: how long the current owner took to make the first qualifying engagement.
- Last contacted: the last logged call, one-to-one email, meeting, chat or manually logged message.
Use them to build a follow-up check. A separate workflow (or a later branch in the routing one) waits for your agreed response window, then checks whether Last contacted is still empty. If it is, notify the owner. If it’s still empty after a second window, notify their manager or reassign the lead.
Be careful with reassignment. If you rotate the lead again, the new owner starts fresh and the original owner’s response time disappears from your reports. Some teams prefer a manager alert and a manual decision.
Pair this with lead status: routing sets the owner and sets lead status to New, and the first logged outreach moves it on. Our HubSpot lead status guide covers that half.
Should you use contacts or the leads object for routing?
If your team uses HubSpot’s leads object and works from the sales workspace, route the lead record, not just the contact. The lead has its own owner, its own pipeline and the rotation options described above, including availability and load balancing. The contact owner can then follow the account relationship, which may be a different person.
If you route contacts and also create leads, be explicit about who owns what. A contact owned by the account manager with a lead owned by an SDR is a perfectly good design, as long as everybody knows that’s the design. It becomes a problem when the two diverge by accident.
Testing your routing
Routing breaks quietly, so test every path before you switch it on and after any change:
- Create a test contact for each branch, such as a contact at an owned company, one in each territory, one in each size band, and one that matches nothing.
- Submit the real form or trigger the real event, rather than enrolling manually.
- Check the owner, the team, lead status and any notification for each.
- Test the existing-owner cases: an active owner, an inactive owner, and none.
- Mark a test user as unavailable if you use availability, and confirm they’re skipped.
Our lead routing workbook gives you a place to write down the rules, the fallback and the test cases before you build.
Common HubSpot routing mistakes
- Routing split across chat, forms, integrations and workflows, with no single owner of the logic.
- Territory checked before existing ownership.
- No fallback, so unmatched leads sit unassigned.
- Reps without paid seats included in rotation, then silently skipped.
- Contact routed before the company association exists.
- No check that the lead was contacted after assignment.
- Owner overwritten by an integration sync after HubSpot assigns it.
Which HubSpot subscription do I need for round-robin lead rotation?
The Rotate record to owner workflow action needs Sales Hub or Service Hub Professional or Enterprise, and the reps being assigned need paid seats at those tiers. Rotating records in the leads object needs Sales Hub Professional or Enterprise.
Can HubSpot skip reps who are away?
For leads and tickets, yes: the Assign to available users only option skips users marked Away. For other objects at the time of writing, the standard rotation splits evenly across the selected users, so handle absences by updating the team or adding a branch.
Why did my routing workflow not assign an owner?
Most often the record already had an owner and overwrite was off, no eligible user was in the rotation, or the record didn’t meet the branch conditions and there was no fallback. The workflow’s action logs show which.
Can I route to a custom owner field instead of Contact owner?
Yes. The rotation can write to a custom HubSpot user property, such as an SDR owner field, which lets you keep the main owner for the account relationship.