> ## 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.

# Unique Fields

> Make a custom field unique so Reevo blocks duplicate values when records are created or updated. Set up unique fields per object, check your existing data for conflicts, and manage enforcement from Data integrity settings.

## Overview

A unique field stops two records of the same object from sharing the same value in that field. Once a field is unique, Reevo blocks duplicate values at save time: if someone tries to save a value another record already has, the save is rejected and Reevo shows which record already uses it.

Use a unique field to protect an identifier your team relies on, such as:

* One employee ID per contact
* One external system ID per account
* One contract number per custom record

<Info>
  Unique fields stop new duplicates from being created. They don't clean up duplicates you already have. For those, use [Merging Records](/CRM-configurations/Merging-Records) or [Duplicate Detection](/CRM-configurations/Duplicate-Detection).
</Info>

### At a glance

| Detail         | Summary                                                                                                    |
| :------------- | :--------------------------------------------------------------------------------------------------------- |
| **Where**      | [Settings > Data integrity > Unique fields](https://app.reevo.ai/settings/deduplication?tab=unique-fields) |
| **Who**        | Admins only                                                                                                |
| **Applies to** | Custom fields on Accounts, Contacts, and custom objects                                                    |
| **Scope**      | One field at a time                                                                                        |
| **Limit**      | 3 unique fields per object                                                                                 |
| **Enforced**   | As soon as you save a record, including during imports                                                     |

### Unique fields vs. duplicate detection

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

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

***

## Before you start

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

Uniqueness applies to [custom fields](/CRM-configurations/Custom-Fields), so you need the field to exist before you can make it unique. You can also turn uniqueness on while you're creating the field.

Each unique field covers one field on its own. Reevo can't enforce uniqueness across a combination of two or more fields together. If you need a combined key, make a single custom field that holds the combined value, then make that field unique.

***

## Which fields can be unique

You can make custom fields unique on **Accounts**, **Contacts**, and any of your **custom objects**. Opportunities aren't supported.

Five field types can be unique:

| Can be unique      | Cannot be unique               |
| :----------------- | :----------------------------- |
| Text (single line) | Long text                      |
| Text (multi-line)  | Date                           |
| URL                | Single-select and multi-select |
| Number             | Boolean/Checkbox               |
| Amount/Currency    | Computed and Roll up           |

Computed and rollup fields can't be unique because Reevo works out their values for you rather than someone typing them in.

<Note>
  **Some fields are already unique.** A few standard fields have uniqueness built in and always on. Contact email is the main one. These appear in your Unique fields list marked **Default**, with a read-only icon, and they don't count toward your limit of 3. You won't find them in the **Add field** picker, because they can't be changed or removed.
</Note>

***

## How Reevo compares values

Reevo tidies values up before comparing them, so near-identical entries still count as duplicates:

| Rule                                        | Example                                         |
| :------------------------------------------ | :---------------------------------------------- |
| **Upper and lower case are the same**       | `GB-123` matches `gb-123`                       |
| **Spaces at the start and end are ignored** | `" GB-123 "` matches `GB-123`                   |
| **Trailing zeros on numbers are ignored**   | `10.500` matches `10.5`                         |
| **Empty values never clash**                | Any number of records can leave the field blank |

***

## Make a field unique

There are two places to do this, and both run the same checks.

### From the field editor

Use this when you're already creating or editing the field.

1. Go to **Settings**, pick your object under **CRM**, and open **Custom Fields**.
2. Click **Add Field**, or click an existing field to edit it.
3. Turn on **Set as unique**.
4. Click **Save**.

If you're turning this on for a field that already has data in it, Reevo checks your existing records first and shows you any conflicts. New fields skip the check, since there's nothing to compare yet.

### From Data integrity settings

Use this when you want to see everything that's currently unique in one place.

1. Go to [**Settings > Data integrity**](https://app.reevo.ai/settings/deduplication?tab=unique-fields) and open the **Unique fields** tab.
2. Click **Add field**.
3. Pick the **Object**.
4. Pick the **Field**. Fields that are already unique show an **Already unique** label and can't be picked again.
5. Under **When duplicates exist**, choose what should happen to records that already share a value.
6. Wait for the conflict check to finish, and sort out any conflicts it finds.
7. Click **Proceed**.

***

## Handling records that already share a value

Making a field unique doesn't just affect what happens next. Reevo also has to decide what to do about records that already hold the same value. There are **3 things to know**:

### 1. Choose what happens to existing duplicates

| Option                        | What it does                                                                                              |
| :---------------------------- | :-------------------------------------------------------------------------------------------------------- |
| **Block if duplicates exist** | Cancels the setup if any records already share a value. Pick this when your data should already be clean. |
| **Allow existing duplicates** | Leaves the current duplicates alone and only enforces uniqueness on records saved from now on.            |

### 2. Read the conflict check

As soon as you pick a field, Reevo checks your existing records in the background. This takes a few seconds. You'll get one of three answers:

| Result                                                | What it means              | What to do                   |
| :---------------------------------------------------- | :------------------------- | :--------------------------- |
| **No conflicting values. Safe to define.**            | Nothing is in the way      | Carry on                     |
| **X records have conflicting values for this field.** | Some records share a value | Click **Resolve duplicates** |
| **We couldn't finish checking for conflicts.**        | The check didn't complete  | Click **Try again**          |

<Note>
  On very large amounts of data, the check reports a total and a sample of the conflicting records rather than listing every single one. Uniqueness still applies to all of them.
</Note>

### 3. Sort out the conflicts

Clicking **Resolve duplicates** opens a **Resolve duplicates** page in a new tab, so your setup stays open behind it. The page groups records by the value they're clashing on.

For each group you can:

* Click **Merge** to combine the records. This works for groups of 2 to 10 records. Above 10 the button is disabled, and you use **View list** instead to open the object's list filtered to that value and work through it in bulk.
* Click any record to open it and change or clear the value, or delete the record.

Groups you've finished with show a **Resolved** badge. If a merge didn't clear the clash, the group shows **Merge didn't clear this, re-check** so you can look again.

When you've worked through the list, click **Re-validate** to run the check again. Once it comes back clean, go back to your setup tab and finish.

***

## What happens when someone hits a duplicate

Once a unique field is active, Reevo blocks any save that would create a duplicate value.

**In the app**, a red warning appears under the field reading **Already in use by another contact**, or **Already in use by 3 other contacts** when several records hold the value. The warning lists the records so you can click straight through to them, showing the first three with a **Show 2 more** link for the rest. You can't save until you change or clear the value.

**Through the API**, the request is rejected with a 409 error reading `"GB-123" is already used by another contact and must be unique.` The response also includes the ID of the record holding the value, so an integration can look it up.

***

## Manage your unique fields

The **Unique fields** tab lists everything currently unique, with its object, field, and status. You can search by field or object name, filter by object or status, and sort any column.

### Status

| Status            | What it means                                                                                                                                               |
| :---------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Active**        | Uniqueness is fully in force across new and existing records.                                                                                               |
| **Setting up...** | Reevo is still working through your existing records. Anything saved from now on is already protected.                                                      |
| **Failed**        | Setup couldn't finish, usually because records already shared a value and you chose **Block if duplicates exist**. A failed field isn't enforcing anything. |

If a field failed, delete it and start again, either after cleaning up the duplicate records or by choosing **Allow existing duplicates** the second time.

### Change or remove a unique field

You can't edit a unique field in place. To change which field is unique, or to change how existing duplicates were handled, delete it and set it up again.

To delete one:

1. Click the **...** menu on the field's row.
2. Select **Delete**.
3. Confirm in the **Delete unique field?** dialog.

Deleting stops enforcement. Your records and their values stay exactly as they are, duplicate values become allowed again, and you can make the field unique again later.

<Warning>
  Fields marked **Default**, such as contact email, can't be deleted. They show a crossed-out pencil icon instead of the menu.
</Warning>

***

## Unique fields and imports

Uniqueness applies to [CSV imports](/Data-management-and-migration/Import-via-CSV) as well as to records people create by hand, so an import can't sneak a duplicate value past a unique field. Rows that would duplicate a value, either against an existing record or against another row in the same file, are skipped rather than imported, and reported back so you can review them. The rest of the import goes ahead as normal.

Deleting or archiving a record frees up its values for someone else to use. When you [merge two records](/CRM-configurations/Merging-Records), the surviving record keeps its values and the archived one's are released.

***

## Troubleshooting / FAQs

<AccordionGroup>
  <Accordion title="Who can set up unique fields?">
    Only admins. The Data integrity page is hidden from everyone else. Ask an admin in your organization if you need a field made unique.
  </Accordion>

  <Accordion title="Can I make a standard field unique?">
    Not at the moment. Uniqueness is available on custom fields. Some standard fields, such as contact email, are already unique automatically and appear in your list marked Default.
  </Accordion>

  <Accordion title="Can a unique field cover two fields at once?">
    No. Each one covers a single field. If you need a combination to be unique, create one custom field that holds the combined value and make that field unique.
  </Accordion>

  <Accordion title="Is it case-sensitive?">
    No. Case is ignored, and so are spaces at the start and end, so "GB-123", "gb-123", and " GB-123 " all count as the same value. Trailing zeros on numbers are ignored too, so 10.500 is the same as 10.5.
  </Accordion>

  <Accordion title="What about records where the field is empty?">
    Empty values are never compared, so any number of records can leave a unique field blank. Uniqueness only applies to records that actually have a value in it.
  </Accordion>

  <Accordion title="I got a warning when saving a record. What now?">
    Another record already has that value. Open the record the warning links to and decide which of the two should keep it, then change or clear the value on the other. If the two records are duplicates of each other, merge them instead.
  </Accordion>

  <Accordion title="Why did setup fail?">
    Setup fails when records already share a value and you chose "Block if duplicates exist". Nothing is being enforced. Delete the field, then either clean up those records first or set it up again with "Allow existing duplicates".
  </Accordion>

  <Accordion title="Will this clean up the duplicates I already have?">
    No. Unique fields only stop new ones. Use Duplicate Detection or Merging Records for records that are already duplicated.
  </Accordion>

  <Accordion title="How many can I have?">
    Up to 3 per object. Fields marked Default, such as contact email, don't count toward that.
  </Accordion>

  <Accordion title="Why can't I pick my date, dropdown, or long text field?">
    Those types aren't supported, along with Boolean/Checkbox, Computed, and Roll up. Use a Text, URL, Number, or Amount/Currency field instead.
  </Accordion>

  <Accordion title="What happens during a CSV import if a row would create a duplicate?">
    That row is skipped instead of imported, and reported back so you can review it. Everything else in the file imports as normal.
  </Accordion>
</AccordionGroup>

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