Data quality
I watch the CRM data that every forecast, routing rule, and comp calc reads from, because a report is only as honest as the fields under it. The failure mode is a dashboard that looks clean while duplicates split pipeline, blank keys break routing, and reps quietly stop trusting the record.
Shape of it
6 metrics
- Duplicate rate
- Share of records that duplicate an existing entity on a match key (domain, email, account name).
- duplicate records / total records
- Example 120,000 accounts, 2,300 collapse to an existing entity on domain → 1.9%, under the gate. Cross 10% and routing sends two reps at the same buyer.
- Benchmark Practitioner target under 2% on managed keys; anything past 10% means the dedupe rule or the intake path is broken
- Duplicates split pipeline across records, misroute leads, and double-count ARR; they corrupt every rollup silently.
- Required-field completeness
- Share of records with all business-required fields populated (not just the platform-required ones).
- records with all required fields / total records
- Example 23,000 opps, 20,900 carry stage, amount, close date, and forecast category → 91%. The 2,100 blanks are the rows that break the commit rollup.
- Benchmark Practitioner target 90%+ on core objects; leads and contacts run lower than opps because reps touch them less
- Blank keys break routing, scoring, and forecasting; a field nobody fills is a field you cannot report on.
- Validation pass rate
- Share of record saves that clear validation rules on the first attempt.
- saves passing validation / total save attempts
- Example 5,000 opp saves in a week, 180 blocked by validation → 96.4% pass. If one rule causes 70% of the blocks, that rule needs a rethink, not the reps.
- Benchmark Practitioner range 92-98%; a sustained drop below 90% means a rule is fighting the reps, not the data
- Too few rules and garbage flows in; too many and reps route around them with junk values. The pass rate tells you which failure you have.
- Field fill rate (by field)
- Population rate of a specific field across the records that should carry it.
- records with value / records in scope
- Example Industry is 41% populated across 160,000 accounts. If territory routing keys off industry, 59% of accounts route on a guess.
- Benchmark Judge per field against its use: a field feeding routing or comp needs 95%+, a nice-to-have can sit lower
- Aggregate completeness hides the one field a downstream process depends on; you have to read fill rate field by field.
- Stale record rate
- Share of records not modified within a freshness window (job changes, closed accounts, dead contacts).
- records past freshness window / total records
- Example 464,000 contacts, 138,000 untouched in 18 months → 30% stale. At a ~25%/yr decay, roughly a third of those emails no longer reach a live person.
- Benchmark B2B contact data decays ~22-30% per year; set a re-verify cadence against your own decay curve, not a fixed date
- Stale data is worse than missing data because it looks trustworthy; a rep dials it before finding out it is dead.
- Data quality score
- Composite 0-100 score blending completeness, validity, uniqueness, and freshness per record or object.
- Example An account scores 58: full firmographics but a duplicate parent, a stale primary contact, and no owner. The score surfaces it for cleanup before a rep works a broken record.
- Benchmark Set your own weighting and threshold (e.g. flag anything under 70); the value is the trend, not the absolute number
- A single number that lets you trend quality over time and target cleanup, instead of arguing field by field.
01
02
03
04
05
06