ThinkWork
Team/Manager Checklist Free

CRM Hygiene Audit Checklist

The field-by-field checklist that surfaces stale opportunities, duplicate contacts, and mis-staged deals before they poison your forecast, run it monthly in about 90 minutes.

How to use it

Run the numbered sections top to bottom once a month, fix every flagged record before your forecast call, then track the six-metric scorecard over time to see whether hygiene is improving or decaying.

What's inside

  • Stale opportunity detection rules (21-day no-activity, past-due close date, stage-duration outliers)
  • Duplicate contact and account detection method
  • Stage-gate exit-criteria checks written per pipeline stage
  • Required-field completeness list for every open opportunity
  • Owner and territory assignment check
  • Activity-log health check comparing logged vs. actual system activity
  • Closed-lost reason code audit including an "Other" overuse threshold
  • Data entry source audit, manual vs. auto-logged fields
  • Monthly hygiene scorecard with six tracked targets
  • Ongoing weekly hygiene rules to prevent re-decay

Purpose: A CRM doesn't get dirty all at once, it erodes field by field until the pipeline number on the dashboard has nothing to do with reality. Run this monthly. It takes about 90 minutes for a team of 10–15 reps.

1. Stale opportunity detection

  • Pull every open opportunity with no activity (call, email, meeting, stage change) logged in 21+ days: flag for owner review
  • Pull every open opportunity whose Close Date is in the past: these are either dead or mis-dated, both are hygiene failures
  • Pull every opportunity that's been in the same stage for longer than 2x your average stage duration for that stage
  • For every flagged opportunity, the owner must do one of: update close date with justification, log a next step, or mark closed-lost with a reason code

2. Duplicate detection

  • Run a duplicate-contact report on email domain + last name match
  • Run a duplicate-account report on company name (fuzzy match: "Acme Inc" vs "Acme Corporation" vs "ACME")
  • Check for the same open opportunity logged twice under two different owners
  • Merge duplicates using the record with more complete activity history as the surviving record, never just the newest one

3. Stage-gate mis-classification

For every stage in your pipeline, confirm the deal actually meets the stage's exit criteria: not just that a rep moved it there:

  • "Qualified" deals have a confirmed budget holder identified (not just a form-fill lead)
  • "Proposal Sent" deals have an actual proposal document logged/attached, dated within the last 14 days
  • "Negotiation" deals have documented next steps beyond "following up"
  • "Commit" forecast category deals have a close date within the current or next period, not 90+ days out
  • No deal skips more than one stage in a single update, a jump from "Qualified" straight to "Closed Won" is a red flag for poor logging or a mis-recorded deal

4. Required-field completeness

For every open opportunity, confirm these fields are populated (adjust to your stage-gate model):

  • Amount (not $0 or a placeholder)
  • Close Date
  • Stage
  • Lead Source
  • Next Step (free text, updated within 14 days)
  • Primary Contact linked
  • Competitor field (if in a competitive deal)
  • Forecast Category

Flag any opportunity missing 2+ required fields as "not forecast-eligible" until fixed.

5. Owner & territory assignment

  • Every open opportunity has an active (not departed) owner
  • Owner matches the account's assigned territory/segment rules
  • No orphaned opportunities (owner field blank or pointing to a deactivated user)

6. Activity-log health check

  • Sample 10 opportunities per rep; compare logged activity count against email/calendar/dialer system activity for the same period
  • Flag reps whose CRM activity count is less than 50% of their actual system activity: this is under-logging, usually a training or workflow-friction issue, not a discipline issue
  • Confirm auto-logging integrations (email, calendar, dialer → CRM) are actually connected and syncing, not just installed

7. Closed-lost reason code audit

  • Every closed-lost opportunity has a reason code (not blank, not "Other" as a catch-all)
  • "Other" reason code usage should be under 10% of closed-lost volume: if higher, your reason code list is missing a real pattern
  • Spot-check 10 closed-lost deals against the rep's own notes to confirm the reason code matches what actually happened

8. Data entry source audit

  • Identify which fields are manually entered vs. system-populated
  • Any manually-entered field with a completion rate below 80% is a candidate to automate or remove
  • Confirm no two systems are both allowed to write to the same field without a defined source of truth (see the RevOps Tech Stack Audit Checklist, Step 4)

Monthly Hygiene Scorecard

MetricTargetThis MonthStatus
% opportunities with no activity in 21+ days< 10%
% opportunities with past-due close date< 5%
Duplicate contacts found0 new
% opportunities missing required fields< 5%
% closed-lost with valid reason code> 95%
"Other" reason code usage< 10%

Ongoing hygiene rules (enforce weekly, not just at audit time)

  • No opportunity created without Lead Source populated at creation
  • Stage changes require a next-step note in the same update
  • Managers review their team's stale-opportunity list every Monday before forecast calls
  • Closed-lost requires a reason code before the record can be closed (make it a required field, not a convention)
Stay current

Get told when new Metrics, Analytics & RevOps resources land.

Tick the topics you care about, then subscribe. Alerts start straight away, no confirmation step. No digest spam, just a note when something genuinely useful is added.

Choose topics below (or leave blank for everything). Unsubscribe any time.