Automatic deduplication
How Ikigai finds and merges duplicate contacts and deals — match criteria, merge direction, and the guards that keep closed and archived deals untouched.
Ikigai has two built-in deduplication systems, configured under Settings → Integrations: Contact deduplication («Дедупликация контактов» / «Дедуплікація контактів») and Deal deduplication («Дедупликация сделок» / «Дедуплікація угод»). Both run automatically in the background on every new lead and record update.
Contact deduplication
Runs whenever a contact is created or updated. It compares the contact's identifiers against the rest of the workspace using the Match criteria you choose:
- Phone only, Email only, or Phone or email;
- Phone and name — stricter, for markets where family members share a number;
- Custom field — match on any contact field (for example a passport or tax number).
Merge priority decides which record survives: Keep oldest or Most complete. The duplicate's identifiers, deals, and history are re-pointed to the survivor. You can also scope the search to specific pipelines and stages, and allow or forbid cross-pipeline matching.
Deal deduplication
Runs when a deal is created or changes stage. You define deduplication blocks — each block is a pipeline plus a set of stages that count as "the same working set". Within the blocks, duplicates are found by a shared primary contact or a shared company, optionally gated by an extra field that must also match (for example the deal amount).
Merge direction picks the surviving deal:
| Option | The survivor is… |
|---|---|
| Keep oldest deal | The earliest created |
| Keep newest deal | The most recent |
| Furthest in pipeline | The one deepest into the stages |
| Highest amount | The one with the largest value |
| Block priority | The one in the block with the lowest priority number |
With Preserve creation date on, the surviving deal keeps the earliest creation date in the group, so funnel and age reports stay honest.
Safety guards
- Closed deals are never touched: a deal marked won or lost is never auto-merged, in either direction.
- Archived (deleted) records are never touched: anything in the trash is invisible to dedup.
- Excluded stages you configure are skipped.
- A contact that already holds 10 or more open deals is treated as a suspicious "system" contact — merging is refused and flagged for manual review.
- Every merge leaves a note on both timelines and is recorded as a merge event that can be undone. Owner notifications depend on the type: deal-merge notifications are on by default, contact-merge notifications are off by default (opt-in), and bulk cleanup runs never notify.
Warning: API-driven ingestion fires automations. Records arriving through lead webhooks, website forms, the public API, and integrations (including spreadsheet-to-API bridges) emit the same
contact.created/deal.createdevents as a live lead — welcome emails, distribution rules, and auto-dedup all run at ingestion speed. Before pushing a bulk of records through those channels, review your active automations and pause anything that emails clients. The built-in CSV import is different: it writes directly to the database and does not emit these events, so automations and auto-dedup do not react to those rows.
Note that the CSV importer additionally has its own, simpler Skip duplicates by check — it skips matching rows during the upload itself, while the systems described here merge duplicates that made it into the database.
Was this article helpful?