> ## Documentation Index
> Fetch the complete documentation index at: https://help.reevo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Duplicate Detection

> Set up how Reevo finds duplicate contacts and accounts. Build search rules, choose exact or fuzzy matching per field, and pick whether matches wait for your approval or get merged automatically.

## Overview

Duplicate detection looks through your CRM for records that seem to be the same contact or account, then either queues them for you to check or merges them for you. You control two things:

* **How Reevo decides two records match**: which fields to compare, and how strictly.
* **What Reevo does about it**: hold the match for your approval, or merge it automatically.

When a duplicate is confirmed, Reevo merges it the same way you would by hand: one record survives and the others are archived into it. See [Merging Records](/CRM-configurations/Merging-Records) for what a merge does to your data.

### At a glance

| Detail         | Summary                                                                                        |
| :------------- | :--------------------------------------------------------------------------------------------- |
| **Where**      | [Settings > Data integrity > Duplicate detection](https://app.reevo.ai/settings/deduplication) |
| **Who**        | Admins only                                                                                    |
| **Applies to** | Contacts and Accounts, not Opportunities or custom objects                                     |
| **Set up**     | Separately for Contacts and for Accounts                                                       |
| **Runs**       | Roughly once an hour in the background, or whenever you click Run now                          |

### Duplicate detection vs. unique fields

These are two separate features on the same settings page, and they solve opposite problems:

| Aspect      | Duplicate detection                     | [Unique fields](/CRM-configurations/Unique-Fields) |
| :---------- | :-------------------------------------- | :------------------------------------------------- |
| **Purpose** | Find and clean up existing duplicates   | Stop new duplicates                                |
| **Method**  | Match rules across several fields       | Block one field's value outright                   |
| **Timing**  | Roughly once an hour in the background  | Immediately, when you save                         |
| **Result**  | Records are queued for review or merged | The save is rejected                               |

Most teams use both: unique fields to stop the obvious cases at the door, duplicate detection to catch the messier ones that get through.

***

## Before you start

Only admins can set this up. If you aren't an admin, you won't see the Data integrity page.

Contacts and Accounts are configured **separately**. Switch between them at the top of the panel. Each keeps its own on/off setting, its own rules, and its own policy, so turning detection on for Contacts does nothing for Accounts.

***

## How detection runs

Detection works in the background rather than the moment you save a record. It runs two ways:

| Trigger           | When                                                                                   |
| :---------------- | :------------------------------------------------------------------------------------- |
| **On a schedule** | Automatically, about an hour after the last check finished, as long as detection is on |
| **On demand**     | Whenever you click **Run now**                                                         |

<Note>
  Because this runs in the background, a duplicate you just created won't show up straight away. Click **Run now** if you don't want to wait. If you need something blocked the instant someone saves it, use a [unique field](/CRM-configurations/Unique-Fields) instead.
</Note>

### Status and counts

The card at the top of each object's settings shows whether detection is on, when it last ran, and two counts:

* **X auto-merged**: records Reevo merged for you. Click to see what was merged.
* **X pending review**: matches waiting on you. Click to open the review queue.

Turning detection **off** stops future checks and stops new records being flagged. Anything already in your review queue stays there.

***

## Search rules

Search rules decide when two records count as duplicates. Reevo treats them as **match any rule**:

* Two records are duplicates if they satisfy **any one** of your rules.
* A rule is only satisfied when **every** field in it matches.

So more rules means more records get flagged, and more fields inside a single rule means fewer. There are **4 things to set up**:

### 1. Choose what Reevo does with a match

The first rule is required, and it decides what happens when a duplicate is found:

| Policy             | What Reevo does                                                                       |
| :----------------- | :------------------------------------------------------------------------------------ |
| **Manual review**  | Never merges by itself. Every match waits for your approval.                          |
| **Mixed review**   | Merges exact matches by itself, and sends the less certain ones to your review queue. |
| **Minimal review** | Merges most matches by itself, and only asks about the ones it isn't confident about. |

New organizations start on **Manual review**, so nothing gets merged without you until you decide otherwise.

### 2. Build your rules

Add one or more rules describing which combinations of fields mean "this is the same record".

For example, a Contacts rule of **Display name** and **Primary email** only flags two contacts when both their name and their email match. Add a second rule, say **Display name** and **LinkedIn URL**, to widen the net without loosening either rule.

<Info>
  You need at least one field in a rule before you can save.
</Info>

### 3. Pick exact or fuzzy for each field

Some fields let you choose how strictly to compare. Others are always exact.

| Match type | What it catches                                                                          |
| :--------- | :--------------------------------------------------------------------------------------- |
| **Exact**  | Only values that are the same once Reevo tidies up formatting like capitals and spacing. |
| **Fuzzy**  | Also close values, so spelling differences, nicknames, and wording changes still count.  |

Before comparing anything, Reevo tidies values up:

* Text is lowercased and trimmed, so `Acme, Inc.` can match `acme inc`.
* Emails ignore anything after a plus sign, so `jane+sales@acme.com` matches `jane@acme.com`. On Gmail addresses only, dots in the name are ignored too.
* Phone numbers compare on digits, ignoring a leading US or Canadian country code.
* Web addresses drop `http://`, `www.`, anything after a question mark, and any trailing slash.

<Note>
  For **Email domain** and **Official website**, fuzzy matching compares the company name part and ignores the ending, so `acme.com` and `acme.net` count as a match. Set those fields to exact if you work with companies that use several unrelated domains.
</Note>

After Reevo gathers likely matches, it checks each pair more carefully before deciding. That second check is why detection runs in the background rather than instantly, and it happens whichever match type you pick. Fuzzy only widens which pairs get looked at in the first place.

### 4. Choose your fields

**Contacts**

| Field             | Matching       | Notes                                                                                                         |
| :---------------- | :------------- | :------------------------------------------------------------------------------------------------------------ |
| **Display name**  | Fuzzy or exact | Compares full names. Fuzzy handles nicknames and middle initials.                                             |
| **Primary email** | Fuzzy or exact | Personal addresses like Gmail and Outlook are always ignored here, since colleagues often share none of them. |
| **LinkedIn URL**  | Exact only     | Compares the tidied-up profile address.                                                                       |
| **Phone number**  | Exact only     | Can't be used on its own, because numbers get shared. Pair it with another field.                             |

**Accounts**

| Field                | Matching       | Notes                                                              |
| :------------------- | :------------- | :----------------------------------------------------------------- |
| **Account name**     | Fuzzy or exact | Compares company names. Fuzzy handles "Inc.", "LLC", and capitals. |
| **Email domain**     | Fuzzy or exact | The company domain worked out from contact email addresses.        |
| **LinkedIn URL**     | Exact only     | Compares the company LinkedIn address.                             |
| **Official website** | Fuzzy or exact | Compares the tidied-up website address.                            |

<Tip>
  Fields labelled **Recommended for accuracy** give the most reliable results. Pair a name field with something identifying, such as email, domain, or LinkedIn URL. Matching on a name alone will flag unrelated people who happen to share one.
</Tip>

### Preview before you commit

The **Example matches** section below your rules shows what would happen to sample pairs under the policy you've picked, labelled with that policy's name. Check it before saving, especially if you're moving to a policy that merges on its own.

***

## Review and merge duplicates

What happens next depends on your policy.

**Waiting for you.** Every match under Manual review, and the less certain ones under Mixed review. Open the queue from the **pending review** count, then approve or dismiss each one. Approving runs a normal merge.

**Merged for you.** Exact matches under Mixed review, and most matches under Minimal review.

<Note>
  **Reevo only merges on its own when a group is clear-cut.** It can merge up to 11 records together in one go. Anything larger than that, and any group where more than one record has its own activity history, always goes to your review queue instead.
</Note>

### Which record survives

When Reevo merges by itself, it keeps whichever record it judges more established, working down this list until one wins:

1. The one with more activity on it.
2. Then the one linked to more other records.
3. Then the one updated most recently.

Every other record in the group is archived into it, exactly as in a manual [merge](/CRM-configurations/Merging-Records).

***

## Save your settings

Your changes are held until you save. A footer appears showing your current Contacts and Accounts policies alongside an **Unsaved changes** marker.

* **Save changes** applies everything.
* **Cancel** throws away your changes.

You can't save while a rule has no fields in it, or while a rule uses phone number on its own.

<Warning>
  **Saving also affects matches already in your review queue.** Reevo re-checks everything waiting there against your new settings. If you've switched to a policy that merges more on its own, matches that now qualify can be merged straight away instead of waiting for you. Merges archive the losing record and can't be reversed, so work through or clear your review queue before moving to Mixed review or Minimal review.
</Warning>

***

## Troubleshooting / FAQs

<AccordionGroup>
  <Accordion title="Who can set up duplicate detection?">
    Only admins. The Data integrity page is hidden from everyone else. Ask an admin in your organization to change the rules or the policy.
  </Accordion>

  <Accordion title="How is this different from unique fields?">
    Duplicate detection finds records that are probably the same, using flexible rules across several fields, then reviews or merges them. It cleans up duplicates you already have. Unique fields block a duplicate value on one specific field the moment someone saves, which stops new ones being created. Detection runs in the background about once an hour; unique fields act instantly. Most teams use both.
  </Accordion>

  <Accordion title="Why hasn't a duplicate I just made been flagged?">
    Detection runs in the background roughly once an hour, not as you save. Click Run now to check straight away. If you need instant blocking on a particular field, use a unique field instead.
  </Accordion>

  <Accordion title="What's the difference between exact and fuzzy?">
    Exact only matches values that are identical once Reevo tidies up formatting like capitals and spacing. Fuzzy also matches close ones, so "Acme, Inc." and "acme inc", or a nickname and a full name, still count. Either way Reevo checks each likely pair more carefully before deciding, so fuzzy widens what gets considered rather than lowering the final bar.
  </Accordion>

  <Accordion title="Why can't I use phone number on its own?">
    Phone numbers get shared, most obviously a company main line, so matching on phone alone flags people who aren't duplicates at all. Pair it with something else, such as display name or email.
  </Accordion>

  <Accordion title="Will Reevo merge records without asking?">
    Only if you choose Mixed review or Minimal review. Manual review never merges by itself. Even on the automatic policies Reevo only merges clear-cut groups, and at most 11 records at a time. Anything larger, or any group where more than one record has its own activity, comes to your review queue.
  </Accordion>

  <Accordion title="When Reevo merges on its own, which record is kept?">
    The one with more activity on it. If that's tied, the one linked to more other records. If that's tied too, the one updated most recently. Every other record in the group is archived into it, just like a manual merge.
  </Accordion>

  <Accordion title="Can Contacts and Accounts work differently?">
    Yes. They have separate on/off settings, separate rules, and separate policies. Switch between them at the top of the panel.
  </Accordion>

  <Accordion title="What happens to my review queue if I turn detection off?">
    Future checks stop and new records won't be flagged, but anything already in the queue stays. Turn detection back on to resume.
  </Accordion>

  <Accordion title="Does changing my settings affect matches already in the queue?">
    Yes. Saving re-checks them against your new settings, and matches that now qualify for automatic merging can be merged right away. Clear or work through your queue before switching to a policy that merges more on its own.
  </Accordion>
</AccordionGroup>

> Still have questions? [Sign in](https://app.reevo.ai) and use Ask Reevo for instant answers or to raise a support ticket.
