How to avoid duplicate imports
Imports are the number-one source of duplicate records: a naive load creates a new record for every row, including people and companies already in the system.
Avoiding this is entirely preventable - it just requires matching incoming rows against existing data before, not after, the load.
Short answer
Avoid duplicate imports by de-duping the file against existing records and against itself before loading, matching on a strong key like email, choosing update-or-create behavior so matches update instead of duplicate, and testing on a sample. The core rule is match before you load, so an import updates known records rather than blindly creating new ones.
Step by step
De-dupe the file against itself
Files often contain internal repeats. Collapse duplicates within the file first, so it does not create duplicates on its own.
Match against existing records
Compare each row to current records on a strong key like email, so you know which rows are new and which already exist.
Use update-or-create behavior
Configure the import to update matched records and only create genuinely new ones, rather than inserting everything as new.
Test on a sample
Run a small batch and confirm matches updated instead of duplicated before loading the full file.
Match before you load
The entire trick to avoiding duplicate imports is matching incoming rows to existing records before loading, and choosing update-over-insert for matches. An import that inserts every row is guaranteed to duplicate everyone already in the system. Match first, and duplicates never form.
How Ardovo helps
Ardovo matches every import row against existing records and within the file, updating matches instead of creating duplicates, and previews the outcome first. Rook handles the matching automatically, so imports enrich known records rather than flooding the database with copies.
Frequently asked questions
Why do imports create duplicates?
Because a naive import inserts every row as a new record without checking whether that person or company already exists. Every row for someone already in the system becomes a duplicate. Matching rows against existing data before loading is what prevents it.
What is update-or-create on import?
Import behavior that matches each row to existing records and updates the match if found, only creating a new record when there is no match. It is the setting that turns an import from a duplicate factory into a safe way to enrich and add records.
How do you match import rows to existing records?
On a strong, unique key - primarily email for contacts, domain for accounts. Matching on these reliably identifies rows that already exist so the import updates them. Weak keys like name alone risk both false matches and missed duplicates.