CRM Data Cleansing Checklist Before Migration

Migration preview

Formatted content check

I've moved teams into Attio from Salesforce, HubSpot, Pipedrive and more spreadsheets than I can count. The import itself is rarely the hard part though. The new CRM inherits every duplicate, dead field and half-filled record from the old one and the team stops trusting it within a month. So cleanup should happen before the import and not after. Here's the exact process I use.

CRM Data Cleansing Process

Prepare trustworthy records before importing them into Attio or another CRM.

01ExportSecure Source Copy

02AuditMissing and Invalid Data

03DeduplicateReview Likely Matches

04StandardizeNormalize Values

05ValidateCheck Relationships

06ImportTest and Reconcile

Illustrative framework — actual steps depend on your team, tools, and project scope.

Step 1: Design the Attio data model before you touch the data

This is the step most people skip, and it's the one that matters most. Attio isn't Salesforce with a nicer interface. It's built around objects, lists and relationships between records, and a one-to-one copy of your old setup wastes most of what makes it good.

Before any cleanup, decide:
‍Which objects you need. People, Companies and Deals are standard objects. Custom objects are for things that have their own lifecycle and relationships, such as locations, properties, partners, projects or subscriptions.
‍What makes each record unique. Attio identifies people by email and companies by domain. If your business needs a different unique identifier (a site ID, a membership number), that's usually a sign the thing deserves its own custom object rather than living inside Companies.
‍How records relate. One company with many sites? One partner with many referred deals? Map those relationships now, because they decide how you structure your import files.
‍What actually goes in a list vs. an attribute. Pipelines and processes usually belong in lists, not as a pile of status fields on the record.

This is exactly what my Strategy & Process Mapping Workshop covers: 90 minutes mapping your objects, attributes and workflows into an implementation plan, before anything gets built or imported.

Step 2: Inventory every source and every field

List every place customer data lives today: the old CRM, spreadsheets, form tools, billing (Stripe, QuickBooks), enrichment tools, and whatever your sales team keeps in their own notes. Then build a field-by-field inventory.

My rule of thumb: if a field is mostly empty and nobody reports on it, it doesn't make the trip. Older Salesforce orgs in particular collect hundreds of custom fields that nobody has looked at in years. Get sign-off on the inventory from whoever owns sales, marketing and reporting before moving on.

Step 3: Set your duplicate rules, then dedupe

Decide how you'll identify a duplicate before you start merging, or you'll make different calls on different days.
- Normalize first. Lowercase and trim emails. Strip https://, www. and trailing paths from domains. Put phone numbers in one format.
- Match on the normalized values: email for people, domain for companies.
- Review the edge cases by hand. Shared inboxes (info@, sales@), subsidiaries that share a parent domain, people who changed companies, and personal email domains like gmail.com, which should never become a company record.
- Decide which record wins when two conflict: most recently updated, most complete, or a specific source of truth. Deduping matters even though Attio matches on email and domain during import. If your file has three versions of the same company with slightly different domains, you'll get three companies. And it's much easier to clean up records before import than after.

Step 4: Standardize formats without losing meaning

Standardizing is where teams accidentally throw away useful information. The goal is consistency.

- Pipeline stages. Map every old stage to a new one. If your old CRM had "Closed Lost – Price" and "Closed Lost – Timing," don't collapse them into "Lost" and lose the reason. Move the reason into its own select attribute.
- Picklists. Clean up the values before they become Attio select options. "US," "USA" and "United States" are one option, not three. For multi-select fields in your CSV, separate values with commas.
- Dates, currencies and locations. One format each, and confirm the currency on every deal value.
- Free text that should be structured. If people have been typing lost reasons or product interest into notes, this is the moment to turn them into proper attributes.

Pre-Migration Data Quality Checklist

Review the records, relationships, and field definitions that matter to daily work.

Step 5: Check completeness, and never invent data

For each object, check how many records have the fields you actually need: owner, company, email, deal value, stage.

What you do not do is fill gaps with guesses. A blank field is honest. A made-up one is worse than nothing because people will trust it. If you enrich records, keep enriched values clearly separate from information your team has confirmed, so everyone knows what they're looking at.

Step 6: Plan your import order

In Attio, records reference each other, and a reference can only point at a record that already exists. So the order matters:
1. Companies
2. People (linked to companies)
3. Deals (linked to people and companies)
4. Custom objects (linked to whatever they relate to)
5. List entries and their list-specific attributesImporting deals before companies is the most common reason I see relationships come through blank.

Keep in mind that companies and people will be auto created if the email sync is turned on.

Step 7: Test a sample import first

Before the full import, run 50–100 records through.

Are people attached to the right companies?
Are deals linked to the right people and companies?
Did owners map to the right workspace members?
Do your key reports and views show the numbers you expect?

Fix the mapping, rerun, and only then do the full import.

Step 8: Plan the cutover

- Keep a full export of the old system that you can always go back to.
- Pick a freeze date, or plan a delta import for anything created or changed during the migration.
- Decide what history comes over. Emails, notes, calls and activity history are often handled separately from records. For bigger Salesforce or HubSpot moves, a dedicated migration tool can carry activity history over properly.
- Don't cancel the old CRM on day one. Keep it read-only until the team has confirmed nothing is missing.
- Assign owners for checking each object after launch, and for rolling back if something's wrong.

Step 9: Keep it clean after launch

A clean migration lasts about as long as your data-entry habits allow. Build the guardrails into Attio from day one:
- Use select and record-reference attributes instead of free text wherever you can.
- Make the attributes that matter required at the right stage using rules.
- Validate data where it enters: forms, integrations and automations.
- Give each object an owner who's responsible for its data quality.
- Use workflows to flag records missing key information, and do a quick quality check every quarter.

Before vs. After Data Cleansing

Key Takeaway: A successful cleanup improves reliability without inventing missing details or deleting useful relationships.

Before

Duplicate records, inconsistent stage values, unclear ownership.

After

Reviewed identifiers, standardized values, mapped relationships.

Keep Improving

Track completeness and duplicate candidates after launch.

Improve CRM Data Quality With Revautex

Revautex helps teams improve the quality of CRM contact, company, and pipeline data before implementation or migration. Our approach emphasizes careful field mapping, duplicate review, and validation so teams can use their records confidently across reporting, integrations, and day-to-day sales workflows.

Attio’s Official CSV Import Guide

Need Help with Data Cleansing and Enrichment?

Explore Revautex services or book an Attio and RevOps consultation to discuss your requirements.

Written for Revautex by Kayla Campos. About the author · More articles

Frequently Asked Questions

Should I clean my data before or after migrating?

Before. Cleaning after means doing it inside a system your team is already learning, while they lose trust in it. It's slower and it rarely gets finished.

Can I bring over emails, notes and activity history?

Emails can be brought over automatically via the email sync. Notes and activity history are often a separate step from importing records. Decide early how much history your team really needs. Sometimes the last 12–24 months is plenty.

How long does cleanup take?

It depends on how many sources and records you have, but for most teams the cleanup takes longer than the import. That's normal, and it's time well spent.

I already have a RevOps person. Do I still need help?

Teams with in-house RevOps are often my best clients. I work alongside your team on the Attio side. I don't replace them.

Kayla Campos, founder of Revautex

ABOUT THE AUTHOR

Kayla Campos

Founder, Revautex

Kayla Campos founded Revautex to help businesses build more useful CRM systems and connected revenue operations. Our work focuses on Attio implementation, workflow automation, integrations, and CRM data quality.

Meet Our Founder ↗