Short answer
Call tracking tools often create a contact with an auto-generated email when the caller is not found by email. That contact never matches the real one, so you get duplicates sharing a phone number. In an analysis of 83 duplicate groups for a builder client, only 2 were safe to merge automatically. The caller names were mostly unusable, so phone alone could not authorize a merge. The durable fix is at the source: stop automatic creation, or dedupe in a workflow.
1. The symptom
A construction client's team was sending bulk texts through their call tracking tool, and the texts were not matching existing HubSpot contacts. The tool had auto-generated placeholder emails, which created new contacts instead of attaching to the real ones. Past touchpoints were scattered across twins.
2. Build the list and group by phone
Create a contact list of the records the tool created, sorted by phone number, and group it by phone. I did this with a script, but a list sorted by phone in the UI shows the pairs too. The question for each group is whether phone and name together justify a merge.
3. Why name data breaks the rule
I classified all 83 groups. Only 2 had an exact name match, the same owner, and no deals. The other 81 had problems:
- Reversed order. "Burrell Raynard" instead of "Raynard Burrell", fixable by normalizing.
- Carrier junk as a name. "Wireless Caller", "Not Available", and city and state in the name field. The phone is the only evidence.
- Truncated or misspelled. Same person, needs fuzzy matching.
- Genuinely different people on one number. A household, or a changed name. These must not be merged blind.
Phone alone cannot authorize a merge, and neither can name alone. Normalizing reversed names and flagging carrier junk reclassifies many of the groups, but the output should be a reviewed list, not an automatic batch.
4. Fix the source
- Turn off default contact creation in the tool. The trade-off I flagged: it will then only sync to contacts that already exist with a matching email, so brand new callers get no HubSpot record.
- Dedupe in a workflow. Data Hub workflows can run duplicate handling in near real time.
- A script. A scheduled script that normalizes names and merges the safe class works, with a human reviewing the rest.
For this client the analysis was done and the merge was waiting for the client to approve. I never merged anything without that approval.
There are no HubSpot screenshots in this article because the portal belongs to a client. For the merge screen, see duplicates created by a script.