Duplicate detection on import

Rows that already exist are flagged with WHY they matched, and the default add/skip decision follows the reason.

What it is

Before anything is written, the import compares each row against the existing database. A match on the source CRM's record id means this is a true re-import of the same record and defaults to SKIP; a match only on email could genuinely be a different person and defaults to ADD. Each flagged row can be overridden individually.

Also called: import created duplicates · same person twice · duplicate contacts

See it
Duplicate Leads
Duplicate Leads
10 groups detected. Merge a duplicate into the primary you want to keep.
Match by phone   7175550111
Keep as primary:
Emily Wenger
emily.wenger7@demo.invalid · (717) 555-0111
pm_kickoffsrc: ReferralSB #99000732024
Nicole Groff
nicole.groff8@demo.invalid · (717) 555-0111
contract_signedsrc: Website Form43302
Merge into Emily Wenger:Merge “Nicole Groff”
The Review step listing flagged rows with a 'record id already exists' reason and an Add/Skip toggle per row. ImportContactsModal.tsx. The real screen, drawn from the product’s own design system. Sample data — no customer information appears here.
How it works
  1. 1Match type is recorded as 'record' or 'email'
  2. 2The default decision is derived from the match type, not applied blindly to every duplicate
  3. 3Emails are normalised before comparison
Why we built it

Phone numbers and emails arrive in inconsistent shapes across systems, and that alone had already been creating duplicate people one at a time. An import is the single largest opportunity to make that mistake a thousand times in one click, and a de-duplicated address book is very hard to rebuild afterwards. Rows that already exist are flagged with the reason they matched, and the default add-or-skip decision follows that reason.

The problem
  • Blind re-import duplicating existing records
  • Over-aggressive matching merging two genuinely different people
Sound familiar?
What you get
Re-run an import safely
The system explains its reasoning instead of deciding for you

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →