RevOps Brief publishes practitioner-written deep dives, frameworks, and teardowns for revenue operations professionals. No vendor sponsorship influences our editorial content. Subscribe free at www.revopsbrief.com
The number that got this project approved was $2M. That's the figure we put in front of the CFO to explain what broken lead routing was costing annually. Not in abstract terms, but in actual mapped pipeline leakage from delayed contact, duplicated effort, and leads that were routed but never worked. It was the number that made the business case undeniable.
But I want to be honest with you about something. The $2M was not the real problem. It was the number that got the project funded, and I'm glad we built the model. But the thing that made this feel urgent, day to day, was simpler and more embarrassing than a revenue figure. Nobody in the organisation could explain, with any confidence, why a given lead had landed where it did. Not the routing admins. Not the regional ops managers. Not RevOps. When a rep disputed an assignment, we had no authoritative record to point to. When SLA misses piled up in APAC, we couldn't trace which rule had fired incorrectly and which hadn't fired at all. The routing process was a black box that only two people fully understood, and both of them had other jobs to do and were getting increasingly reluctant to be the sole custodians of something this fragile.
We were not solving a speed problem. We were solving a trust problem. The speed improvement was a consequence. The audit trail was the point.
— Global RevOps Practitioner, Enterprise SaaS (anonymised at contributor's request)
1. The Inheritance: What Growth Through Acquisition Leaves Behind
1.1 The Business Context
The company operates across North America, EMEA, and APAC, with multiple product lines serving enterprise, mid-market, and SMB segments. It grew primarily through acquisition (a common path for enterprise SaaS), which meant that each region had its own GTM motion, its own CRM configuration preferences, and its own quietly held definition of what "urgent" meant when an inbound lead arrived.
The routing process, such as it was, had been built incrementally. North America had a spreadsheet that worked reasonably well for the original US territory structure. EMEA had a different spreadsheet, maintained by a different person, with different column conventions. APAC had a hybrid of both, plus a set of Slack channels where regional ops managers handled the exceptions that neither spreadsheet could accommodate. When a lead arrived outside office hours in its originating region, the fallback was effectively "someone will pick it up eventually."
This wasn't negligence. It was engineering under constraint. Real people building real workarounds to keep inbound moving when the underlying system couldn't do the job. The problem is that workarounds calcify. What starts as a temporary patch becomes institutional knowledge. And institutional knowledge is invisible to anyone who wasn't there when the patch was applied.
"The problem was never just speed. It was the fact that nobody could explain why a lead landed where it did. When a rep pushed back on an assignment, we had no record to point to. That's not a routing problem. That's a credibility problem."
1.2 The Moment It Became Undeniable
There was no single breaking point. There rarely is with operational drift. What there was instead was a slow accumulation of signals that finally crossed a threshold. In Q1 2025, we ran our first formal SLA audit across all three regions. The results were stark: global SLA attainment was running at 43%. That meant more than half of inbound leads were not being touched within the agreed response window. In North America, the number was better. In APAC, it was worse. In EMEA, it varied so much by country that aggregating it into a single number was almost meaningless.
At the same time, the sales ops team surfaced a duplicate assignment analysis showing an 11.8% rate, meaning roughly one in nine inbound leads was being assigned to more than one rep, either simultaneously or sequentially after a reassignment nobody had logged. Reps were arguing over ownership on Slack. Customers were getting outreach from two different people on the same day, both of whom appeared to have no idea the other had reached out. One prospect had actually replied to the second rep asking why the company kept contacting them. That one made it all the way to the CRO's inbox. That was the week the project moved from "RevOps initiative" to "executive priority."
We mapped it to revenue impact using a conservative model: average contract value, estimated conversion rate differential between leads contacted within one hour versus those contacted after 24 hours, plus the cost of duplicate-handling and the estimated percentage of leads that were routed but simply never followed up on because ownership was ambiguous. The number that came out was approximately $2M in annual pipeline leakage. Not worst-case. Middle estimate.
The hardest losses to see in any revenue operation are the ones distributed across thousands of small failures. No single event triggers an alarm. Leads are routed. Reps are assigned. The CRM shows green. But somewhere between assignment and first contact, the window closes. Nobody tracks the delta between "routed" and "actually worked."
1.3 Diagnosing the Five Root Failures
Before we could design a solution, we needed to understand exactly where the process was failing. Working with the sales ops leads from each region, we identified five distinct failure modes that were present consistently across the global footprint:
- Manual queue checks. Response time averaged 24 hours on certain routes because the queues were checked by humans on their own schedules, not monitored in real time. If the person who owned the routing spreadsheet was in a meeting, travelling, or simply overwhelmed, leads sat.
- Rule ambiguity at regional boundaries. Routing accuracy sat at roughly 71% because the edge cases (leads from multinational accounts, leads with incomplete geo data, leads matching multiple product lines) had no clear rule. The human fallback was inconsistent by definition.
- No de-duplication layer. The spreadsheet process had no mechanism for detecting whether a lead was a duplicate of a contact already in active sequence. The result was a 11.8% duplicate assignment rate and the rep conflict and customer friction that came with it.
- Retrospective SLA monitoring. Leaders learned about SLA misses after the fact, usually through weekly reporting. By that point, the leads had long since gone cold. There was no mechanism to catch a breach in real time and trigger escalation while the lead was still warm.
- Ownership living in too many places. Because the process spanned spreadsheets, CRM fields, Slack threads, and individual email inboxes, there was no single authoritative record of who owned a lead and when it was assigned. Reporting was unreliable. Audits were painful. Disputes were unresolvable.
For RevOps leaders, the absence of explainability is almost always the earliest diagnostic signal that a process has outgrown its design. When you can't answer "why did this lead go here?" from a system record, the process is running on tribal knowledge. And tribal knowledge does not scale, does not survive attrition, and cannot be audited.
2. Designing the Routing Engine
2.1 The Core Design Principle: Deterministic First
The most important design decision we made was architectural, not technical: every lead would follow a deterministic rule path, and manual intervention would only occur as a documented exception. Not the other way around.
This sounds obvious. But the existing process was essentially the inverse: a human made the primary decision and the system recorded the outcome. Flipping that relationship, so the system makes the decision and the human can only override it with a documented reason, is a bigger cultural shift than it sounds. It means the system has to be trusted enough that reps and regional ops managers don't feel compelled to route around it. Getting there requires both technical robustness and stakeholder buy-in. We needed both.
The second principle was equally important: every decision needed an audit trail. Not just a log of the outcome, but a log of which rule fired, in which order, against which enriched fields, with which timestamp. That audit trail was the answer to every future dispute. It was also the foundation for the governance model. You cannot version-control a rule you cannot read.
"Every exception had to be visible, versioned, and explainable. If you can't point to a log entry, the exception didn't happen. It was just a workaround."
2.2 What the Routing Engine Actually Considers
The routing engine evaluates eight dimensions in order of priority before making an assignment. Order matters enormously. The classic mistake in global routing design is allowing regional preferences to override strategic account logic, which produces exceptions that permanently erode the integrity of the system. We built the hierarchy deliberately, with explicit sign-off from Sales leadership on which criteria could override which others.
| Priority | Dimension | Logic Applied | Override? |
|---|---|---|---|
| 1 | Named Account Match | Is this lead from a strategic named account with an existing owner? | Never overridden |
| 2 | Active Opportunity Match | Is there an open deal in this account? Route to the deal owner. | Never overridden |
| 3 | Language & Regional Coverage | Which reps are active in the lead's country/language pair right now? | Only by capacity |
| 4 | Product Interest | Which product line did the lead engage with? Route to product-aligned rep. | Only when no coverage |
| 5 | Segment / Tier | Enterprise, mid-market, or SMB? Route to correct segment pool. | Allowed with reason code |
| 6 | Rep Capacity | How many leads is each eligible rep holding? Load-balance within pool. | Allowed by manager |
| 7 | Coverage Hours | Is the target rep currently within defined working hours? | Fallback to queue |
| 8 | Fallback Queue | No eligible rep found: assign to monitored regional fallback queue. | N/A |
The fallback queue deserves specific mention because it's where most routing systems quietly fail. It's tempting to treat the fallback as a safety net that you hope never gets used. In practice, the fallback fires on every lead that does not fit cleanly, which in a global enterprise with incomplete enrichment data is a meaningful percentage. We built the fallback queue as a first-class owned object with an assigned manager, a 2-hour SLA, and its own reporting. If the fallback queue SLA is slipping, something is wrong with the rules above it.
2.3 The Logic Stack in Practice
Here is the actual decision flow that fires for every inbound lead, in sequence. Each step either produces an assignment or passes the lead to the next step. The process completes, one way or another, in under 90 seconds for 99% of leads.
Step 7, the immutable log, is non-negotiable. It took some political capital to enforce this, because some regional managers initially wanted the ability to reassign leads quietly without a record. We pushed back on that. Hard. An unlogged reassignment is indistinguishable from the old spreadsheet process. It's just a new tool doing the same undocumented thing. The log is what makes the whole system defensible.
3. Building It Without Breaking the Business
3.1 Phasing the Rollout
We rolled out the new routing engine in three phases over fourteen weeks. The sequencing was deliberate: we started with the region that had the clearest territory structure and the least political complexity (North America) validated the system there for four weeks, then expanded to EMEA and APAC simultaneously in a second wave. Running everything at once would have been faster on paper. In practice it would have produced a flood of edge cases, regional exceptions, and confidence-eroding early failures. Phased rollout meant the first region served as a live test environment, and the lessons it generated fed directly into EMEA and APAC configuration.
| Phase | Scope | Duration | Key Activities |
|---|---|---|---|
| Phase 1 | North America | Weeks 1-4 | Rules build, CRM integration, rep capacity model, SLA timer activation, log structure validated |
| Phase 2 | EMEA + APAC | Weeks 5-10 | Regional rule configuration, coverage hours mapping, language pair routing, fallback queue setup per theater |
| Phase 3 | Global consolidation | Weeks 11-14 | Cross-regional named account rules, global KPI dashboard, governance council launch, training and documentation |
3.2 The Enrichment Problem
The single biggest technical challenge was not the routing logic itself. It was the enrichment data quality that the routing logic depended on. A routing engine that evaluates eight dimensions is only as good as the field values it's evaluating against. In our case, approximately 34% of inbound leads arrived with incomplete geo data, 22% had company size fields blank or unreliable, and a meaningful percentage had firmographic data that had been enriched at some point in the past but not refreshed since the contact last engaged.
We made a deliberate architectural choice not to block routing on missing enrichment. A lead with incomplete geo data should still route somewhere , to the best available regional fallback, rather than stall in a pre-routing queue waiting for a human to clean it. The routing engine therefore has two paths for every dimension: a primary path that fires when the field is populated and reliable, and a secondary path that fires when it is not. Every secondary-path assignment is flagged in the log as an enrichment-contingent routing decision, which feeds a weekly enrichment quality review.
This also forced an honest conversation about our enrichment vendor coverage for APAC markets, where our primary provider's accuracy was significantly lower than it was for North America and Western Europe. We built a custom fallback enrichment layer for APAC that ran secondary geo matching against domain and IP data when the primary enrichment failed. It's not elegant. It works.
3.3 Handling Exceptions Without Letting Them Multiply
Every enterprise routing implementation accumulates exceptions. There are always accounts that need to be handled differently: a strategic relationship that routes directly to a named CSM regardless of territory, a language exception for a rep covering a secondary market, a temporary capacity override for a rep returning from leave. that routes directly to a named CSM regardless of territory, a language exception for a rep covering a secondary market, a temporary capacity override for a rep returning from leave. These are legitimate. The question is whether you handle them in a way that keeps the system legible or in a way that gradually turns it into a more sophisticated spreadsheet.
We built a formal exception framework from the start. Every exception required four things: a named business reason, a system owner by role, an effective date, and a sunset date. No permanent exceptions. If a sunset date expired and no one renewed the exception with a new business reason, the rule reverted to default. In the first three months, we processed 41 exception requests. Seventeen had sunset dates that expired without renewal. Of those seventeen, twelve had stopped being relevant: the rep had left, the account had progressed, the territory had changed. The sunset mechanism was the single most effective tool we had for preventing the system from re-accumulating the legacy complexity we'd just removed.
- Business reason: One sentence explaining why the default rule doesn't apply. Must reference a named account, product situation, or coverage gap. Not a preference.
- Owner by role: Which role is responsible for this exception being correct? Ownership doesn't transfer when the individual leaves.
- Effective date: When does this exception start? Prevents backdating of disputes.
- Sunset date: When does this exception automatically expire? Maximum 90 days for new exceptions; up to 180 days for validated long-running cases. No permanent exceptions without quarterly governance review sign-off.
3.4 Change Management: What Actually Created Adoption
I want to be direct about something. The hardest part of this project was not building the routing engine. The routing logic, once we had the hierarchy agreed, took less time to configure than any of us expected. The hard part was the reps. Specifically, the reps who had learned to work the spreadsheet system in ways that benefited them, understanding which combinations of Slack message and personal relationship would get a high-value lead reassigned in their direction, and who perceived the new system as a threat to that informal advantage.
We addressed this in three ways. First, we made the equity argument explicit. Under the old system, reps in time zones adjacent to the routing admins had a structural advantage over reps in APAC, because response time to exceptions was faster during business hours for the admin's timezone. The new system was genuinely fairer. We showed that data in the first town hall we ran after Phase 1 launch, and it landed with the APAC team in a way that nothing else could have.
Second, we gave reps visibility into their own routing status for the first time. A dashboard that shows you how many leads you've been assigned this week, where they came from, and what your current load is relative to peers is a surprisingly powerful adoption tool. People are more willing to trust a system when they can see what it's doing.
Third, and this is the one I'd most encourage others to prioritise, we made the escalation path fast and clear. If a rep believed a routing decision was wrong, they could flag it in under 30 seconds through the CRM, and a RevOps analyst would review it within two hours. We logged every escalation, tracked the outcomes, and fed the patterns back into rule refinement. In the first month, we received 63 escalations. Forty-one were confirmed as correct routing and the rep was shown the log. Seventeen led to rule refinements. Five were confirmed routing errors we hadn't caught. A system that handles 63 escalations cleanly and improves from seventeen of them is building rep trust faster than any communication campaign could.
4. What Changed, and What We're Honest About
4.1 The Performance Numbers
Three months after global rollout, here's where the key metrics landed relative to baseline. I want to present these alongside the context that makes them meaningful, because the number in isolation doesn't tell you whether you're looking at a real improvement or a statistical artifact of the measurement change.
| Metric | Before | After (3 months) | Change | Notes |
|---|---|---|---|---|
| Speed-to-Lead (median) | 24 hours | 4 minutes | 99.7% reduction | Median, not mean. Mean was skewed by legacy queue outliers. |
| Routing accuracy | 71% | 96% | +35% | Measured by rep escalation outcomes + quarterly audit |
| Duplicate assignment rate | 11.8% | 1.4% | −88% | Residual 1.4% are enrichment failures under investigation |
| SLA attainment (global) | 43% | 94% | +119% | SLA definition unchanged; measurement more rigorous |
| Estimated annual pipeline leakage | ~$2.0M | ~$0.2M | ~$1.8M recovered | Conservative model; same methodology as baseline estimate |
| Escalations per 1,000 leads | N/A (not tracked) | 8.2 | — | New metric; used for ongoing rule refinement |
| Exception rules active | ~140 (estimated) | 41 | −71% | Only 41 have passed the four-field exception framework |
The SLA attainment figure warrants a footnote. Part of the improvement reflects genuine process change. Part of it reflects that we are now measuring SLA attainment more rigorously than before, the old tracking system missed leads that were manually routed outside the CRM. We've been transparent about this distinction internally. The combined effect is still dramatically positive; we just want the number to be trusted rather than inflated.
4.2 The $2M Number, Breaking It Down Honestly
The pipeline leakage estimate was always the headline. It's also the number most likely to be challenged, so I want to be explicit about where it came from and how much confidence to attach to each component.
| Leakage Source | Mechanism | Est. Annual Value | Confidence |
|---|---|---|---|
| Delay-driven conversion loss | Leads contacted after 24hrs convert at measurably lower rates than those contacted within 1 hour. Applied to volume and ACV. | ~$1.1M | High, based on internal conversion data by response time cohort |
| Duplicate handling waste | Rep time lost on duplicate outreach + prospect friction from receiving duplicate contact. Estimated as lost selling hours × ACV per rep. | ~$0.5M | Medium, selling hours estimate has range |
| Routed-but-never-worked | Leads assigned with no documented first activity within 5 business days. Assumed lost from funnel. | ~$0.4M | Medium, attribution to routing vs. prioritisation is imprecise |
| Total | ~$2.0M | Conservative middle estimate |
The honest version of this number is: somewhere between $1.4M and $2.8M, depending on how aggressively you model conversion rate differentials and how much of the routed-but-never-worked category you attribute to routing versus rep prioritisation. We used the middle estimate for the business case because we wanted the CFO to be able to defend it under scrutiny, not just agree to it in the room.
4.3 The Number That Mattered Most to the Sales Team
Here's the result I wasn't expecting to matter as much as it did: escalation volume dropped to near-zero by month two. In the old process, ownership disputes were a daily operational cost. Reps escalated to their managers, managers escalated to regional ops, regional ops pulled in RevOps to adjudicate. It was noisy, time-consuming, and corrosive to the relationship between the GTM team and the RevOps function. Within six weeks of launch, that noise had dropped by roughly 85%.
The reason was the log. When a rep challenged an assignment, we could point to the exact rule path, the exact enriched fields it fired on, the exact timestamp, and the exact reason the system chose one rep over another. Most challenges stopped at that point. Not because reps were forced to accept it, but because the explanation was satisfying. "The system assigned this to your colleague because they have the named account relationship on record and your colleague's capacity was lower at the time of assignment" is a complete sentence. It ends the conversation. It builds trust in a way that "the spreadsheet said so" never could.
5. Keeping the System Honest
5.1 The Routing Governance Council
I want to tell you something that is not in any vendor documentation for any routing tool: routing rules multiply on their own. You don't have to do anything for this to happen. A new market launches and someone adds a rule. A product team changes the demo request flow and someone patches the routing to compensate. A high-performing rep negotiates a capacity exception with their manager, who adds it to the system without telling RevOps. Within six months of any routing system going live, you have ten or fifteen rules that nobody who currently works at the company fully understands. Within a year, you're back to the same problem you fixed, except now it's wearing better-looking clothes.
We established a Routing Governance Council specifically to prevent that. It meets weekly, includes RevOps, Sales Ops, Sales Enablement, and one regional sales leader per major theater, and it owns three things: all rule change requests, all exception renewals, and the quarterly rule audit. Nothing changes in the routing logic outside of the Tuesday review window. Full stop. The first few weeks, regional managers pushed back on this. They were used to getting routing changes made same-day with the right Slack message. We held the line. By week six, the same managers were filing structured requests in advance because they'd learned that a well-argued request gets approved at the Tuesday meeting, and an ad hoc escalation gets put in the queue anyway. The cadence created a habit. The habit created predictability. Predictability is what a governance model is actually for.
5.2 The Weekly KPI Framework
There is a version of a KPI dashboard that is, essentially, a list of numbers that all say "things are fine" until suddenly they don't. We built something deliberately different. Every metric on the weekly dashboard was chosen because it can catch a specific type of failure before that failure becomes visible in revenue data. I want to walk through why each one earned its place, because the reasoning matters as much as the metric.
| Metric | Why It's Tracked | Action Threshold |
|---|---|---|
| Speed-to-Lead by region, source, segment | Catch regional degradation before it compounds. A global average can look fine while one region is failing. | Any region >30 min median triggers review |
| Routing accuracy (escalation audit) | Accuracy can only be measured by sampling outcomes. We audit a random sample of 50 assignments weekly. | <93% accuracy triggers rule review |
| SLA attainment by queue and owner | Owner-level SLA shows whether a problem is systemic (queue) or individual (rep). | <85% attainment for any queue triggers escalation |
| Duplicate rate and reassignment rate | Rising duplicates signal enrichment degradation or a new data source with poor dedup hygiene. | >3% duplicate rate triggers enrichment review |
| Lead-to-meeting conversion by route type | A route can be fast and accurate but still produce poor conversion, often a signal of poor product-rep alignment in the routing logic. | Conversion drop >15% vs. baseline in any route type |
| Exception volume by reason code | The reason codes tell you what's wrong with the rules. If the same reason code appears repeatedly, the underlying rule needs to change. | Any reason code appearing >5× / week reviewed in Council |
The most valuable metric in practice turned out to be lead-to-meeting conversion by route type. It was the only metric that could surface a routing problem that had nothing to do with speed or accuracy, specifically, cases where the right rep by territory logic was the wrong rep by product knowledge or segment experience. The routing engine doesn't know if a rep is well-suited to sell a particular product to a particular segment type. That's a qualitative judgment that only shows up in conversion data. Tracking it weekly meant we caught three route configurations in the first quarter where the logic was technically correct but commercially suboptimal.
6. Honest Lessons
6.1 We Underbuilt the Enrichment Layer
We made a reasonable assumption early in the design: that our primary enrichment provider would cover enough of the global lead volume to make the routing engine reliable at launch. That assumption was accurate for North America and Northern Europe. It was not accurate for Southern Europe, Southeast Asia, or any market where company registration data is less digitised or where our provider's coverage was thin. We spent the first six weeks of Phase 2 building enrichment fallbacks that should have been designed in Phase 1. The lesson: map your enrichment provider's coverage against your actual lead volume by market before you design the routing logic that depends on it. If coverage is below 70% in a market, build the fallback before you build the primary path.
6.2 The Coverage Hours Configuration Took Three Iterations
Modelling global coverage hours sounds simple. In practice it involves time zones, public holidays, regional leave patterns, part-time arrangements, and the reality that "available" in your CRM and "actually checking their queue" are not the same thing. Our first configuration was technically correct and operationally naive, it showed reps as available based on their contract hours, not their actual engagement patterns. Two weeks in, we discovered that APAC SLA miss rates at certain hours were driven entirely by a gap in coverage we hadn't mapped. We rebuilt the coverage model from actual login data rather than contract hours, and the gap closed. If you're building a routing engine with time-zone-aware coverage, use behavioural data to validate the coverage model before you go live.
6.3 The Governance Council Should Have Launched with Phase 1
We launched the governance council in Phase 3, after the system was globally live. My reasoning at the time was that we needed stable rules before we introduced a review body that would be changing them. That logic was exactly backwards, and I should have known better. The period between Phase 1 launch and Council formation was the highest-pressure window of the whole project, which is precisely when ad hoc decisions get made and informal precedents get set. We received 28 exception requests in those six weeks. We handled all 28 through a mix of Slack messages, emails, and verbal agreements with regional managers. When the Council convened in Phase 3 and started reviewing the rule set, five of those 28 had created rule configurations that conflicted with each other. Two of them had been made with direct stakeholder commitments attached. Reversing them cost us three weeks and one difficult conversation with a senior sales leader who felt they were being overruled on a commitment that had been made in good faith. That cost was entirely avoidable. Launch the governance structure at the same time as the system.
6.4 Do Not Mistake Low Escalation Volume for High Confidence
In month two, escalation volume dropped 70% from the month-one level and someone on the team sent a Slack message saying "reps are trusting the system." I responded with "maybe" and made a note to investigate. In month three, I ran a quick pulse check with three reps in different regions. Two of them said, independently, that they had stopped filing escalations because the last two had taken four hours to get a response and the lead had gone cold by the time the reassignment came through. They had not lost confidence in the routing logic. They had lost confidence in the escalation process, which is a different thing, and they had responded to that loss of confidence by simply absorbing the bad assignment rather than fighting it. We had fixed one trust problem and quietly created another. We reinstated the two-hour SLA, communicated it explicitly to reps, and escalation volume recovered before settling at a genuinely lower level that reflected actual routing confidence rather than learned helplessness. Check whether your escalation path is being used before you conclude that it doesn't need to be.
7. If You're Building This Today
Here is the sequence we'd follow, knowing what we know now. The ordering is specific and deliberate, several of the mistakes we made came from doing things in the wrong sequence, not from doing the wrong things.
- Map every current routing touchpoint, spreadsheets, Slack channels, email inboxes, manual CRM updates. Document who owns each one and what happens when they're unavailable.
- Measure actual Speed-to-Lead from your CRM data, segmented by region, source, and time of day. The segments matter more than the aggregate.
- Run a duplicate assignment audit. Pull all leads assigned in the last 90 days and check what percentage of contacts received more than one assignment. This number will be higher than you expect.
- Build the revenue leakage model before you build the business case. Map conversion rate by response time cohort using your own data. The number needs to be defensible under CFO scrutiny, not just large enough to get approved.
- Interview three to five reps who are active users of the current process, specifically the ones who've learned to work around it effectively. They will tell you exactly where the logic breaks down.
- Get explicit sign-off from Sales leadership on the priority hierarchy before writing a single rule. The question is: when two criteria conflict, which wins? Document this as a hierarchy, not a list.
- Map your enrichment provider's coverage by market against your actual lead volume distribution. Identify every market where coverage is below 70%. Design the fallback path for those markets before you design the primary path.
- Model your coverage hours from actual login and activity data, not contract hours. The gap between the two is where SLA misses live.
- Design the exception framework at the same time as the routing logic. The four required fields (reason, owner, effective date, sunset date) should be enforced from day one.
- Define what an "immutable log entry" contains before you build the logging system. Every field that will ever be used to resolve a dispute should be logged at the time of assignment.
- Choose the region with the clearest territory structure and lowest political complexity for Phase 1. Validate everything there before expanding.
- Build the escalation review path before go-live and commit to a 2-hour SLA for reviews. Make that SLA visible to reps. If the escalation path isn't trusted, low escalation volume will be a false signal.
- Log every Phase 1 escalation with outcome codes. Distinguish between "routing was correct, rep disagreed" and "routing was wrong, rule needs adjustment." The ratio tells you whether you have a communication problem or a logic problem.
- Launch the governance council in Phase 1, even if it meets only once. The structure prevents ad hoc rules from becoming informal precedents.
- Take the lessons from Phase 1 into the subsequent regional rollouts. Reconfigure the enrichment layer, coverage model, and fallback queues based on what you actually learned, not what you assumed.
- Track lead-to-meeting conversion by route type from week one. This is the metric that catches commercially suboptimal routing that looks technically correct.
- Run a quarterly exception audit. Any exception that has been renewed more than twice without a new business reason should be considered for permanent rule change instead.
- Review the routing logic every time a new market, product line, or territory structure is introduced. Routing systems don't break at launch, they degrade slowly through accumulated change that nobody applied to the rule set.
The $2M number is the one that gets quoted whenever this project comes up. I understand why. It's concrete. It's large. It's the kind of number that makes executives pay attention in a way that "we improved our routing process" does not. But when I think about what actually changed at this company, the revenue recovery is not what I land on first.
What I land on is a conversation I had with a senior sales leader in APAC about four months after global rollout. He had been one of the most vocal critics of the project during Phase 2, partly because the change was disruptive to his team and partly, I think, because the old system had given him informal leverage that the new one didn't. He stopped by my desk one afternoon, not to raise a complaint, and said something I have thought about a lot since. He said that for the first time in his tenure at the company, he could explain to a new rep on his team exactly how the routing system worked, why their leads came from where they did, and what to do if they thought something was wrong. He said it made the whole GTM motion feel more professional. I don't think he meant it as a compliment specifically to RevOps. He meant it as an observation about what a legible system does to the people operating inside it. They feel less like they're navigating a black box and more like they're part of a machine they understand.
That's the thing I'd most want to convey to anyone building something like this. The speed improvement matters. The duplicate reduction matters. The revenue recovery matters. But the underlying value is legibility: a system where anyone involved can understand what happened, why it happened, and what to do when it didn't happen right. Legibility is what survives the departure of the two people who built it. It's what lets a new hire learn the rules in a week instead of six months. It's what transforms a routing process from a black box into an operational asset.
We didn't build the most sophisticated routing engine in the industry. There are AI-based systems with more dimensions and better enrichment coverage. What we built is something any RevOps practitioner can sit down with for an hour and understand completely: the rule hierarchy, the log format, the exception framework, the governance cadence. That legibility is not a consolation prize for lack of sophistication. It is the feature. It is the thing that makes everything else sustainable.
"Global RevOps systems don't break dramatically. They drift, slowly and invisibly, across too many handoffs and too many people who each hold one piece of the logic in their head. The fix is not magic and it is not glamorous. It is a disciplined move from institutional knowledge to accountable, auditable system logic, and that move is available to any RevOps team willing to do the work of building it properly."
— Global RevOps Practitioner, Enterprise SaaS (anonymised at contributor's request)RevOps Brief publishes practitioner-written deep dives, frameworks, and teardowns for revenue operations professionals. No vendor influence. No fluff.
Appendix A: Common Routing Failure Modes
These are the failure patterns we've seen most consistently across global routing implementations. Use this as a pre-project diagnostic to identify which are present in your environment, and as a post-launch monitoring reference.
| Failure Mode | How to Detect It | What Breaks |
|---|---|---|
| Overfitting rules to one region | Exception rate rises as other regions try to use the system; logic becomes unreadable | Global scalability; new market onboarding time |
| Manual overrides without logging | Ownership disputes with no audit trail; log entries don't match CRM assignments | Trust, auditability, compliance |
| Treating enrichment as reliable | Routing accuracy drops on leads from specific sources or markets; enrichment contingent flag rate is high | Routing accuracy; APAC/LATAM coverage |
| Ignoring after-hours and holiday coverage | SLA misses cluster at specific times of day or dates on the calendar | Speed-to-Lead; buyer experience |
| Undefined exception queue ownership | Leads sit in fallback queues beyond SLA; nobody notices until reporting cycle | Speed-to-Lead; pipeline conversion |
| Building too many rules before validating the first three | Rule conflicts; unexpected routing outcomes on edge cases; debugging time grows exponentially | System legibility; implementation timeline |
| No sunset dates on exceptions | Exception count grows quarter-over-quarter; exception rules reference reps or accounts that no longer exist | System complexity; audit quality |
| Measuring SLA as "assigned" not "first contact" | SLA looks healthy but conversion is poor; reps are accepting assignments without working them | Revenue conversion; pipeline quality |
Appendix B: The Revenue Leakage Estimation Model
This is the framework we used to build the $2M estimate. It's deliberately conservative, every assumption should be defensible, not optimistic. Run it against your own data before presenting to finance.
| Component | Input Required | Calculation | Conservative Adjustment |
|---|---|---|---|
| Delay-driven conversion loss | ACV, monthly inbound volume, conversion rate by response time cohort (<1hr vs. 1-24hr vs. >24hr) | (Conversion rate delta) × (volume in delayed cohort) × ACV | Use bottom of conversion rate delta range |
| Duplicate handling waste | Duplicate rate, avg selling hours per rep, rep fully-loaded cost, ACV | (Duplicate leads × avg resolution time) × rep hourly cost + prospect friction discount on affected deals | Exclude prospect friction if hard to model |
| Routed-but-never-worked | % leads with no first activity within 5 business days, inbound volume, estimated conversion rate | (Volume × never-worked %) × (estimated conversion rate) × ACV | Use 50% of normal conversion rate assumption |
| Escalation / reassignment overhead | Avg escalation volume per month, avg time per escalation, rep and manager cost | (Monthly escalations) × (avg resolution time) × (blended hourly cost of people involved) | Often excluded from headline; include in total cost of ownership |
One additional note on this model: the most common mistake is running it on aggregate numbers and missing the regional distribution. A global average delay of 12 hours may look tolerable. That same 12-hour average driven by a 48-hour average in APAC and a 2-hour average in North America represents a much more serious problem in one market than the aggregate suggests. Always segment by region, source, and segment tier before presenting the number.