GTM Operations
RevOps Is Not Sales Ops. You Built Half a Function.
You instrumented lead-to-close and left renewal-to-expansion on a spreadsheet. Median NRR is 102% and expansion costs $0.80 per dollar against $1.63 to acquire. Here is the CS Ops build order that makes the post-sale side of the bowtie as measurable as the pre-sale side.
· 13 min read
A CRO showed me a RevOps org chart with nine people on it. Eight worked on everything up to closed-won: routing, scoring, deal desk, forecast, quota, territory. One worked on renewals, part time, mostly rebuilding the same expiring-contracts export every month by hand. The company did $30M in ARR, renewals were 84% of the revenue that would show up next year, and expansion costs $0.80 to book against $1.63 to acquire a new dollar (Aleph and Benchmarkit, 2026 SaaS metrics). They had built a precision instrument for the cheap half of growth and a spreadsheet for the cheaper one.
The old definition says RevOps is Sales Ops with a wider title. That definition built the org chart above. Break it: CS Ops is the missing half, the operational layer that makes retention and expansion as measurable and repeatable as pipeline, and on any company past its first few years it governs more revenue than the pre-sale side does. The pre-sale wing is instrumented to the minute. The post-sale wing, where net revenue retention compounds, runs on health scores nobody trusts and renewal dates somebody remembers to check. This piece is the build order that closes that gap.
There is a right order to build this in, and building out of order is why most CS Ops efforts stall. You cannot score health without a data model, cannot route a save play without a health score, cannot report NRR credibly without the motion generating clean renewal records, and cannot drive expansion until retention is instrumented. Scroll the ladder bottom to top. Each rung stands on the one below it, and this is the framework the rest of the piece builds out.
- L5Report NRR, GRR, and cohort retentionNRR/GRR
Put net and gross retention on the same review as pipeline coverage, add cohort curves and a monthly churn autopsy so every loss retunes the score. This is the visibility the board needs and rarely gets.
- L4Hand back and expand52%
Route expansion signals from CS to the seller who owns the account, and hand at-risk saves back to CS with context. Expansion is 52% of new revenue and it costs half as much as acquisition.
- L3Wire signal to playSLA
A health drop below threshold or a usage cliff fires a routed save play to the account owner with an SLA and a due date. Log every play and its outcome. This is where scoring turns into saved revenue.
- L2Build and backtest the health score5 inputs
Weight the five inputs, score the book nightly, then score last year as-of twelve months ago and check the churned accounts scored low. Retune until the backtest holds. Only then let the score drive anything.
- L1Model the customer, not only the dealobjects
Auto-create renewal opportunities on close and stand up objects for usage, onboarding milestones, and health. This is plumbing, and every rung above it leaks without it. Do it first even though it is the least glamorous build on the list.
Locate yourself on that ladder. Most teams sit below the first rung, running retention off a renewal date field and a three-color health score built by feel. Every rung above subtracts a specific way the post-sale side stays invisible. By the top rung, the same review that shows pipeline coverage also shows net and gross retention, and the board finally sees the 84% of next year’s revenue that used to live in one analyst’s spreadsheet.
The bowtie is symmetric. Your stack is not.
The modern revenue model is a bowtie: acquisition narrows to a closed deal on the left, then widens back out through onboarding, adoption, retention, and expansion on the right. Both wings carry revenue. The left wing brings new logos; the right wing keeps and grows them, and past a company’s first few years the right wing carries more dollars.
Now look at how the two wings are resourced. The left wing has scoring models, routing rules, stage gates, forecast categories, and a coverage dashboard. The right wing has a health score somebody built in a hurry, a renewal date field, and an expansion number that appears in the forecast by magic in the last week of the quarter. The asymmetry is an accident of history, because RevOps grew out of Sales Ops and never fully turned to face the customers who already signed. The full argument for treating this as revenue work sits in the right side of the bowtie; CS Ops is how you staff and instrument it.
What CS Ops owns
CS Ops is not the CSM team’s admin. It is the four pillars on that ladder, and each one moves a number the board tracks. Miss any one and the other three degrade.
| CS Ops pillar | The artifact it owns | The number it moves |
|---|---|---|
| Customer data model | Objects for health, usage, onboarding milestones, renewal | Data completeness, so every other pillar has inputs |
| Health scoring | A scored, weighted, backtested health field | Churn caught early enough to save |
| Signal-to-play + handback | Renewal opportunities auto-created, expansion signals routed | GRR and NRR |
| Post-sale reporting | NRR/GRR dashboard, cohort retention, churn autopsy | Board-level retention visibility |
L1: start with the objects, because health has nothing to stand on otherwise
Most CS teams try to build a health score before they have anywhere to put the inputs. The result is a score that lives in a spreadsheet, cannot drive a flow, and dies when the analyst who owns it leaves. The first CS Ops build is the data model. You need renewal opportunities as first-class records, not a date field, so that retention flows through the same pipeline machinery as new business.
Create the renewal opportunity automatically the day a deal closes won, dated to the contract term, so no renewal ever depends on a human remembering:
trigger CreateRenewalOnClose on Opportunity (after update) {
List<Opportunity> renewals = new List<Opportunity>();
for (Opportunity o : Trigger.new) {
Opportunity old = Trigger.oldMap.get(o.Id);
if (o.IsWon && !old.IsWon && o.Type == 'New Business') {
renewals.add(new Opportunity(
AccountId = o.AccountId,
Name = o.Account.Name + ' Renewal ' + o.CloseDate.addYears(1).year(),
Type = 'Renewal',
StageName = 'Renewal Pipeline',
Amount = o.Amount,
CloseDate = o.CloseDate.addYears(1),
Original_Opportunity__c = o.Id
));
}
}
if (!renewals.isEmpty()) insert renewals;
}
In a Flows-first org this is a record-triggered flow, not a trigger, and it should be, but the logic is identical. The point is that the renewal exists in the pipeline from day one, ages through stages, and shows up in coverage math exactly like new business. Now GRR is queryable instead of assembled by hand.
L2: the health score is a model, not a color
Most health scores are three colors assigned by feel. A real one is a weighted model with inputs, weights, and a backtest that proves the score predicted churn on last year’s book. Without the backtest you have a vibe with a number on it, and reps learn to ignore it exactly the way they ignore an untuned lead score. I made this argument for lead scoring in shadow-mode scoring; health scoring earns its trust the same way, by proving itself against history before it drives a single play.
The inputs that predict churn, weighted by how much signal they carry:
| Health input | Weight | Why it predicts churn |
|---|---|---|
| Product usage trend (30/90 day) | 35% | Declining usage is the earliest and truest churn signal |
| Executive sponsor engaged | 20% | Champion loss precedes most surprise churns |
| Support ticket severity trend | 15% | Rising severe tickets signal unmet need |
| Onboarding milestones hit on time | 15% | Time-to-value predicts first-year retention |
| Days since last meaningful touch | 15% | Silence is a leading indicator, not a neutral state |
Weight these, score every account nightly, then backtest: score last year’s book as of twelve months ago and check whether the accounts that churned scored low. If they did not, your weights are wrong; retune before you let the score route a save play. A health score that never faced history is a decoration, and decorations do not save accounts.
L3 and L4: wire signal to play, then hand back and expand
Health scoring only matters if a low score triggers an action fast enough to matter. The build that closes the loop is a signal-to-play pipeline: a score change or a usage drop fires a routed play to the right owner with a due date, exactly the way a scored lead routes to a rep. The play is the point; the score is the trigger.
The same routing runs in the other direction for growth. Expansion is 52% of new revenue for 2025 (gradient.works), and it costs $0.80 per dollar against $1.63 to acquire (Aleph and Benchmarkit, 2026). A usage spike, a new department onboarding, or a champion moving to a bigger role is an expansion signal, and it should route to the seller who owns the account with the same SLA a save play carries. Handback is the discipline of moving an account across the CS-to-sales line with its context intact, so the expansion motion is not an accident that shows up in the forecast at quarter-end.
L5: NRR is the number that decides whether new sales even matter
Net revenue retention is the compounding engine. Above 100% your existing book grows before a single new logo signs; below 100% you are running up a down escalator and new sales spend their first dollars refilling the leak. Move the levers and watch what happens to the number that decides whether growth compounds or leaks.
net retention
Above 100% the existing book grows on its own before a single new logo signs. Below 100% you are running up a down escalator: new sales have to refill the leak before they add anything.
net retention: 110.0%
Median NRR sits at 102%, the top quartile clears 110%, and the bottom quartile fell from 95% to 92% year over year (Aleph and Benchmarkit, 2026 SaaS metrics). GRR median is 84%, and the gap between the two is your expansion motion. Pricing shape moves the number more than most teams expect: usage-based books run 108% NRR against 98% for seat-based, a ten-point gap that is widening. A company at 84% GRR and 102% NRR is saving itself with expansion; a company at 84% GRR and 84% NRR has no expansion motion at all and is one bad quarter from shrinking.
What one quarter of the build order moved
Take the $30M org from the top. Here is what each rung produced, and it reconciles to the ladder and the stat tiles: the plumbing came first, the score second, the saved revenue before the reporting was even finished.
| Build rung | State before | State after one quarter |
|---|---|---|
| L1 data model | Hand-built monthly expiring-contracts export | Live renewal forecast with coverage on 84% of next-year revenue |
| L2 health backtest | Three-color score, flagged 4 of 11 churns | Retuned model would have caught 9 of 11 |
| L3 signal-to-play | Churn found at renewal | 60 days of runway on at-risk accounts |
| L4 handback + expand | Expansion appeared at quarter-end by magic | Expansion signals routed to sellers with an SLA |
| L5 reporting | NRR assembled by hand for the board | NRR and GRR on the same review as pipeline coverage |
Pre-sale ops vs CS Ops, side by side
The disciplines are mirror images. Everything you built for the left wing has a right-wing twin, and the twin is usually missing.
| Pre-sale ops (built) | CS Ops (usually missing) | |
|---|---|---|
| Scoring | Lead / opportunity scoring, tuned | Health scoring, backtested against churn |
| Routing | Leads routed to reps by rule + SLA | Save plays routed to CSMs by health drop + SLA |
| Pipeline | New-business opportunities, staged | Renewal opportunities, auto-created and staged |
| Coverage | Pipeline coverage against quota | Renewal coverage against retention target |
| The headline metric | Win rate, pipeline velocity | NRR, GRR, cohort retention |
| The autopsy | Win/loss review on new deals | Churn autopsy that retunes the health score |
Build the other half
Your RevOps stack is not incomplete because it lacks a tool. It is incomplete because it points eight of nine people at the cheaper half of growth and one part-timer at the 84% of next year’s revenue that renewals carry. The fix is not more headcount on the left wing; it is a CS Ops layer that gives the right wing the same objects, scoring, routing, and reporting the left wing has had for years.
Start with the one build everything else needs: auto-create a renewal opportunity the day a deal closes. That single change turns retention from a spreadsheet into a pipeline you can forecast, cover, and report. Then climb the rest of the ladder: backtest a health score, wire it to a save play, route expansion back to the sellers, and put NRR on the same slide as coverage. The pipeline half of that story, sizing coverage to a win rate that no longer supports the old 3x rule, lives in the coverage ratio that lies to you. The half of your revenue engine that has been running on memory becomes an instrument, and the instrument is the whole point of RevOps.
Keep reading
One email. Every week.
One email a week: an operating problem I solved or botched, with the model, the numbers, and what I would change. No roundups, no theory, unsubscribe whenever it stops being useful.
The newsletter opens soon.
Connect a provider in src/config.ts