Loading...

How to Keep Your CRM Clean: A Simple Routine That Actually Sticks

A funnel with a filter at the top catching debris, so only clean shapes pass through

In the last post I laid out the damage. About 80% of a company’s marketing automation doing nothing but repairing data. Six fields all holding the same thing. Over 150,000 records belonging to nobody. And a cleanup so large it had turned into a risk nobody would approve.

This post is the other half: how to keep your CRM clean, and keep it that way.

This is not a “remove your duplicates” checklist. There are hundreds of those and they all say roughly the same thing. What I want to argue is that the checklist is the least important part, and that the reason cleanups fail has almost nothing to do with the cleaning.


Why cleanups fail

Almost every company I have worked with has done a CRM cleanup at some point. Usually more than once. Usually with an agency. Usually with a project name.

And almost every one of them was back where it started within a year or two.

Not because the cleanup was bad. Because a cleanup deals with the bad data you already have and does nothing about the bad data still arriving.

You merge the duplicates. The form that creates duplicates is still live. You fill in the missing location field. The partner page collecting location as a free typing box is still collecting it as a free typing box. You fix ten thousand records while the system creates eleven thousand more.

That is the whole argument for treating this as a routine rather than a project. Not tidiness. Arithmetic.

So the model below starts with prevention, not cleaning. If you can only afford one part, buy that one.


Five horizontal bands stacked from wide at the bottom to narrow at the top

The five parts

Prevention. Stopping bad data from being created at all. Dropdowns instead of typing boxes, required fields, checks on the way in. Cheapest part by far, and the one that always gets skipped.

Detection. Knowing your data is wrong before a salesperson or your boss tells you. Completeness checks, mismatch reports, error tracking.

Cleaning. The actual work. Merging, filling in blanks, archiving old records, adding missing information.

Rules. Who is allowed to do what. Who can create a new field, who approves changes, who reviews access, and which system wins when two disagree.

Measurement. Proving the first four are working, in numbers your finance team recognises.

Most teams do the cleaning, occasionally the detection, and almost never the other three. That balance is exactly backwards.


How often to do what

PartWhat you doHow often
PreventionRequired fields, dropdown lists, routing rules, checks before a record moves stageAlways on
DetectionNew duplicates, deals gone quiet, records with no next step, new sync errorsWeekly
CleaningMerge duplicates, review bounced emails, fill in missing fields, archive dead recordsMonthly
RulesWhich fields are still used, who has access, which system owns what, connection reviewQuarterly
MeasurementFour numbers, same format, same peopleMonthly
Bigger picture (extra)Data model, stage definitions, how long you keep records, playbook reviewYearly, or when the business changes

The layering matters more than the exact timing. Cheap, constant prevention at the bottom. Slower, more thoughtful decisions at the top. Flip it around, so you do quarterly cleanups and no daily prevention, and you get exactly the cycle from the start of this post: clean, refill, clean again.


Ten rules worth never breaking

Everything else can flex with your size and industry. These shouldn’t.

  1. Every active record has a named owner. Not a queue. Not “the ops team”. A person.
  2. One record per real person or company. No exceptions for “but that’s a different part of the business”.
  3. Every open deal has a next step and a date. If it doesn’t have one, it isn’t open.
  4. Every stage has written rules for entering and leaving it, agreed by marketing, sales and ops. All three, in the same document.
  5. Dropdowns instead of typing boxes wherever a form collects data, including forms you don’t control.
  6. One system officially owns each type of record, and it’s written down. Contacts can live in one place and companies in another. What breaks you is never deciding.
  7. A test environment, and a rule that changes go there first. Making changes directly in the live system is a hazard.
  8. Someone has to approve new fields. Nobody creates one without a named owner and a stated reason.
  9. A quarterly access review. Staff, agencies, integrations, admin rights.
  10. A rule for how long you keep records, that actually runs. A policy nobody follows is a liability with extra steps.

The steps most checklists miss

These come from things I have watched go wrong, not from a best-practice deck.

Stopping bad data at the door

Check that values make sense together, not just individually. A country from one continent paired with a state from another passes every single-field check you have and is still nonsense. Location fields need to be checked against each other. So do industry and company size, and job title and seniority. Single-field checks catch typos. Combination checks catch the errors that send leads to the wrong side of the world.

