Back to Blog

How to split leads between agents by territory (zip, state, city)

9 min read
How to split leads between agents by territory (zip, state, city)

Splitting leads between agents by territory comes down to three decisions: what a territory is for you (a list of zips, a zip prefix, a state or a city), whether two agents can hold the same one, and where a lead goes when nobody holds it. Each decision is one rule. Once the three are written, every lead that arrives is placed the same way, and the person who used to do it by hand with a map and a spreadsheet gets their mornings back.

This article walks through the three decisions in order, then shows the setup step by step. It assumes leads arrive with a zip, a state or a city field filled in, which is the case for almost every form and lead vendor.

Decide what a territory is for you

The word territory hides four different things, and the rule you write depends on which one you mean.

  • A set of zip codes. The most common shape for local services, solar, home services and Medicare. The agent covers these zips and no others. A county is this shape too: a county is a list of zips.
  • An area around a place. A radius is how people describe it, but a radius is not a rule you can enforce on a lead; the lead carries a zip, not a distance. In practice an area is a zip prefix (the first three digits, which US zips share with their neighbors) or a list of zips drawn from a map.
  • A state. The shape for anything licensed or appointed by state: mortgage, insurance, tax. The agent may work the whole state or only part of it, but the state is the hard boundary.
  • A city. Rarer, because city names are typed inconsistently, but useful when the lead source sends a clean city field and the agent works one metro.

Write down, for each agent, which of the four they hold. Most teams end up with one shape for the whole pipeline (all zips, or all states) and a handful of exceptions. The exceptions are the agents who will need two conditions instead of one.

Zip list, zip prefix or state: which to use

Once you know the shape, pick the operator that matches it. Three operators cover everything.

Territory shapeConditionExampleGood for
A set of zips, a countyzip is one ofzip is one of 33602, 33603, 33604 …Precise territories, counties, anything drawn on a map
An areazip starts withzip starts with 335A metro area in one condition, a Canadian FSA
A statestate equals, or state is one ofstate is one of TX, OK, ARLicensed and appointed agents, whole-state coverage
A citycity equalscity equals AustinOne agent per metro when the city field is clean

Two rules of thumb. Use the list when the territory has an exact edge that matters, because a prefix will always spill a few zips over. Use the prefix when the territory is roughly an area and you would rather write one condition than paste 120 zips. And when the boundary is legal, put the state above the zip: a state condition and a zip condition in the same AND group means a mistyped zip can never send a lead across a state line.

Lists sound tedious and are not: paste the column from a spreadsheet and each zip becomes its own entry. The tedious part is keeping the list current when an agent gains or loses a county, and a list you can edit one zip at a time is much easier to maintain than a prefix that quietly covers the wrong side of a river.

Overlaps: exclusive or shared

Two agents will eventually want the same zip. Before it happens, decide what the pipeline does with a lead that matches more than one territory.

Exclusive means one agent per lead. When two territories overlap, something has to break the tie: the agent in the higher tier, the agent with the larger weight, or the one who is not at their daily cap. The tie-break should be visible on the lead afterwards, otherwise the agent who lost it will assume it was random.

Shared means every matching agent receives the lead, each at their own price. Shared territories are how a seller sells the same lead two or three times, and the buyer knows the lead is shared and pays less for it. An overlap on a shared pipeline is not a conflict, it is the business model.

Most pipelines are one or the other, and the mode is set once for the pipeline. The mixed case, an exclusive territory next to shared ones, is a real need too, and it is handled with tiers and prices rather than with a third mode. Exclusive vs shared territories covers how to run both on one pipeline.

The zips nobody owns

Every territory map has holes: a new zip, a county nobody bought, a rural area no agent covers. A lead from a hole has to go somewhere on purpose. The three honest options are:

  1. A backfill agent. An agent with no territory condition at all, placed below the territory agents, who takes whatever they do not. Usually a national buyer, a call center, or your own team. This is the default for a reason: the lead is sold, and sold at a lower price if you want.
  2. A hold. The lead stays unrouted in your dashboard and someone places it by hand. Fine at ten leads a day, painful at a hundred.
  3. A rejection. The lead is refused at intake with a reason, so the source knows the zip is not covered. Right when you are paying per lead for traffic you cannot sell.

