Skip to main content
Home Solutions Approach About Blog
Let's Talk →
← All Articles
CRM & Data Quality

How to Clean Up a Messy Salesforce CRM Without Losing Data

Every Salesforce instance I've ever inherited had the same issue: years of accumulated data decisions that made sense in the moment but created debt over time. A lead object used for things it wasn't designed for. Opportunity stages added by three different sales leaders who each had their own framework. Custom fields that were required at some point and are now populated with placeholder text. Duplicate accounts from a data import in 2019 that nobody cleaned up.

Salesforce cleanup is unglamorous work. It takes longer than you expect, the wins aren't always visible, and you have to be extremely careful not to break things that are working. But it's necessary — you cannot build reliable reporting or automation on top of messy data.

This is the process I follow.

Before You Delete Anything: Audit and Understand

The first rule of Salesforce cleanup is: don't delete anything you don't understand. What looks like junk data often turns out to be connected to a workflow, a report, a validation rule, or a downstream integration. Deleting it breaks something. Always.

Before you touch a record, a field, or a workflow, spend time auditing what you have. I covered the full audit process in the HubSpot audit guide — the same principles apply in Salesforce. Map what exists, how it's being used, and what downstream effects any change would have.

Start With Duplicates

Duplicate records are the most common Salesforce data problem and the safest place to start cleanup. Salesforce has a built-in duplicate management tool, and there are third-party tools (like Dedupe.ly or Cloudingo) that make the process faster for large datasets.

Work in this order: Accounts first, then Contacts, then Leads. Accounts are the parent record — if you merge duplicate Accounts correctly, the associated Contacts and Opportunities follow. If you merge in the wrong order, you create orphaned records and inconsistent ownership.

Important: Always merge, never delete. Merging preserves the full activity history of both records in the surviving record. Deleting a duplicate deletes all activity history associated with it. You want that history.

Lead Object Cleanup

The Lead object is the most commonly misused object in Salesforce. Many organizations use it as a long-term repository for anyone who has ever touched their marketing, which defeats its purpose. The Lead object is a staging area — it should hold unqualified contacts until qualification, then they should be converted to Contact + Account + Opportunity.

Run a report: how many Leads have no activity in the last 180 days and have never been qualified? That's your dead Lead backlog. Those records need to be either converted (if they belong in the pipeline), archived (if they're genuinely cold), or deleted (if they're duplicates of existing Contacts).

Before you delete any Lead records, check whether they're associated with marketing campaigns. Deleting a Lead removes it from campaign membership, which affects your campaign attribution data. Export the campaign association data first if it matters for your reporting.

Opportunity Stage Rationalization

Most inherited Salesforce instances have too many Opportunity stages — sometimes 10 or more. These usually accumulated as different sales leaders added stages that made sense to them, without removing the ones they didn't need.

Rationalizing stages is one of the highest-impact cleanup tasks you can do, but it requires careful execution. The steps:

  1. Pull a report of all Opportunity records and their current stage. Export this.
  2. Design the new stage structure (see the stage definition guide).
  3. Map old stages to new stages explicitly — every old stage gets a new home.
  4. Update all open Opportunity records to the new stage structure using Data Loader or a bulk update tool.
  5. Only then change the picklist values in setup — deactivating old values after all records are migrated.

Do not deactivate old stage picklist values before migrating records. If there are records in a deactivated stage, they become invisible in many reports and you'll spend days trying to figure out where they went.

Field Cleanup

Custom fields in Salesforce accumulate like sediment. Every implementation, every integration, every "quick fix" adds fields. Over time you end up with 80 fields on the Opportunity object, 30 of which are never used.

To identify unused fields, go to Setup → Object Manager → Opportunity → Fields & Relationships. Sort by Created Date. Look at fields created more than two years ago — pull a report to see what percentage of records have a value in each field.

Fields with under 5% fill rate that aren't required by a validation rule or workflow are candidates for archiving. In Salesforce, you can't "archive" a field — you can either delete it or leave it. Before deleting, check: Is this field referenced in any report? Any workflow or flow? Any validation rule? Any page layout? Any API integration? If the answer to all of those is no, it's safe to delete. If you're not sure, leave it hidden on the page layout rather than deleting it.

Validation Rule Cleanup

Validation rules that no longer match your process create the worst kind of Salesforce experience: reps fill in a required field with garbage to bypass a rule that shouldn't apply to them anymore. Pull your validation rules and test each one against your current sales process. If a rule is preventing a workflow that is now legitimate, update or remove it.

Maintain What You Fix

Cleanup without process change is temporary. The records will get messy again. The stages will drift. The fields will accumulate.

Sustainable CRM data quality requires ownership — someone responsible for the system who runs a monthly data quality check, enforces the stage definitions, and reviews new field requests before they get created. That's the RevOps function. Without it, you're cleaning up the same mess every 18 months.

The CRM data hygiene guide covers ongoing maintenance practices in detail.

Inherited a messy Salesforce? Let's fix it.

I run structured CRM cleanup engagements that preserve data history, fix the process underneath the data problem, and leave you with a system your team will actually use.

Talk to Gage →