Multi-site businesses lose leads between the brand and the branch. How to route every inquiry to the right location and still get one comparable report.
An inquiry arrives at 7:48pm through the form on your main website. The person types a ZIP code, picks a service, and leaves the location dropdown untouched because nothing told her it mattered. That submission now has to reach one of your four sites, and nothing in your setup knows which one. So it sits in a shared inbox until someone at head office forwards it the next morning, lands at the wrong branch, and gets forwarded again. By the time the right team sees it she has booked with a competitor. Nobody records it as a lost lead, because nobody recorded it at all.
Routing failures in a multi-site business rarely announce themselves. They show up as a slow month at one branch and a stretched rota at another, and both get explained away as local market conditions. The leaks are specific, and all of them are invisible from the center.
Then there is the reporting failure, which compounds. Head office wants leads, bookings, speed to lead and close rate per site, comparable. What it gets is four spreadsheets with four definitions, assembled late, by hand, by someone who then has to defend the numbers in a meeting.
Almost every multi-site routing problem traces back to one structural gap: location is not a field on the record. It lives in a form notification, in a phone transfer, in somebody's memory, or in whichever inbox the message happened to land. Because it is not a field, it cannot be used to route, to filter permissions, to segment reporting, or to audit a mistake after the fact.
Everything downstream inherits that gap. You cannot give a branch manager their own dashboard if the records do not know which branch they belong to. You cannot stop two sites working the same lead if there is no owner field to check. You cannot tell whether your routing is accurate, because there is nothing to compare the final location against. Businesses in this position usually buy more tools, when what they need is one mandatory field and a documented order of precedence for filling it in.
The two requirements sound contradictory. Head office wants everything in one place with consistent definitions. Each location manager wants their own data, their own team and their own pipeline, with no visibility into a neighbor's performance or a neighbor's customers. That second requirement is partly a trust matter and often a data protection one, because staff at one site browsing another site's customer records is an access control problem under most privacy regimes.
They are not contradictory. One data model with a mandatory location field, a permission layer that filters on it, and reporting that aggregates above the filter satisfies both at once. Managers see a filtered slice. Head office reports across the slices. Nobody assembles a spreadsheet. If you want the full field list, pipeline design and permission matrix, that is set out in the multi-location routing and reporting build.
Decide the codes before anything is built and never reuse one for a different site. Use short codes rather than display names, so a rebrand does not break every filter and every report. Renaming a location later is cosmetic. Recoding one destroys your history.
Not just contacts. Opportunities, appointments, tasks, conversations and form submissions all need it. Alongside it, store how the location was assigned, how confident that assignment is, and what the previous location was if the record has moved. Those three extra fields are what let you audit routing later instead of arguing about it.
Map ZIP code or zip prefixes to location codes in an editable table that a manager can maintain without touching workflows. Handle overlaps explicitly by naming a primary and a secondary site rather than splitting a prefix. Expect two or three sessions of argument about border areas, and get the managers who will live with it to sign it off. This is the single most underestimated task in the whole project.
Evaluate mechanisms in strict order and stop at the first that resolves. An explicit choice on the form beats everything, so make that field required and prominent. Then a dedicated inbound number or location-specific form, which needs no inference at all. Then page and campaign context. Then the territory table. Round-robin is a last resort, used only across sites with open capacity, and always flagged as a fallback so the first message asks rather than assumes.
Identical stage names and identical stage-entry criteria, copied per location. Identical stages are what make the roll-up possible. Separate pipelines are what make the permissions clean. Add a terminal transferred-out stage so a lead that moves sites does not vanish from the sending site's funnel without explanation, and keep a central exceptions pipeline for out-of-area and multi-location inquiries.
A staff member requests a transfer, gives a reason, and the workflow does the rest: it stamps the previous location, opens a fresh opportunity at the receiving site with the full conversation history and the original campaign intact, assigns a new owner, notifies both teams, and closes the old owner's task so nobody works a lead they no longer own.
Pipeline views, calendar views, contact search, exports and saved reports, notification routing, and conversation inboxes. Most builds secure the first two and leak through the other four. Test it by logging in as a real location user and deliberately trying to find a contact you know exists at another site. Repeat that test after every configuration change and every new site you open.
One manager insists their site needs an extra stage, and the roll-up report dies. Differences between sites stop being real and become definitional. This has to be settled by the owner before launch, not negotiated site by site afterwards.
ZIP code is a good signal and a bad sole signal. It ignores which services a site actually offers and whether it has any capacity. Check the service-by-location matrix and the capacity flag before you commit the assignment, or you will book a customer into a site that cannot serve them.
This destroys the model on day one. If head office sees every alert, head office becomes the router again. Every workflow notification should address the named owner or the location's own channel, and a response-time breach at one site should wake that site's manager rather than the group.
A silent edit leaves no reason, no audit trail and no closed task at the sending site. Within a quarter nobody can explain why transfers between two sites run one way, and the fix becomes guesswork instead of a correction to the territory table.
If each site has its own number and suppression is per number, a customer who stops messages from one branch starts receiving them from another. Apply a brand-level do-not-message flag that every workflow checks, and test it by opting out on one number and attempting a send from a different one. Messaging rules vary by jurisdiction, so confirm the specifics with your own counsel.
Multi-site reporting is only worth building if you watch a small number of honest numbers. These are the ones that tell you something you can act on.
Capture baselines before you change anything: current speed to lead per site and current conversion per site, however rough. Without them the first month of comparisons proves nothing. If routing by territory is the part you most need to get right, the territory-based lead routing build covers the table design in more depth, and you can book a call to work through your own site list and corporate structure before anything gets built.
Yes, one local number per site, and it is close to non-negotiable. A local number lifts answer rates, and more importantly it means a reply lands with the team that owns the lead rather than in a central inbox. Keep one additional brand number for the inbound menu and voice routing. Register every number under the same messaging campaign and add new ones as sites open.
That is a deliberate choice rather than a technical limitation, and the sensible default is no. Managers see their own site and their own team. Head office sees the roll-up. Whether to publish a cross-site league table is a culture decision with real consequences either way, so it should be the owner's explicit call rather than an accident of configuration.
It should trigger a transfer workflow rather than an edit. The record keeps its original source and campaign, the receiving site gets the full conversation history and a new owner, the sending site keeps a transferred-out record, and the reason is stored. That way attribution survives the move and the pattern of transfers becomes data you can fix.
Expect several weeks rather than several days, and pilot two sites before rolling out to all of them. Choose two with a contested border, because that is exactly where the routing will fail. Run the pilot for about a month, measure routing accuracy, fix the territory table, then extend. Migrating historical records with the location field populated matters too, or your first month of comparisons is meaningless.
Every article on this blog sits on top of a build guide in the AppBO library. It is the same system, written out end to end: the problem it solves, the architecture behind it, every workflow with its triggers and conditions, and what measurably changes once it is live. If this piece made the case, the build guide shows you the wiring.
Open the build libraryBring us how your business actually runs today and we will tell you which system to put in first, what it will take, and what it should change.
Book a call