HubSpot lead routing: round robin vs territory, with the workflow

Pick round robin or territory routing in HubSpot, then build one workflow that assigns every new lead to the right rep, with a fallback for the misfits.

Most small sales teams route leads the same way: whoever sees the form notification first grabs it. That works until two reps call the same person, or a lead sits unowned over a weekend. In this guide I’ll help you choose between round robin and territory routing, then build one HubSpot workflow that sets the owner on every new contact within minutes, with a catch-all for leads that don’t fit.

What you need

  • Sales Hub or Service Hub Professional or Enterprise. The Rotate record to owner workflow action is only on those tiers. HubSpot’s pricing page lists Sales Hub Professional from $90 per seat per month billed annually ($100 billed monthly). Check the page for current numbers, because they move.
  • Paid seats for every rep in the rotation. HubSpot only assigns records to active users with an assigned Sales or Service Hub Professional or Enterprise seat. View-only and core seats can’t receive rotated records.
  • Permission to create workflows (Super Admin or workflow edit access).
  • A clean field to route on, if you go the territory way. Usually State/Region or Country. More on that below.

If you’re on Starter, you can still set owners automatically through a few defaults (for example, unowned contacts who book a meeting on a rep’s scheduling page get assigned to that rep), but there is no rotation action.

Round robin or territory: how to pick

Round robin hands leads out in turn: Ana, Ben, Cara, Ana, Ben. Use it when any rep can sell to any lead and you care most about speed and fairness. It’s the right default for teams of 2 to 5 reps with one product.

Territory sends a lead to a named rep or team based on a property: state, country, industry, company size. Use it when reps own regions, speak different languages, or sell different products. HubSpot doesn’t have a dedicated territory module. You build territories with workflow branches on properties, and that’s fine for most small teams.

The common answer is both. Branch by territory first, then round robin within each territory team. If you have 6 reps split East (3) and West (3), each region gets its own rotation.

A worked example: if you get 120 inbound leads a month and 4 reps, pure round robin gives each rep about 30. If 80 of those leads come from the West and only one rep covers it, territory routing gives that rep 80 and the others 13 each. Run the numbers on last quarter’s leads before you commit. Lopsided territories are a staffing question, not a workflow question.

Step by step

1. Set up teams in HubSpot

Click the settings icon, go to Users & Teams, open the Teams tab and click Create team. Create one team per territory (for example “Sales - East”, “Sales - West”). Add reps as primary members. If you’re doing pure round robin, one team called “Sales - Inbound” is enough.

2. Clean the routing property

HubSpot branches need an exact match. HubSpot’s own docs give the example that “CA” will not match “California”. So:

  • On your forms, make State/Region a dropdown, not free text.
  • Run a quick list or view of contacts where State/Region contains abbreviations or typos, and fix them in bulk.
  • If you sell abroad, route on Country first and State/Region second.

3. Create the workflow

Go to Automation > Workflows, create a workflow from scratch, and pick the Contact object. For enrollment, use a trigger like:

  • Contact owner is unknown, AND
  • Lifecycle stage is any of Lead, Marketing Qualified Lead

Using “owner is unknown” means contacts that a rep already owns (say, from a one-to-one email) won’t get stolen.

4. Add the territory branch

Click the plus icon, choose Branch, then One property or action output. Pick State/Region (or your territory property). Add a branch for each value group:

  • Branch “East”: NY, NJ, MA, PA, CT
  • Branch “West”: CA, OR, WA, NV, AZ

Anything that doesn’t match lands in the None met branch. HubSpot checks branches in order and stops at the first match, so keep your groups non-overlapping.

If your territory logic needs two properties at once (for example “West AND more than 50 employees”), use the AND/OR logic branch type instead. You can add up to 20 branches there.

5. Add the rotation in each branch

In each branch, click the plus icon, expand CRM, and select Rotate record to owner. Set:

  • HubSpot user property: Contact owner (the default).
  • Rotate between: Teams, then pick the matching territory team. Or choose Specific users if you want to leave someone out.
  • Overwrite existing owner: off. Your trigger already excludes owned contacts, and this is a second guard.

For a territory with one rep, use Edit record and set Contact owner to that person directly.

6. Build the fallback

The None met branch is where leads with blank or odd locations go. Don’t leave it empty. Two options:

  • Rotate them across the whole sales team, or
  • Assign them to one person (often the sales manager or office manager) who fixes the data and reassigns.

I prefer the second for teams under 10. A human looking at 5 odd leads a week catches the junk.

7. Tell the new owner

After each rotation, add Send internal email notification or Send in-app notification to the new contact owner. Keep it short:

New lead assigned to you: {Contact first name} {Contact last name}, {Company name}. Source: {Original source}. Please call within 1 business hour.

8. Test, then turn it on

Create 3 test contacts: one East, one West, one with no state. Enroll them manually and check the workflow history. Delete the test contacts afterwards. Then turn the workflow on.

Common mistakes

  • Routing on free-text fields. “Calif.”, “california” and “CA” go three different ways. Fix the form first.
  • Forgetting seat types. A rep without a paid Sales or Service seat silently drops out of the rotation. Check seats when you hire.
  • Leaving lead owner sync on. If you route the Leads object instead of contacts, HubSpot’s docs say the “Sync lead owner with contact or company owner” setting has to be off for the rotation action to work.
  • No fallback. Leads in None met with no action stay unowned forever.
  • Rotating people on vacation. Rotation doesn’t know Ben is out for a week. Remove him from the team, or use Specific users, while he’s away.

When it’s worth getting help

If you have under 5 reps and one region, you can build this in an afternoon with the steps above. It gets fiddly when territories depend on company data that isn’t on the contact yet, when you also route deals or companies, or when you sync with another CRM. If that’s you, my HubSpot page explains how I work, and the B2B CRM cost calculator gives you a rough sense of what an hour of a rep’s time is worth.

Sources

Founding-client pricing · 3 spots per industry

Show me the manual work. I'll show you the system.

20 minutes by phone or video. You show me the task that eats the most time. Within 24 hours you get a one-page written plan with a fixed price. Yours to keep either way.

Free · Phone or video · Written plan within 24 hrs