A client's sales team kept getting Slack alerts for leads they'd already spoken to. Some leads got two welcome sequences. A few got none. Everyone blamed the CRM. The CRM was innocent.
Where the duplicates come from
Almost always, the same place: two tools creating the same person. The booking tool makes a contact when someone schedules. The form tool makes a contact when they fill in the application. The ad platform's lead form makes a third when they come from Meta. Each one is right. None of them check whether the others already did it.
Phone numbers make it worse. One tool stores +1 555 0100, another stores 5550100, a third stores it with brackets. To a CRM those are three different people.
How we fix it
One rule for who creates contacts: the CRM, and only through one door. Every other tool sends its data to the CRM through an automation that looks the person up first, by email, then by a normalized phone number, and only creates a new record if neither exists. Otherwise it updates the one that's there.
Then one automation owns every downstream action. Not the booking tool sending its own alert and the form tool sending another. The CRM fires the welcome sequence, the Slack alert, the pipeline stage change, once, when the contact is created or when a specific field changes.
What it fixes
On that account, the duplicate alerts stopped the same day. The welcome sequence went out exactly once per person. And a quieter benefit: the reporting became true, because "new leads this week" finally meant new people, not new records.
If your CRM has two of everyone, don't start by merging. Start by finding the second door, and closing it.

