Almost every territory map starts as a spreadsheet of ZIP codes. It is the obvious thing to do: the codes are short, everybody has them, and a customer address already carries one. The map that results is wrong in ways that do not show up until somebody complains, and the reason is that a ZIP code is not a shape at all.
What a ZIP code actually is
The United States Postal Service assigns ZIP codes to delivery routes, not to areas. A code is the set of addresses one carrier walks or drives. That set has no boundary, because it does not need one: the carrier does not need to know where the code ends, only which mailboxes are on the round.
Several consequences follow immediately.
A code can serve addresses on both sides of a street while a neighbouring code serves the building between them. Codes exist that are a single building, and codes exist that cover most of a county. Some are a single point, assigned to a post office box bank with no geography at all. And the set changes: the Postal Service adds, retires and reassigns codes continuously, without announcing it to anybody outside the mail stream.
None of that is a defect. It is a routing scheme for mail, doing exactly what it was designed for.
Where the shapes come from, then
When software draws ZIP codes on a map, it is almost always drawing ZCTAs: ZIP Code Tabulation Areas, published by the Census Bureau. A ZCTA is built by taking census blocks and assigning each to whichever ZIP code most of its addresses use. The result is a polygon, which is what a map needs.
It is also an approximation of an approximation, and it is worth knowing which way it is wrong:
- ZCTAs are updated with the census, so they lag the Postal Service’s changes by years.
- Codes with no residential addresses, such as a post office box bank, get no ZCTA at all. There is nothing to draw.
- The boundary follows census block edges, which follow roads and rivers, not the carrier’s round. Along the edge, the ZCTA and the ZIP code disagree about individual addresses.
So “this address is in ZIP 23220” and “this address is inside the 23220 polygon” are two different claims, and near an edge they differ.
The three failures this produces
Gaps nobody drew
A territory list assembled from ZIP codes has holes in it: the codes nobody thought to include, the ones created since the list was written, and the ones that never had a shape to begin with. In a spreadsheet they are invisible, because a missing row looks exactly like a row that is not there for a reason.
Drawn on a map they are obvious. This is the whole argument for looking at coverage as a picture rather than a list, and it is why the coverage tool exists and needs no account.
Overlaps that turn into two quotes
The same code appears on two lists because two people built two territories a year apart. Nothing catches it, because nothing is comparing the lists. The customer finds out when two of your franchisees call them the same afternoon.
The street that gets cut in half
The failure that produces the angriest phone call. A code boundary runs down the middle of a road your crews drive along every day, and the houses on the far side are told nobody serves them. Everyone involved can see that the answer is absurd, and no one can find the setting that caused it, because the cause is not a setting: it is that the boundary was never drawn with that street in mind.
What to do instead
Not “stop using ZIP codes”. They are a perfectly good way to describe a territory in a contract, and everybody in the business already speaks them. The change is in what happens at decision time.
Decide on the address, not on the code. Geocode the address to a point and test the point against the boundary you actually govern. A street that straddles an edge is then decided by where the house is rather than by which list its code ended up on.
Know how precisely the address was located. A rooftop match and a ZIP centroid are both a latitude and longitude, and treating them as equally trustworthy is how a decision made from the middle of a postal area gets presented as fact. Any decision worth explaining should be able to say which one it had.
Look at your coverage as a shape. Once a year is enough to catch the holes that appeared while nobody was looking.
Let the boundary be a boundary. ZIP lists are a reasonable way to build one. Keeping the list as the map means inheriting every property of a scheme designed for delivering mail, including the ones that have nothing to do with where you work.