Skip to content

Lead Routing by Fit, Territory and Capacity

By Andrew Mark, Co-founder, Mir Tech

Published Updated 6 min read

Lead RoutingCRMSalesforceAutomation
On this page

"Whoever is next" works for two reps and one product. It stops working the week a territory splits, a rep goes on leave, or a lead from an existing customer lands with a stranger. The lead is not lost. It sits, and nobody notices until the prospect has moved on.

Fix that with rules before you reach for a model. Rules solve most routing problems, and a model needs them as a fallback anyway.

Routing is a list of questions asked in order

A waterfall of five checks a new lead passes through: existing owner, territory, segment, capacity and fallback queue.
Each lead falls through the checks until one assigns an owner

Write the questions down before you open any tool. Is there already an owner? A lead from a company with an account owner or an open opportunity usually belongs to that person. Does the lead fit a named-account list or a territory, whether country, region, state or something else? Does it fit a segment, such as company size, industry or language, that decides which rep has the right experience? Does that rep have capacity, since a perfect match who is full or on leave is not a match today? And what happens when nothing matches?

Each question needs a clean field in the CRM. If "country" is free text and "industry" has forty spellings, fix the data first. The data enrichment workflow covers how to standardize the fields that routing depends on.

The order matters more than any single rule

A common sequence:

  1. Existing account owner or open opportunity owner
  2. Named-account list
  3. Territory
  4. Segment or specialty (language, vertical, product line)
  5. Capacity check within the matching group
  6. Tie-break: rotate, or pick the rep with the fewest open leads
  7. Fallback queue, owned by a named person

Put the sequence on one page and share it with every rep. People accept routing they can read and predict, and resent routing that feels random.

Keep it proportionate. Two reps and a founder might need only steps 1, 4 and 7. If the founder is the one catching every lead, the founder-led scale approach shows how to hand them over without the founder staying the bottleneck.

Where to implement the rules

You have three realistic options.

OptionGood forWatch out for
CRM assignment rulesSimple criteria-to-owner or criteria-to-queue mappingRotation across a group usually needs extra work
Record-triggered FlowOrdered rules, capacity checks, custom fieldsNeeds an admin who can maintain it
Routing app or automation platformMany teams, complex rules, audit trailsExtra cost and another system to own

For most teams the Flow is enough. Trigger it when a Lead is created and run the decision order as a series of checks. When a rule matches, set the owner, stop, and write the reason to a text field such as Routing_Reason__c ("Territory: DACH, segment: mid-market, lowest open count"). When a rep asks why they got a lead, or you audit the system a month later, the answer is on the record.

If an automation platform orchestrates this, check how its trigger works. Workato's Salesforce connector, for example, offers a New record trigger that polls every five minutes and separate real-time triggers. Five minutes may be fine for routing and too slow for a hot inbound lead. Its real-time triggers rely on Salesforce Workflow rules, which Salesforce is retiring, and Workato recommends Flows for new recipes. Check the current guidance before you design around a real-time trigger.

Capacity needs three fields

Capacity stops one rep from receiving every good lead, and it does not need to be clever. Add three fields to the user or to a custom rep-settings object: a yes/no switch for accepting leads, turned off for leave or onboarding; a maximum number of open leads that the sales manager owns; and a count of current open leads that a Flow or scheduled job keeps up to date.

The rule filters the matching group to reps who are accepting and below their maximum, then picks the lowest count. If the group is empty, the lead falls through to the next rule or to the queue.

Define "open" strictly: a lead in an active status with no completed first touch. If it means every lead a rep has ever owned, capacity fills with old records and nobody gets new ones. Keep these counts inside the CRM where you can. Salesforce limits API requests per 24 hours by edition, and an external tool that queries every rep for every new lead can burn through the allowance.

The fallback queue is a process, not a status

A queue works only if someone owns it. Set a service level, such as "unassigned leads are claimed or reassigned within one business day", and alert when a lead waits longer. Make sure a failed automation still drops the lead in the queue, and route errors to a person.

Speed matters as much as accuracy. A good-enough owner who replies in an hour beats the perfect owner who replies in three days. The lead scoring pipeline shows how to flag the leads that cannot wait.

When a predictive score is worth adding

We would recommend against a model that scores every lead against every rep and picks the highest. With a small team, the result mostly reflects who happened to work which deals. It can send every strong lead to one person and starve newer reps of the practice they need. A lead-level model, which estimates how likely a lead is to convert, is safer. Use it to order the queue or to choose a segment, and let the rules choose the person.

You also need history. There is no magic number of deals, but you need enough won and lost outcomes, with consistent fields, that a held-back test set gives stable results. If the data is thin or messy, improve the rules instead.

Gradient-boosted trees suit this kind of structured data. Amazon SageMaker offers XGBoost as a built-in algorithm for binary classification, and open-source libraries do the same job. The outline is short:

  1. Export closed leads with attributes such as source, company size, industry, region and product interest.
  2. Encode the categories and split the data, keeping the won/lost ratio the same in the training and test sets.
  3. Train, then evaluate on the held-out set with a metric such as AUC. A score near 0.5 means the model is no better than guessing, so do not deploy it.
  4. Serve the score through an endpoint or batch job and write it to a field on the lead.

Compare the model with a plain baseline, such as scoring by source alone. If it does not clearly beat the baseline, it is not paying for itself.

Plan your own monitoring. AWS documents SageMaker Model Monitor but says it is no longer open to new customers. A monthly comparison of score distributions and conversion by score band will show most drift.

Pilot on one lead source

Do not move every lead at once. Pick one source, such as webinar registrations, run the new routing on it while the rest keep the old method, and mark routed leads with a field so you can compare the groups. Track the time from creation to first touch, the share of leads accepted versus reassigned, the number sitting in the queue, and conversion from lead to opportunity by cohort. Small cohorts swing wildly, so treat early numbers as signals. Pipeline velocity metrics explains how to read them together.

The symptoms tell you where the rules are weak. Ownerless leads mean a gap: check the routing reason field and the queue for patterns. One rep with most of the leads means capacity or the tie-break is missing. Frequent reassignment means the segment rules do not match how the team actually sells, so ask the reps. Split ownership usually means weak matching of leads to existing accounts, which you fix with deduplication before routing.

Related Content