Run
How-to Reviewed · not yet fact-checked
In short
How do I manage duplicate contacts in Reply?
Duplicates are prevented at import: the contact identifier you choose, such as Email, Last Name, or Phone, becomes the key, and matched rows are updated or skipped instead of doubled. Review Imported, Updated, Skipped, and Import Errors counts after each import, and use the account import modes and contact handling settings to control overwrites.
Goal
One record per person, and imports that update rather than multiply.
Preconditions
Understanding of the deduplication rule: the contact identifier chosen at import — a unique field such as Email, Last Name, or Phone — is the distinguishing key that prevents duplicates.
Steps
- At import, choose the contact identifier deliberately in the drop-down menu. Once a unique identifier is chosen, it keys every row against existing records and the other fields become optional.
- Choose the Matched Records option: Update Missing Fields writes new data from the CSV into the existing contact's fields; Skip leaves the existing record untouched. Either way, a matched row never creates a second record.
- After each import, read the result counts: Skipped rows are duplicates the system removed during the import; Updated rows are existing contacts whose profiles were refreshed. Download the full import result file when a count looks wrong.
- For account (company) imports, pick one of four modes: Overwrite existing fields, Update missing fields, Skip, or Duplicate — the last one deliberately creates a copy of the account with the new data and leaves the original unchanged.
- In Settings, open the Contact handling tab (Team Owner only) and set the enrichment behavior for when new information is found: Keep existing data preserves current information and skips conflicting new data; Override with new data replaces existing fields.
- On team accounts, decide how shared people are handled: Pause contact in all sequences on reply pauses a replying contact everywhere, and Pause all contacts from the same organization on reply extends the pause to colleagues — Reply matches the organization by the Company field, falling back to Domain when Company is blank. Both apply to business domains only.
Expected result
Searches for a person return one record; re-imports report updates and skips, not creations, for known people. LinkedIn URL variants of one profile do not create duplicates either — Reply normalizes them to one canonical form; see contact deduplication.
Verification
Re-run the same import: the summary shows Updated and Skipped rows and zero new Imported ones.
Common mistakes
- Expecting records with two different identifier values to merge — a person under two email addresses stays two records; automatic merging is not documented.
- Choosing the account Duplicate import mode when you meant Update missing fields — Duplicate creates a copy on purpose.
- Treating Skipped as an error — it is the dedup rule declining to double a known contact.
Related
Build with Reply
- REST API: docs.reply.io — create/update semantics and contact lookup
- MCP: agents.reply.io/mcp — agents search and reconcile records