Make one dropdown drive the next. Choosing a country should decide which list of states or regions you see next, using each country’s own list, because countries divide themselves up differently. One flat global list is a mismatch machine.

Pay attention to the forms you don’t own. Partner websites, third-party forms, event badge scanners, content hosted by someone else. At one company, an outside partner’s form that collected location as a free typing box was one of the biggest single sources of blocked records. It sat completely outside the company’s own change process, and fixing it meant negotiating with another business.

You cannot control the data quality of people who don’t care about the form they are filling in. You can control whether that form gives them an empty box.

Send every bulk upload through one cleaning step. Event lead files turn up as messy spreadsheets, sometimes in a format you don’t see until the day before. Don’t load them straight into the CRM. Load them into a staging area that tidies them first, then push. One way in, always.

Block free personal email addresses on your forms, and test it properly. I have seen this rule exist, be written down, and never once be checked in the live system.

Make sure both systems accept the same characters and the same field lengths. Boring and expensive. One system accepted symbols and punctuation that the other rejected or cut off. The result was months of half-missing text. Nobody noticed, because the record still saved. Just with half the words gone.

Keeping the field list under control

Every quarter, sort your fields into three piles: ones you write to, ones you read from, and ones that are neither. Delete the third pile without sentiment. A field nobody fills in and nobody looks at is still a decision somebody has to make every time they build a form.

Name fields for what they hold, not for what someone wanted to filter by. A field called “sales region” that actually holds the region of the record’s owner is a trap. Rename it, and add a second, clearly named field for the thing you actually wanted.

Treat any field starting with “true_” as a bug to be fixed. It means somebody stopped trusting a field and built a copy instead of repairing it. Find the original, decide which one wins, and delete the other.

When you buy data from an outside provider, keep it in its own separate set of fields at first, and set a deadline. Land it separately. Copy it into your real fields only where those fields are empty. That protects whatever your own people typed in by hand, and it is genuinely the right way to start. But if you never make the final decision about which version wins, you have permanently doubled your field list and postponed the question forever.

Decide how confident a match has to be before you copy anything over. Matching a company is not the same as matching a person. Copying company details onto a person on a weak match doesn’t improve your database, it launders guesswork into it.

Ownership and access

Review your paid seats and permissions every quarter. Accounts nobody has used, agency access that should have ended, developers with live access, system accounts with more rights than they need.

Make partners and contractors use accounts on your own domain, never their own. When the contract ends you switch off one thing, in one place, and you know it worked.

Deactivate people rather than deleting them, but keep a list of what their accounts still run. Deleting a user orphans every automation they built, which means your leavers process ends up being dictated by your automation setup. The list is the fix.

One named person owns each type of record. Not a committee. Committees produce documents. They don’t produce a decision about which system wins when two of them disagree about someone’s location.

Connections between systems

Write down which system is in charge of what. Two systems updating each other with neither one officially in charge is a slow-motion crash that produces a permanent error backlog. In one case that setup had been running for a year and a half and nobody could tell me who chose it, when, or why. No document existed anywhere.

Treat errors between your systems as a list of bugs, not a score. This one matters. Hire an agency and measure them on reducing the error count, and they will fix records one at a time forever. They will never touch the cause. Fixing the cause doesn’t move the number this month. I have watched an error count fall dramatically, climb most of the way back, then fall again over a few months. The number moved constantly. Nothing underneath it changed.

Group errors by cause instead. “More than 700 permission errors, about 600 location mismatches” is a work plan. “1,300 errors” is a status update.

Check that your error report includes something you can actually search on. If errors come out with internal ID numbers and no email address, you can neither investigate them nor talk to anyone about them.

Understand how far one bad record spreads. In some setups, one bad field on one person blocks everything that person does from then on, including orders. That has stopped being a data problem and become an outage that keeps causing damage for months. Find out whether yours works that way.

Managing change

Get a test environment before anything else. Doing all your work in the live system means test records reaching real salespeople, who then either act on them or learn to ignore their task list. Both are bad, and the second one is permanent.

Sort changes into three types. Small changes go straight to live. Configuration changes go to test first. Anything touching a connection between systems needs sign-off from both sides. Three types is enough.

Tell the other team before you change a field or add a rule. The most common cause of unexplained errors I have seen is one team changing something without telling the team on the other side of the connection. There is no clever fix for this. It’s a notification rule and someone who enforces it.

