log in sign up now
HubSpot Duplicate Contact Tiebreaker back to library
~ / library / Data Quality / hubspot-duplicate-contact-tiebreaker

HubSpot Duplicate Contact Tiebreaker

When HubSpot flags possible duplicate contacts with no shared email or domain, use MoltSets to confirm they're the same person before merging, so you don't collapse two different people into one record.
  • Check these possible duplicate contacts in HubSpot before I merge them
  • Confirm whether these two HubSpot records are the same person

What this skill does

Reviews HubSpot's possible-duplicate contact pairs and decides which ones are genuinely the same person before anyone hits merge. Where the two records share no email or domain to go on, it resolves each one independently through MoltSets and compares the results, so a merge only happens when the underlying identity actually matches, not just the name.

Chain

HubSpot possible-duplicate contact pairs
  to hubspot/get-object                 (both records: name, company, title, LinkedIn if present)
  to MoltSets, per record where identity is unclear:
      reverse_linkedin_lookup           (LinkedIn URL -> current company, title)
      search_business_profile_by_name   (name + company -> LinkedIn, title)
  to compare LinkedIn URL, current company, and title across the pair
  to classify: same person / different person / inconclusive
  to hubspot/merge-objects              (same-person pairs only, after confirmation)

Inputs

  • Duplicate pairs - the set of possible-duplicate contacts flagged by HubSpot, or a manually supplied pair
  • Confidence threshold - how strong a match needs to be to auto-classify as same person versus flag for manual review
  • Merge action - auto-merge confirmed pairs, or return the classification only and let a person merge manually

How it works

  1. Pulls each contact in the duplicate pair, including any LinkedIn URL, company, and title already on file
  2. For pairs with no shared email or domain, resolves each contact independently: reverse_linkedin_lookup if a LinkedIn URL is present on either record, search_business_profile_by_name otherwise
  3. Compares the LinkedIn URL, current company, and title returned for each side of the pair
  4. Classifies the pair as same person (LinkedIn URL matches, or company and title align closely), different person (clear mismatch), or inconclusive (not enough to resolve either side)
  5. Only proceeds to hubspot/merge-objects on same-person pairs, and only after you confirm

Output

Contact A Contact B A: Company/Title B: Company/Title LinkedIn Match Classification Action
Pairs reviewed:              X
Same person confirmed:       X
Different person:            X
Inconclusive:                X
Merges completed:            X
MoltSets tokens used:        X

Tips

  • Requires the HubSpot remote MCP (mcp.hubspot.com) and the MoltSets MCP connected in the same client
  • A shared LinkedIn URL is the strongest single signal available, treat a match there as decisive and everything else as supporting evidence
  • Merging is irreversible in practice, so always confirm before running merge-objects, even on high-confidence pairs
  • Inconclusive pairs are worth leaving unmerged rather than guessing, a wrongful merge is more costly to unwind than a lingering duplicate
  • Custom objects are not reachable through HubSpot's remote MCP, so this applies to standard contact records
01 Download the .moltsets skill file below
02 Open Claude and go to Settings to Skills
03 Click Add skill and select the downloaded file
04 Open a new chat in Claude
05 Prompt Claude using one of the example prompts or use your own
// difficultyIntermediate
// connectionHubSpot, Claude Chat
// got a skill of your own? Submit it to the library