Explainer

What Is CRM Hygiene?

CRM hygiene is the upkeep that keeps your contact records true. Here is what it covers, how it differs from enrichment, and the field that tells you when a record has gone bad.

Get your free API key →Free to start. No credit card. 1,000 records to spend whenever you like.

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_status and email_type for 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.

  1. 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.
  2. Verify. Check that each email address can still receive mail. Mark the dead ones so nobody sends to them.
  3. Update. Find contacts who changed jobs and correct their role or flag them as gone. The old address is often the first clue.
  4. 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.

StepWhat you doTypical result
DedupeLowercase every email, keep one per addressFewer rows, one record per person
VerifyRead the email status for each addressEach contact gets keep, review or drop
UpdateFlag addresses that belong to a former employerA list of contacts who moved on
Fill gapsSearch the accounts they left for a replacementNew 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 hygieneCRM enrichment
GoalMake existing records accurateMake records more complete
Typical actionMerge, verify, correct, removeAppend title, phone, firmographics
Starts fromRecords already in the CRMRecords plus an outside data source
FrequencyRecurring, monthly or before a sendOften once at entry, then on a schedule
Failure if skippedBounces, duplicate outreach, stale rolesThin records, weak segmentation
Needs an outside sourceOnly for verify and updateAlways

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_status says whether the address can receive mail. There are 13 values, from verified and catch_all_valid to invalid, spam_trap and disposable.
  • email_type of work_other means the address belongs to a former employer. That is the likeliest sign the contact moved on.
  • contact_current_experiences holds 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.

bash
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 →