Treat big cleanups as events, not tasks. When you finally push ten thousand corrected records through, you will flood whatever receives them. So:

  • Pick a quiet window.
  • Switch off notifications first.
  • Warn sales leadership before you start.
  • Automatically close anything older than an agreed age.
  • Send one summary, not hundreds of individual emails.
  • Then reopen only what matters.

Check afterwards how the work landed. If it’s spread evenly across the team, leave it and explain. If one person got five hundred items, that’s a conversation, not an email.

Every one of those steps exists because somebody skipped it once.

Measurement

Four numbers. Report them monthly, to the same people, in the same format.

  • How complete are the fields your routing depends on? With a target, not just a number.
  • What share of active records have a named owner?
  • Sync errors grouped by cause, tracked by group, never as one total.
  • Do two people running the same report get the same answer? Count the times they don’t. This is the only one of the four that measures trust, and trust is what you are really protecting.

A tap being turned off above a basin, before the basin is drained

Where to start when it’s already a mess

Most advice says start by removing duplicates. I think that’s wrong, and it’s why so many cleanups don’t stick. Removing duplicates is the most visible job and one of the least durable. You’ll be doing it again next quarter, because nothing further back in the process changed.

Here is the order I would use.

1. Stop the bleeding. Fix your forms and your checks on the way in first. Every day you delay, you’re adding to the pile you’re about to clear. This step looks like nothing is happening, which is exactly why it has to go first. It will never survive being scheduled second.

2. Give the system an owner. Not the records, the system. One named person responsible for the standards, one named owner for each type of record. Until that exists, every fix is temporary, because nobody’s job is to keep it fixed.

3. Fix the one field your routing depends on. Whatever that is for you. Fix that field and nothing else. It’s the highest-value job on this list, and it produces a result your leadership can see.

4. Now remove the duplicates. It’ll hold this time, because nothing new is pouring in.

5. Now buy the extra data. Adding bought data to a messy database is expensive noise. Adding it to a clean one genuinely changes what you can do. Order matters, and this is the step everyone wants to buy first.

Plan step 3 onwards as proper events. Remember the company that couldn’t fix 10,000 records because the fix would have flooded the sales team. If you don’t plan for how far the change spreads, the cleanup becomes the incident.


How to actually get this funded

The part people ask me about most.

Never walk into a leadership meeting and say “our data is dirty”. Everyone already knows. I have never seen it work as an argument, because it describes a situation rather than a cost, and nobody funds a situation.

Translate it first.

  • Not “we have duplicate records.” But “we’re paying to contact the same person several times, and they’ve noticed.”
  • Not “fields are incomplete.” But “we can’t get more than 1 in 10 of our incoming leads to the right salesperson, and here’s how much slower those leads get answered.”
  • Not “reporting is inconsistent.” But “the forecast on slide four is built on a field that means something different from what it’s called.”
  • Not “we should clean up the CRM.” But “the AI project we’ve committed to can’t start until this is fixed, and here’s what each month of delay costs.”

Same problem. Completely different meeting.

That last one isn’t a trick, by the way. Every AI project on your roadmap is built on this data. A system trained on records that contradict each other will produce answers that contradict each other. It is the same reason the company in my last post had to switch personalised emails off again.

Keeping a CRM clean spent a decade filed under housekeeping. It is turning into a starting requirement.


Three numbers, one afternoon, and you have your business case. The blanks in the field your routing depends on. The records with no owner. And the length of your admin user list.


About the author

I’m Harish. I spend most of my working life inside CRMs and marketing platforms, usually the ones that have quietly got out of hand. Audits, cleanups, lead routing, connecting systems that were never meant to talk to each other, and putting in the routine described above so the mess doesn’t come back.

I’m open to new work at the moment. That covers MarTech and marketing operations leadership, revenue and sales operations, product roles on data or internal platforms, and shorter consulting projects where a team needs someone to come in, work out what is actually wrong, and fix it.

If you’ve read this far, you probably have a CRM you’re not entirely happy with. I’d be glad to hear about it.

harish@psharish.com

By PS Harish

28 August 2026

Comments

No comments yet.

Leave A Comment

Your email address will not be published. Required fields are marked *

© 2026 PS Harish