Whatever you choose, do not let the answer be silence. A lead that matches no territory and disappears is the hardest failure to diagnose a week later, when the agent asks why volume in their county dropped and the real cause is a zip that was never on anyone's list.

Set it up (screenshots)

The setup below takes about ten minutes on a pipeline that already receives leads with a zip field.

  1. Check the field. Open the pipeline's intake and confirm the zip (or state, or city) field exists and is mapped from what the form sends. If the zip arrives as a number, ask the source to send it as text: a leading zero dropped in a spreadsheet export turns 02134 into 2134 before the lead reaches you.
  2. Give each agent a condition. Open the agent on the pipeline canvas and add a condition under When: zip is one of with the pasted list, or zip starts with the prefix, or state equals the state. For a licensed agent, put the state condition and the zip condition in one AND group.
  3. Choose exclusive or shared for the pipeline. One buyer per lead, or all matching buyers. Then set each agent's cap and price.
  4. Add the backfill. Create one more agent with no condition and put it in a lower tier, so the territory agents are asked first and the backfill takes the rest.
  5. Send one test lead per territory, plus one from a zip nobody covers, and read the routing decision on each: who matched, who was chosen, why the others were skipped.
📸 SCREENSHOT: territory-zip-list.jpg (already in /public/docs-assets, upload as an image block here): a buyer's rule with one condition, zip is one of a pasted list shown as chips, and the plain-English preview underneath.
📸 SCREENSHOT: territory-tiers-backfill.jpg (already in /public/docs-assets, upload as an image block here): the pipeline set to one buyer per lead, a Primary tier holding three territory buyers with their prices and caps, and a Backfill tier below with one no-conditions buyer.

The step-by-step guide with the example pipeline lives in Routing by territory in the docs, and Route leads by zip code, state or city shows the three rules in the app.

Keep it honest: the routing trace

Territories create arguments. An agent will say they should have received a lead from their county, or that a lead they were billed for came from outside it. The only way to settle either in under a minute is a record on the lead that says, in plain words, which territories matched, which agent was chosen and why, and which agents were skipped and for what reason (out of territory, at cap, closed for the night).

Read the trace when you test the pipeline, and read it again the first week it runs. Two things show up there that never show up in a spreadsheet: territories that overlap by accident, because two lists share a zip, and territories with a hole, because a prefix stopped one digit short. Both are a one-line fix once you can see them.

The same three decisions apply whatever the vertical. Solar installers usually hold exclusive zip lists with a daily cap, as described in solar lead distribution; home services contractors hold a service area that is a zip list plus a job type, as in home services lead distribution. The territory is the first rule in both, and the rest of the pipeline sits on top of it.

Frequently asked questions

What is the simplest way to split leads between agents by territory?

One condition per agent on the zip, state or city field of the lead: zip is one of a pasted list, zip starts with a prefix, or state equals a state. Set the pipeline to exclusive or shared, and add one agent with no condition below the others to take the leads nobody's territory covers.

Should I use a zip list or a zip prefix?

Use a list when the edge of the territory matters, because it is exact and you can edit it one zip at a time. Use a prefix when the territory is roughly an area and one condition beats pasting a hundred zips. When the boundary is legal, add a state condition above the zip in the same AND group.

What happens when two agents cover the same zip?

On an exclusive pipeline one of them gets the lead, decided by tier, weight and caps, and the lead's trace says which and why. On a shared pipeline both receive it, each at their own price. Decide the mode before the overlap happens, not after.

Where do leads from a zip nobody covers go?

To a backfill agent with no territory condition, placed in a lower tier so the territory agents are asked first. Without a backfill, the lead stays in your dashboard as unrouted for you to place by hand. Never let it disappear silently.

Can I route by a radius around an office?

Not as a radius setting, because a lead carries a zip, not a distance. What works is a zip prefix for an area or a list of zips drawn from a map. Most radius requests turn out to be a fixed set of zips that rarely changes.

Start distributing leads smarter today

Ingest. Score. Route. Track. One platform.