CRM data hygiene is the routine that keeps your records true after they go in: re-checking the fields that decay, filling the ones that are missing, and merging duplicates. It sounds like housekeeping, and 2.1% of contacts going wrong a month sounds like nothing. Compound it across a year and 22.5% of your records have gone wrong, the figure HubSpot's database decay simulation lands on, built on MarketingSherpa research.
CRM data decay never announces itself, so most cleanups start with a bounce report on a Tuesday morning. By then the damage is several months old.
The half of this topic nobody writes about is detection. Every CRM data hygiene checklist tells you to re-verify contacts before a send, which is correct and also late. An address that bounces today belongs to someone who left in March.
Your own systems knew before any verifier did: the card that failed in billing, the thread that stopped replying, the seat that quietly went dark. Oneprofile reads that evidence beside outside data sources, which is how CRM contact enrichment that keeps records current works.
If you would rather find the stale records in your own CRM first, connect it and re-check a sample free on the Free plan's 200 credits a month and 100 rows per table.
Why CRM data hygiene slips: decay rates
CRM data decay is the drift between what a record says and what is true. Nothing inside your CRM changes. The world outside it does.
Someone gets promoted, their employer gets acquired, an office extension is retired, and the record sits there looking as confident as the day you created it. Hygiene slips because nothing in the CRM tells you which records to re-check, and different fields rot at different speeds.
Field | Roughly how fast it goes wrong | Where the number comes from |
|---|---|---|
The contact record as a whole | 2.1% of contacts a month, 22.5% a year compounded | HubSpot's decay simulation, citing MarketingSherpa research |
Job title and role | Wrong the day of a job change or promotion | The main cause of the rate above |
Work email | Invalid the day the job changes, not gradually | The same event as the title change |
Firmographics: HQ, headcount, company name | More slowly than contacts: headcount drifts, while moves and renames are rare | No current public study we could link |
Direct dial and office phone | A direct dial breaks with the job change; an office line when the office moves | No primary study we could link |
Whether the company still exists | Slowest of the set, most embarrassing to miss | No public figure we would stand behind |
Notice that the title and email lines are one event. A title change and a dead work email arrive together because a person walked out of a building. Most of a B2B data decay problem is a job-change problem wearing different clothes, which is why re-verifying emails without re-checking titles catches the symptom and misses the cause.
One thing here is irritating. That 22.5% figure appears in every article in the category, including this one, and almost nobody says when it was measured. The research is old, and a decade of writers citing each other is not evidence.
So before trusting anyone's rate, including the one above, measure your own. Take 200 contacts last checked about a year ago, re-check each address, title, and company, and count the records where any of the three changed. Divide by 200 for your yearly rate, and by 12 for a rough monthly one.
What stale CRM data costs a small team
The enterprise way to measure the cost of data decay is a waste model: contacts bought a year, times the share invalid on arrival, times a rep's fully loaded hourly rate. Useful in a budget meeting, less so to a founder with 800 accounts in HubSpot free and no budget line to defend.
At 2.1% a month, an 800-contact CRM has about 17 wrong records after one month, 49 after three, 96 after six, and 180 after a year. The cost of those records shows up in three places:
Rep hours spent on people who left. Every dead record still gets researched, written to, and followed up twice before anyone gives up.
One domain, one reputation. A large company can burn a sending domain and rotate to another. You have the domain your product is named after.
Forecasts you cannot trust. Pipeline built on stale CRM data inherits the error. The deal is real, the contact on it left in April, and nobody finds out until the renewal.
On the second one, Google's email sender guidelines set a spam complaint ceiling of 0.30% for bulk senders, with a recommended operating target below 0.10%. Those are complaint thresholds, not bounce thresholds, and plenty of articles blur the two. A list full of dead addresses still pushes both the wrong way.
"Low reply rates drag your deliverability down, and poor targeting is what causes low reply rates."
Utku Zihnioglu, CEO of Oneprofile
Detecting CRM data decay from systems you already own
A bounce is a lagging indicator. A verifier is a slightly less lagging one: it can tell you an address no longer accepts mail, but not that your champion left in February and their replacement has been reading your emails since.
The systems you already run produce that signal for free. Most teams never connect them to the CRM.
Signal | Where it already exists | What it says about the record |
|---|---|---|
Two failed charges, then an unpaid subscription | Billing | The billing contact may be gone, not just the card |
An auto-reply naming a replacement | Your mailbox | Direct confirmation, the cleanest signal |
A thread that replied for months, then 90 days of silence | Your mailbox | Contact moved, changed role, or stopped owning the account |
A ticket from an unfamiliar address on a known domain | Support desk | New owner arrived, old contact is stale |
A named seat with no login in 60 days | Product analytics | Champion left or disengaged |
Domain-wide drop from nine active seats to four | Product analytics | Restructure, layoffs, or a migration away from you |
Billing is the strongest of these for any account that pays you. A subscription usually reaches unpaid only after its payment retries run out, so that status is not a fresh event when you see it.
The CRM, meanwhile, still says "Customer, healthy" and the renewal task is still scheduled for a person who may not work there.
None of these signals is proof on its own. A quiet seat in the second week of August is a holiday. A single failed charge is an expired card. Detection in practice means ranking suspicion rather than flipping a flag: one signal moves a record up the re-check queue, two signals together and you stop guessing.
These signals only exist for accounts that already know you. For a cold prospect, you are back to third-party data sources and a verifier. Cold records have the shortest useful life, so re-enrich them closest to the send.
Anyway.
A CRM data hygiene checklist, weekly and monthly
Lists of CRM data hygiene best practices tend to treat the job as a cleanup you book once a quarter. Decay does not keep that calendar. A contact can change jobs in any week, so the checks that catch it run weekly, and only the slow work waits for the month.
Check | When | Who does it |
|---|---|---|
Re-verify any address untouched for six months before it enters a sequence | Weekly, before each send | Oneprofile: Verify email, up to 0.8 credits an address |
Re-enrich accounts showing a decay signal from the table above | Weekly | Oneprofile, reading billing, support, and product data |
Fill blank work emails and titles on contacts added since the last pass | Weekly, on each scheduled refresh | Oneprofile: Find work email, up to 10 credits a contact |
Merge duplicate contacts and companies | Monthly | Your CRM's own merge tools |
Check which fields each export may write, and who owns each one | Monthly | You: owners in the CRM, mappings in each export |
Full pass on titles, companies, and work emails | Quarterly | Oneprofile, on a scheduled re-run |
Firmographics: headcount, HQ, industry | Yearly | Oneprofile: Enrich company from domain |
Two different jobs hide inside the word hygiene, and they belong to different owners.
Data enrichment vs data cleansing: who does what
The difference is whether the right value is already in your database. Merging duplicate contacts, fixing a misspelled company name, and standardizing country values are cleansing. Your CRM's own tools do that best, because the rules belong to whoever owns the CRM.
Decay needs the other half. No amount of cleansing produces a contact's new title or the work email at their new employer, because neither is anywhere you can see. Bringing it in from outside is enrichment, and that half is the one Oneprofile runs.
Two export settings keep the halves apart. Change mapped fields only leaves every field you have not mapped as it is, and Skip empty values stops a lookup that found nothing from blanking a field your team filled by hand.
CRM data hygiene fixes that run on a schedule
Re-enriching what you already hold keeps the history attached: the notes, the closed-lost reason, the evaluation eighteen months ago that went to someone else. A freshly bought list arrives with none of that, and with the same decay clock already running. The contact details are the perishable part.
Coverage matters more on a re-enrichment run than on a first pass, because the easy records resolved the first time. What is left is the awkward tail, where a waterfall earns its place: data sources are tried in order until one answers.
The pricing model matters as much as the coverage. A re-enrichment run has a high miss rate by definition, so if misses are billed, you pay most for the runs that find least.
Manual cleanup plans fail when somebody forgets. Here is how Oneprofile handles it:
Your CRM, refreshed on a schedule you pick. Anything from hourly to quarterly, and a refresh updates the records already there instead of duplicating them.
Billing, support desk, product analytics, and your application database, read in so the decay signals sit next to the contact they describe.
Enrichments on their own schedule. Scheduled re-enrichment re-checks titles, companies, and work emails through a waterfall ordered by accuracy, and a lookup that finds nothing costs nothing. The editor projects the monthly credit cost before you save.
A score with its reason. An AI agent reads each account's billing, support, and usage and writes a customer health score with the reason behind it, so a failed payment and a dead seat surface without anyone building a rule.
The results go back to the CRM when you push the export, onto the properties you map them to. Whether any of this scales into a formal data governance program at 500 people, we genuinely do not know: that is a different discipline with stewards, change control, and its own literature.
The goal is not a tidy database. It is that when a rep opens an account on Tuesday morning, what they read is true on Tuesday morning. Put your CRM on a re-check schedule free and see which records were already wrong. The Free plan gives you 200 credits a month, up to 3 integrations, 3 tables, and 100 rows per table, enough to re-check a sample.

