From "We Have a Problem" to "Here's the Fix": The RevOps Field Scan for CRM Admins and Operators
The 90-minute scan tells you where revenue is leaking. This playbook tells you exactly what to change in Salesforce and HubSpot to make it stop.
The 90-minute scan tells you where revenue is leaking. This playbook tells you exactly what to change in Salesforce and HubSpot to make it stop.

I've been handed plenty of 40-page audit decks that diagnosed everything and configured nothing. The problems were real — ghost leads, stalled pipeline, zombie seats, broken handoffs — but the gap between "here's what's wrong" and "here's what to build in the CRM" was left entirely to the operator to close.
That gap is where most revenue fixes die.
To be fair: strategic diagnosis has its place. Understanding the failure mode before you start configuring is how you avoid building the wrong thing. That's a reasonable defense for high-level audits.
But if you're a CRM admin or RevOps leader, you don't need more diagnosis. You need validation rules, scheduled flows, and report configurations you can ship this week. The 90-minute RevOps field scan gives you the framework. Here's what to actually build.
Picture a supply chain team that deals with expired inventory by just... leaving it on the shelf. No quarantine process, no archival policy, no way to distinguish fresh stock from spoilage. Every pick takes longer because the team is sorting through inventory that should have been pulled weeks ago.
That's your CRM without a Cold Storage policy. Ghost leads — 180-plus days inactive, no open tasks — inflate your working dataset and deflate every conversion metric you report. The fix isn't a one-time filter. It's a systemized archival rule.
Cold Storage: what to build
In Salesforce, create a custom checkbox Cold_Storage__c on Lead/Contact and a scheduled flow with these criteria: CreatedDate < TODAY() - 180, LastActivityDate = NULL, Open_Activities = 0. Action: set Cold_Storage__c = TRUE, update Status to Archived. Build two list views — "Active Working Leads" (Cold Storage = false) and "Cold Storage" (Cold Storage = true) — so the archive exists but stays out of daily workflows.
In HubSpot, create a boolean custom property cold_storage, build an active list on the same criteria, and enroll matching contacts in a workflow that sets the property and optionally moves Lifecycle Stage to a custom archival value.
Duplicate triage: what to build
Platform | Configuration | Cadence |
|---|---|---|
Salesforce | Duplicate Rules + Matching Rule on Email and Website/Domain | Weekly — merge top 10 by Opportunity Amount |
HubSpot | "Manage Duplicates" tool + export by deal amount for manual review | Weekly — recurring task queue |
For both platforms, the merge rule is the same: keep the oldest record for history, preserve primary billing data, re-parent all Opportunities and Contacts to the surviving record.
Lead Source guardrail: what to build
If Lead Source completion is below 85%, attribution is fiction. In Salesforce, add a validation rule — ISBLANK(TEXT(LeadSource)) — with an error message on Lead create and conversion. In HubSpot, require at least one attribution field (UTM campaign or a "Channel" custom property) on every core conversion form. Then build a Data Hygiene Dashboard that tracks Lead Source completion rate, accounts with duplicate domains, and contacts missing email domain. Make it visible. Make it someone's number.
Back to the supply chain. Imagine "quality approved" is a status that any team member can set without actually running a quality check — just because the shipment arrived and someone needed to move it forward. Downstream, the defects show up as returns, escalations, and lost accounts. The stage label said "approved." The product wasn't ready.
That's what loose stage gates do to pipeline. "Discovery" means nothing if a rep can drag an opportunity there without confirmed pain and a named stakeholder. The fix is to enforce qualification in the CRM, not just in a training deck.
Dwell time report: what to build
In Salesforce, enable Field History Tracking on Opportunity Stage, create a formula field Days_in_Current_Stage = TODAY() - Last_Stage_Change_Date__c, and build a report grouped by Stage showing average days in current stage for open opportunities. Add conditional highlighting for any stage where average dwell exceeds 50–60% of your total sales cycle. In HubSpot, use the native "Time in deal stage" properties and build a dashboard widget showing deals in each stage beyond the threshold.
Stage gate validation rules: what to build
In Salesforce, add Pain_Point__c (text area) and Budget_Confirmed__c (picklist: Yes/No) to the Opportunity object. Then enforce them at the right transitions:
In HubSpot, mirror these as deal properties and build a workflow that reverts the deal stage and notifies the owner if required fields are empty when the stage changes.
Closed-Lost normalization: what to build
The pillar's closed-lost analysis only works if the data isn't free-text chaos. Convert your closed-lost reason field to a picklist — Price, Competitor, No Decision, Ghosted, Bad Fit — with an optional text field for details. Require it on every closed-lost record via validation rule. Then build a "Closed-Lost Breakdown — Last 90 Days" report grouped by reason. If Ghosted exceeds 30%, that's your signal to revisit top-of-funnel qualification, not late-stage execution.
The supply chain team is running receiving, inventory management, and shipping on three separate platforms that don't talk to each other. Every manager starts their day reconciling three reports. The data is technically there — just tracked three different ways, none of which match, and nobody's job to reconcile.
Zombie seats and redundant tools create the same problem in your GTM stack. The fix isn't a one-time audit. It's a quarterly runbook.
Seat governance: what to build
Export active users monthly from every GTM tool — CRM, sequencer, data provider, dialers, feedback tools. Normalize into a single inventory with these columns: User, Email, Tool, Last Login, Role, Manager, Cost Per Seat. Apply two rules: if Last Login exceeds 30 days and the user isn't in a critical role, flag for removal. If the user has left the company per your HRIS, remove immediately.
Operationalize the decision: route flagged users to their manager via Slack or email with a hard approval deadline. No response by the date means access revoked. Document it as a runbook so it executes quarterly without rethinking the process each time.
Tool rationalization: what to maintain
For every GTM tool, keep a living record of four things:
Field | What You're Looking For |
|---|---|
System owner (by name) | If it's "the team," nobody owns it |
Primary KPI it influences | If you can't name one, the tool has no mandate |
CRM writeback (yes/no + which fields) | No writeback = data island |
Overlap with existing tools | >70% feature overlap = redundancy candidate |
No owner, no KPI, no CRM integration — that's your removal criteria. It's not a judgment call at that point. It's a policy.
The shipment arrives at the warehouse fully documented — manifest, origin, quality certifications, handling instructions. But the team member receiving it never sees any of it. The paperwork exists. It's just filed somewhere nobody looks before picking up the goods.
That's your Sales rep opening an inbound lead with "So, how did you hear about us?" to someone who just downloaded a pricing guide off a pain-specific campaign. The intelligence exists in your marketing platform. It just never made it to the primary record view.
Context-rich lead layout: what to build
In Salesforce, add a "Marketing Intelligence" section above the fold on Lead and Contact layouts with these fields: Most_Recent_Form_Submission__c, Last_Touch_Campaign__c, First_Touch_Campaign__c, Key_Content_Interaction__c, Latest_UTM_Campaign__c. Add a Campaign History related list or Lightning component showing the engagement timeline. The test: can a rep answer "why is this person here?" within five seconds of opening the record? If not, the layout is wrong.
In HubSpot, pin to the top of the left sidebar: recent conversion (form name), last marketing email opened or clicked, last page seen, first and last touch source. Don't make reps scroll into the activity feed to find context that should be front and center.
SLA enforcement: what to build
In Salesforce, create First_Response_Time__c (DateTime) and stamp it when the first outbound task or call is logged against a web form lead. Build a report showing average and median minutes to first response for web inbound leads in the last 30 days. Then add a flow: if no activity within five minutes of web form lead creation, send a Slack or email alert to the owner. If no activity within 30 minutes, escalate to a backup queue.
In HubSpot, use the native "Time to first reply" reporting on form submissions. Build a workflow that starts an SLA timer on form submission, alerts the owner at the five-minute mark, and adds the lead to an "At Risk SLA" view at 30 minutes.
Now the speed-to-lead test the scan recommends isn't a one-time mystery shop. It's a measured, coachable, system-enforced metric.
Ship one fix per month. Not a backlog. Not a project plan. One thing, executable in 48 hours, tied to a metric that matters.
Month | Fix | Metric It Moves |
|---|---|---|
1 | Cold Storage scheduled flow live, duplicate merge queue active | Lead Source completion rate, CAC accuracy |
2 | Stage gate validation rules enforced in CRM | Average days in stage, forecast accuracy |
3 | Zombie seat audit complete, redundancy candidates flagged | GTM software spend, data fragmentation |
4 | Marketing Intelligence layout live, SLA flow active | Speed-to-lead, first-touch conversion rate |
The operator who builds this cadence doesn't just clean up a system. They become the person who makes the revenue infrastructure trustworthy — which is a very different reputation than "the admin who runs reports."
We all inherit systems that accumulated debt while nobody was watching. The scan surfaces it. These configurations fix it. Run the ritual, ship the fix, measure what moves.
Then do it again next month.