The signs are familiar. One customer has two company records and a third under the old domain. Deals sit in "Proposal" from last spring. Pipeline in the CRM and pipeline in the board deck differ, and the deck is the one people believe. Each new hire adds records the way they were taught, which is a little differently each time.
Done in this order, the cleanup takes a few weeks, with no migration to plan.
Decide what one customer is
Before merging anything, write down the rule. Is the customer the company, the legal entity on the contract, or the workspace in your product? When two records collide, which one keeps the owner, the stage, and the history? Settle it once, and every merge after that is mechanical.
Merge in batches, and keep the history
Work through duplicates in small batches and review each one before it merges. Close stale deals as lost with a reason instead of deleting them. Next year, someone will want to know what you already tried with that customer.
Connect the systems that know the truth
Your product knows who is using it. Your billing system knows who pays. Connect both to the CRM, so a customer record shows usage and revenue next to the deal. Then the board number comes from the CRM, and the spreadsheet can retire.
Make it hard to drift again
Require the fields the scorecard needs, give each account an owner, and run a short check every month for new duplicates and deals without a next step. Fix the mess first. Then build. Then automate.
The same order works across more than one tool. A Boston nonprofit sailing school runs on 16 platforms, including Salesforce, scheduling, payments, and maintenance tracking. That engagement sorts each one into keep, merge, or own before anything new gets built.