CRM hygiene is the routine upkeep that keeps the contact and account records in your CRM accurate, unique and complete. This page defines it, lays out the four jobs, and shows the LeadOcean field that tells you when a record has gone bad.
Key takeaways
- CRM hygiene is a habit, not a project. Records decay, so the work repeats.
- It has four jobs: dedupe, verify, update and fill gaps.
- Hygiene fixes what you already hold. Enrichment adds what you do not. You need both.
- LeadOcean returns
email_statusandemail_typefor a contact, which is enough to sort a CRM export into keep, review and drop.
What it is
CRM hygiene is the recurring process of removing duplicate records, checking that each contact is still reachable, correcting what has changed and filling what is missing.
A CRM is a copy of the outside world, and the world moves. People change jobs, companies rename themselves and mailboxes get shut. A record that was right in January can be wrong by June.
Hygiene is the maintenance that keeps the copy close to the original. It is different from a one-off cleanup, which fixes the backlog and then lets it grow back.
You know a CRM needs it when reps stop trusting the data. Common signs are emails that bounce, two records for one person, titles that are years out of date, and accounts with no live contact.
How it works
Good hygiene is four jobs, run in this order. Each one makes the next cheaper.
- Dedupe. Merge records that describe the same person or company. Match on a stable key such as the lowercased email address or the company domain.
- Verify. Check that each email address can still receive mail. Mark the dead ones so nobody sends to them.
- Update. Find contacts who changed jobs and correct their role or flag them as gone. The old address is often the first clue.
- Fill gaps. Add the missing title, phone number or company domain, and backfill the account where the contact left.
Then you set a schedule. Monthly suits most teams, and always before a large send.
Keep a log of what each pass changed. Count the duplicates merged, the addresses dropped and the contacts flagged as moved. The trend tells you whether the habit is working or whether bad data keeps entering at the source, such as a form or an import.
A worked example
Say a CRM holds 500 contacts at fictional companies such as Acme. You export them to CSV and run the four jobs.
| Step | What you do | Typical result |
|---|---|---|
| Dedupe | Lowercase every email, keep one per address | Fewer rows, one record per person |
| Verify | Read the email status for each address | Each contact gets keep, review or drop |
| Update | Flag addresses that belong to a former employer | A list of contacts who moved on |
| Fill gaps | Search the accounts they left for a replacement | New contacts at the same accounts |
The result is a short list of actions per contact, not a pile of rows. For the full command-line version, see CRM data hygiene to a clean database.
CRM hygiene vs CRM enrichment
People use the two terms as if they mean the same thing. They do not. Hygiene fixes the records you hold, and enrichment adds data you never had.
| CRM hygiene | CRM enrichment | |
|---|---|---|
| Goal | Make existing records accurate | Make records more complete |
| Typical action | Merge, verify, correct, remove | Append title, phone, firmographics |
| Starts from | Records already in the CRM | Records plus an outside data source |
| Frequency | Recurring, monthly or before a send | Often once at entry, then on a schedule |
| Failure if skipped | Bounces, duplicate outreach, stale roles | Thin records, weak segmentation |
| Needs an outside source | Only for verify and update | Always |
Enrichment on top of dirty data just spreads the mess. Run hygiene first, then enrich the clean records. The best CRM enrichment tools page compares the options.
When it matters
Before a cold email send
Bounces damage a sending domain. If a fifth of your list is dead addresses, the next campaign pays for it. Verify and drop first, then send.
After a rep leaves or territories change
Orphaned accounts and duplicate owners pile up. Hygiene catches contacts nobody owns and accounts that two reps are working at once. Do the pass before you reassign.
Before you buy or import more data
Importing new records into a dirty CRM creates duplicates on day one. Dedupe your existing records, then import. You spend records only on people you do not already hold.
When you migrate or merge CRMs
A migration copies every flaw into the new system. Clean the export before it goes in. Fixing records in the old tool is cheaper than fixing them in two places.
How LeadOcean handles it
LeadOcean gives you the verify and update jobs through the enrich call. Send one email to POST /v1/people/enrich. You get back email_status, email_type and the person's current role.
email_statussays whether the address can receive mail. There are 13 values, fromverifiedandcatch_all_validtoinvalid,spam_trapanddisposable.email_typeofwork_othermeans the address belongs to a former employer. That is the likeliest sign the contact moved on.contact_current_experiencesholds the role they have now.
Leave reveal_email off when you only want the verdict. A contact LeadOcean holds nothing for is a 404 and costs nothing. A hit costs one record.
curl -s -X POST https://api.leadocean.io/v1/people/enrich \
-H "x-api-key: $LEADOCEAN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email": "jane.doe@acme.com"}' \
| jq '.data.contact_data | {email_status, email_type}'Treat verified, catch_all_valid and catch_all as keep. Treat invalid, spam_trap, abuse and disposable as drop. Read the rest by hand. LeadOcean gives no refund or credit for bounced emails, so read the status before you send.
To fill gaps, size the accounts for free. POST /v1/people/search with count=true as a query parameter and limit 1 returns meta.total and no rows. The total is capped at 100,000. Then pull the real rows, or export them with POST /v1/exports.
If you would rather not script it, the app at app.leadocean.io has an Exports page. It has a filter builder, a column picker, the record price before you start, and a CSV download. It is not a CRM and has no sequencer, so you load the CSV back into your own system.
The dataset is refreshed monthly. Each record carries its own fetched_at date, so you can see how old a status is. Free gives you 1,000 records, one-off, no card. Pro is $499 a month, flat. See /pricing for the detail and the CRM enrichment use case for the wider workflow.
FAQ
How often should I run CRM hygiene?
Monthly is a sound default, and always before a large send. LeadOcean refreshes its data monthly, so a check more often than that mostly returns the same answer. High-churn segments such as startups may justify a second pass.
What is the difference between CRM hygiene and data cleansing?
Cleansing is usually a one-time fix of a backlog. Hygiene is the recurring habit that stops the backlog returning. The tasks overlap, but hygiene has a schedule and an owner.
Does CRM hygiene cost records?
The dedupe is local and free. Verifying a contact through LeadOcean costs one record per hit, and a contact we hold nothing for costs nothing. Sizing an account with count=true is free.
Can I do CRM hygiene without a data vendor?
Partly. Dedupe and gap detection work from your own data. You cannot tell that an address is dead or that a person left without an outside source, because the CRM only knows what you typed in.
Who should own CRM hygiene?
One named person, usually in revenue operations. Shared ownership means nobody runs it. Give the owner a calendar slot and a short checklist of the four jobs.
Check your CRM contacts against real email status, free
Free to start. No credit card. 1,000 records to spend whenever you like.
Get your free API key →