Ask any revenue leader whether they trust their CRM data and you'll get one of two answers: "no" or "it depends on the field." Surveys consistently put the number around 70% who say they don't trust it. The reasons are always the same. Duplicate records, outdated job titles, dead email addresses, missing phone numbers, inconsistent formatting. The data got dirty over time and nobody had a system for keeping it clean.
The cost shows up everywhere. Emails bounce. Leads get routed to the wrong rep. Automated sequences fire with the wrong personalization. Scoring models produce garbage scores because half the fields they depend on are blank or stale. Marketing reports overcount pipeline because the same person exists as three separate records.
B2B contact data decays at roughly 2% per month. Over a year, that's 20 to 30 percent of your database. Company data shifts too: employee counts change, funding rounds close, acquisitions happen. If you aren't actively maintaining your CRM, it's getting worse every quarter on its own.
This playbook lays out a quarterly hygiene process. It's designed for RevOps and marketing ops teams running Salesforce, HubSpot, or any CRM with API access. The same principles apply regardless of tooling.
The Quarterly Hygiene Audit
Running hygiene as a quarterly cycle gives you a predictable cadence without consuming your team's entire week. Each quarter, you work through five areas in order. Doing them in sequence matters because each step makes the next one easier.
1. Deduplication
Duplicates are the most visible hygiene problem and the easiest to fix first. They inflate your contact count, split activity history across records, and cause attribution nightmares.
Start by defining what counts as a duplicate. The standard approach is matching on email address (exact match after lowercasing and trimming whitespace). That catches the obvious cases. Then layer on fuzzy matching: same first name, last name, and company with slightly different emails. Same person with a work email on one record and a personal email on another.
Most CRMs have native dedup tools. Salesforce has duplicate rules and matching rules. HubSpot has a dedup tool in Operations Hub. For anything more sophisticated, tools like Dedupe.io or custom scripts against your CRM's API work.
When merging duplicates, pick the record with the most recent activity as the surviving record. Carry over all activity history, notes, and deal associations from the losing record. Never delete without merging first.
Track the metric: duplicate rate as a percentage of total contacts. A healthy database runs below 5%. If you're above 10%, dedup needs to be a priority before anything else.
2. Standardization
Inconsistent formatting makes segmentation and reporting unreliable. The classic example is job titles: "VP Sales," "Vice President of Sales," "VP, Sales," and "Vice President - Sales" are all the same role, but your CRM treats them as four different values.
Fields that need standardization:
- Job titles. Map variations to a canonical set. Most enrichment APIs return normalized titles, which helps. But if your CRM also accepts manual input or imports, drift creeps back in.
- Company names. "IBM," "International Business Machines," "I.B.M." Standardize on the legal name or the most commonly used variant. Domain-based matching (keying off the company's website domain) is more reliable than name-based matching.
- Location fields. State names vs. abbreviations, inconsistent city spellings, missing country codes. Pick a format and enforce it.
- Phone numbers. Strip formatting, store in E.164 format (+15551234567). It makes dedup easier and prevents issues with outbound dialers.
- Industry and seniority fields. If you're using enriched data, these should already be standardized by the provider. If your team also enters values manually, add validation rules or picklists to prevent free-text entry.
The goal isn't perfection. It's consistency. When every record follows the same format, your filters, automations, and reports actually work.
3. Enrichment Fill Rates
This is the step most teams skip, and it's the one that matters most for downstream operations. Fill rate is the percentage of records that have a value for a given field. If your lead scoring model depends on seniority_level, company_size, and job_function, and only 40% of your records have all three populated, your scoring model is effectively useless for 60% of your database.
Run a fill rate audit on every field your team depends on. The fields to check depend on your workflows, but the common ones are:
- Email address (work email specifically)
- Phone number
- Job title
- Seniority level
- Company name
- Company size / employee count
- Industry
- Location (city, state)
Calculate the fill rate for each. Anything below 80% on a field you use for scoring, routing, or segmentation is a gap worth closing.
The fix is enrichment. Pull the records with missing fields and run them through person and company enrichment APIs to fill the gaps. This isn't a one-time backfill. It should be part of every quarterly cycle, because new records enter your CRM constantly through imports, integrations, and manual entry, and they arrive with varying levels of completeness.
If you've already built a real-time enrichment pipeline, new records arrive complete. But existing records that predate the pipeline still need a batch pass. And records enriched six or twelve months ago need re-enrichment to catch job changes and company updates.
4. Decay Monitoring
Decay monitoring is different from fill rate. Fill rate asks "is this field populated?" Decay monitoring asks "is this field still correct?"
A record can have a 100% fill rate and still be wrong. The contact changed jobs three months ago. The email now bounces. The company went through a rebrand or acquisition. The phone number was reassigned.
There are several signals that a record has decayed:
Email bounces are the loudest signal. If your email platform is reporting hard bounces, those records are already stale. Flag them immediately.
Job change detection is the next most valuable. Some enrichment providers include a last_confirmed or current_jobs_last_confirmed timestamp on their records. If the timestamp is older than 90 days, the record is a candidate for re-enrichment. If you don't have that timestamp, use the last enrichment date as a proxy.
Engagement drop-off is a softer signal. A contact who was actively engaging (opening emails, visiting your site) and then went silent for 90+ days may have changed roles or left the company. Worth re-enriching before the next outreach attempt.
Website domain changes indicate company-level decay. If the domain in your CRM no longer resolves, or redirects to a different company, the associated contacts are probably stale too.
Build a decay dashboard that tracks these signals over time. The metrics you want:
- Bounce rate trend (monthly)
- Percentage of records with enrichment data older than 90 days
- Percentage of records with enrichment data older than 180 days
- Number of records flagged for re-enrichment this quarter
A healthy database has less than 5% of records in the 180+ day stale bucket. If that number is climbing, your re-enrichment cadence isn't keeping up with natural decay.
5. Ongoing Prevention
The four steps above fix existing problems. Prevention keeps new problems from accumulating between cycles.
Enrich at the point of entry. Every record that enters your CRM should be enriched before it's committed. Form submissions, CSV imports, partner syncs, manual entry. If the enrichment happens after the record is already in the system, there's a window where incomplete data causes downstream issues. The real-time enrichment pipeline pattern handles this for programmatic sources. For manual entry and imports, add validation rules that require minimum fields before a record can be saved.
Set up automated re-enrichment. A monthly or bi-monthly job that pulls records older than 90 days since last enrichment and refreshes them. This catches decay before it compounds. Most enrichment providers, including Data Legion, support batch lookups that make this practical even for large databases.
Add validation rules to your CRM. Require email format validation on entry. Require a company name or domain. Block records without a minimum set of fields from being created. These rules feel strict at first, but they prevent the garbage-in problem that creates most hygiene debt.
Monitor import quality. Bulk imports from events, purchased lists, and partner data are the single biggest source of dirty data. Run every import through dedup and enrichment before loading it into the CRM. Reject records that don't meet your minimum quality bar. A smaller, cleaner import is worth more than a large, dirty one.
The Quarterly Checklist
Here's the audit condensed into a checklist you can run through each quarter.
- Run deduplication. Merge duplicates using email-first matching, then fuzzy matching on name + company. Record the duplicate rate before and after.
- Standardize key fields. Normalize job titles, company names, locations, and phone formats. Check for new free-text drift since last quarter.
- Audit fill rates. Calculate fill percentage for every field used in scoring, routing, and segmentation. Flag fields below 80%.
- Enrich gaps. Run records with missing fields through person and company enrichment. Re-enrich records not updated in 90+ days.
- Check decay signals. Pull bounce reports, flag records with stale enrichment timestamps, identify engagement drop-offs.
- Update your decay dashboard. Record this quarter's metrics alongside previous quarters to track trends.
- Review prevention controls. Are new records being enriched at entry? Are imports being screened? Are validation rules still enforced?
The first time through takes the longest. Expect a full day for a database under 50,000 records, longer for larger databases. Subsequent quarters go faster because the backlog shrinks if you're running prevention in between.
Why Enrichment Is the Highest-Impact Fix
Deduplication and standardization are cleanup. They fix what's broken. Enrichment is both cleanup and prevention. It fills gaps in existing records and keeps new records from arriving incomplete.
Teams that treat enrichment as a one-time data purchase miss the point. The value of enrichment compounds when it runs continuously. A record enriched at entry, then re-enriched every 90 days, stays accurate year-round. A record enriched once and never touched again is 20-30% likely to be wrong within twelve months.
The math on re-enrichment is straightforward. If your database has 50,000 contacts and 30% decay annually, that's 15,000 records going stale each year. Re-enriching the full database quarterly means each record gets refreshed before it's likely to have decayed. The alternative is SDRs finding out records are stale when emails bounce or calls go nowhere.
Person enrichment fills contact-level fields: title, seniority, phone, email, location. Company enrichment fills account-level fields: employee count, industry, company size, growth trends. Most hygiene problems span both levels, so running both enrichment types during your quarterly cycle gives you the most complete picture.
If you're evaluating providers for this workflow, the B2B data provider guide covers what to look for in terms of match rate, accuracy, and refresh cadence.
What Good Looks Like
After two or three quarterly cycles, a well-maintained CRM database looks like this:
Duplicate rate below 5%. Most teams can get this under 3% with consistent quarterly dedup and validation rules preventing new duplicates at entry.
Fill rates above 85% on scoring and routing fields. If you're enriching at entry and re-enriching quarterly, most records should have the fields your workflows depend on.
Bounce rate below 2% on outbound email. Stale emails are the most visible symptom of poor hygiene. Consistent re-enrichment keeps this low.
Less than 10% of records older than 90 days since last enrichment. This means your re-enrichment cadence is keeping pace with natural decay.
These numbers aren't aspirational. They're achievable with a quarterly cadence and automated enrichment running in between. The teams that hit them consistently are the ones whose scoring models actually predict conversions, whose routing rules actually work, and whose SDRs actually trust the data they're working from.
The opposite is also true. Skip hygiene for two quarters and the problems compound. Duplicates multiply. Fill rates drop as new unenriched records accumulate. Decay marches on at 2% per month whether you're watching or not. Catching up after six months of neglect takes significantly longer than maintaining quarterly.
Pick a quarter. Run the checklist. Measure the before and after. The difference shows up in bounce rates within the first outbound campaign.