Skip to main content

Lead Merge & Deduplication

What Duplicates Are and Why They Happenโ€‹

A duplicate is when the same person appears more than once in your leads list. This happens more often than you might think:

  • The same person fills in a form on your website twice (once in January, once in March)
  • A lead comes in from Facebook Ads and the same person was already imported from a CSV
  • A team member manually adds a lead who already existed
  • A webhook delivers a lead that was already received through another channel

Duplicates are a problem because you end up contacting the same person multiple times and your reports show inflated numbers.


How LeadHub Detects Duplicatesโ€‹

LeadHub checks for duplicates using two pieces of information:

  • Email address โ€” if two leads share the same email, they are considered duplicates
  • Phone number โ€” if two leads share the same phone number (after normalizing formatting), they are considered duplicates

This check happens automatically whenever a new lead is created โ€” whether it comes in through a form, a webhook, an import, or the API.


Duplicate Detection Badgeโ€‹

When LeadHub finds that a lead might be a duplicate of an existing one, it marks it automatically and shows a "Possible Duplicate" badge on the lead detail page.

Click the badge (or the link next to it) to see which other lead it matches. You can then decide whether to merge them or dismiss the match if it is a false positive.


Merging Duplicatesโ€‹

When you are on a lead detail page and see the duplicate badge:

  1. Click View Duplicate or Merge to open the merge interface.
  2. You will see both leads side by side.
  3. For each field (name, email, phone, company, notes, etc.), choose which version to keep โ€” the primary lead's version or the duplicate lead's version.
  4. Click Merge.

What "Primary" Meansโ€‹

The primary lead is the one that survives the merge. It keeps its ID, its creation date, and all of its history. The other lead (the duplicate) is absorbed into it and then removed.

Choose as the primary whichever lead has more complete or more accurate information โ€” or whichever is older if both are equally complete.

Field-by-Field Mergeโ€‹

You do not have to take everything from one lead or the other. You can mix:

  • Take the name from the primary lead
  • Take the company from the duplicate (maybe it was filled in better there)
  • Take notes from both (notes are combined automatically)

Any field you do not explicitly choose defaults to the primary lead's value. If the primary has no value for a field but the duplicate does, the duplicate's value fills it in automatically.


What Happens After a Mergeโ€‹

After merging, the primary lead contains:

  • All fields โ€” from whichever source you chose for each
  • All activities โ€” every activity log entry from both leads is now on the primary lead
  • All notes โ€” notes from both leads are preserved
  • All tags โ€” tags from both leads are combined (no duplicates)
  • All tasks โ€” open tasks from the duplicate lead move to the primary lead
  • All form submissions โ€” submission history from both leads is kept
  • All automation run history โ€” preserved on the primary lead

The duplicate lead is removed. A note is automatically added to the primary lead recording the merge date and the ID of the lead that was merged in.


Preventing Duplicatesโ€‹

During Importโ€‹

When you import leads from a CSV file, LeadHub checks each row against existing leads. If a match is found by email or phone, you can choose to:

  • Skip the duplicate (do not import it)
  • Update the existing lead with any new data from the import row
  • Import anyway (creates a duplicate that you can merge later)

During Webhook Ingestionโ€‹

When leads arrive through webhooks or integrations, LeadHub checks for a match before creating a new record. If a match is found, it flags the new lead as a possible duplicate and links it to the existing one.

During API Ingestionโ€‹

The API inbound endpoint also runs the same duplicate check. A is_duplicate flag is set on the new lead if a match is found, and the match is linked so you can merge from the UI.