Contacts and replies

Why was a contact duplicated?

In short

Why do I have duplicate contacts in Reply?

The contact identifier you choose at import decides what counts as the same person. If a second import uses a different identifier, or the identifier column is empty for some rows, Reply has nothing to match on and creates new contacts. Merge what already exists from the People tab.

Quick fix

  1. Open both copies and compare the field you used as the contact identifier; if it differs or is empty on one, that is the cause.
  2. Merge the existing duplicates from the People tab.
  3. For the next import, choose the same identifier you used before, and make sure that column is filled for every row.
  4. Confirm the count in People → Contacts dropped by the number you merged.

Didn't work? Contact Reply support; the team can check your account directly.

Symptom

The same person appears as two contacts, often with slightly different data: one with a phone number, one without; one with a LinkedIn profile, one with only an email. Sequence statistics count them separately, and both may receive outreach.

Most likely causes

CauseHow to recognize it
The second import used a different contact identifier than the firstThe two copies differ in whichever field was not used as the identifier
The identifier column was empty for those rowsThe duplicated contacts are exactly the ones with a blank identifier field
The list had no email addresses, and the import used Email as the identifierCommon with LinkedIn exports – every row looks new, so importing the same file twice doubles it
The same person appears twice inside one fileOnly one is imported; the other is reported as Skipped. If both exist, they differed in the identifier field
Two records genuinely differ – a personal and a work addressNot a duplicate to Reply. Both are real contacts unless you merge them

Diagnostic checklist

  1. Find out which identifier each import used. It is the single decisive fact. Email, LinkedIn Profile URL, a custom field and Contact ID are all valid, but only if used consistently.
  2. Check the identifier column for blanks in the file you imported. A row with an empty identifier cannot be matched to anything and always creates a contact.
  3. Check whether the list has emails at all. A LinkedIn export usually does not. Importing it with Email as the identifier gives every row a placeholder address, so a second import of the same list duplicates it.
  4. Look at the import result. A high Skipped count means matching worked; a high Imported count on a re-import means it did not.

Resolution

Merge the duplicates that already exist

Merge them from the People tab. When two records disagree on a field, you choose which record wins; by which was edited most recently, by whichever was created first, or by team member priority. A merge is refused when the two contacts are in conflicting sequence states; resolve the sequence membership first, then merge.

Stop it happening again

Pick one identifier and use it for every import of that audience.

  • Email is the most reliable when your contacts have email addresses.
  • LinkedIn Profile URL is the right choice for lists without emails, but use it for every import of that list, not just the second one.
  • A custom field works when you have a stable ID from your own system.

Make sure the identifier column is filled for every row before importing. Rows with a blank identifier are the ones that duplicate.

The list has no email addresses

Import with LinkedIn Profile URL as the identifier, not Email. Reply gives email-less contacts a placeholder address, and placeholders are not a useful match key; every import will look new.

Several contacts already share one LinkedIn address

Duplicates that share a LinkedIn profile address cause a second, quieter problem: when a new row arrives with no email address (which is every row from a LinkedIn search) and its LinkedIn address already matches two or more of your contacts, Reply cannot decide which one to update and drops the row entirely, with no error and no entry in the import results.

So shared LinkedIn addresses do not only create duplicates; they silently block future imports of those same people. Merging them fixes both at once. See Why did the LinkedIn search import fewer people than it found?.

Duplicate company records after enrichment

Companies duplicate for a different reason from contacts. When enrichment looks for an existing company to attach a contact to, the search is scoped to the person who owns that contact, so a company one of your teammates already created is not found, and a second copy is created alongside it.

You will see two company records with the same or nearly the same name, owned by different people. Merge them. This is current behaviour rather than anything you configured, and it is most visible on teams where several people enrich contacts at the same companies.

Verification

Re-import a small sample of the same file. The result should report the rows as Updated or Skipped, not Imported. If they come back as Imported, the identifier is still not matching.

Prevention

  • Decide the identifier once per audience and write it down. Inconsistency between imports is the cause in most cases.
  • Clean the identifier column before importing: no blanks, no trailing spaces, one value per row.
  • For LinkedIn lists, keep profile URLs in a consistent form. Two spellings of the same profile may be treated as two people.
  • Re-import the same file rather than an edited extract when you only want to update fields.

FAQ

Does Reply detect duplicates automatically?

Only against the identifier you chose for that import. It is not a general similarity check; two records with the same name and company but different identifiers are two contacts.

What happens to sequence membership when I merge?

The surviving contact keeps its sequence membership. If the two contacts are in sequence states that cannot be combined, the merge is refused and you resolve that first.

Two spellings of the same LinkedIn URL – same contact?

Not always. Whether URL variations are treated as one profile depends on a setting that is being rolled out gradually, so keep profile URLs in a consistent form rather than relying on it.

Still stuck? Contact Reply support

If these steps didn't solve the problem, the Reply support team can look at your account directly. Open the Reply Help Center and send the team a message.

To get an answer faster, include:

  • which contact identifier each import used
  • whether the identifier column was filled for every row
  • the four counts from the import result notification
  • roughly when each import ran, and your timezone

Don't send passwords, API keys, or access tokens.

Build with Reply