About Contacts Duplicates Real Time Search


Contacts Duplicates Real Time search is an Odoo partner management tool. The app helps to prevent the appearance of contacts' duplicates or to expose them. The tool can detect that the contact has a duplicate when you create or observe a record, as the app searches for similarities in real time. 

Flexibly set the criteria to find duplicates, and strictly forbid saving the same contact or warning about the existence of a similar one. As duplicate criteria use any stored field of the following types: char, text, many2one, selection, date and datetime, integer, and float. 

Optionally choose to search for duplicates among all contacts or only among companies and stand-alone individuals (without company).

If you also want to find duplicates among opportunities, then consider the app CRM Duplicates Real Time search, which searches for both contacts and opportunities duplicates.

The multi-company mode is supported and the settings are applied to each company separately.

Real-time search

Smart partners consideration

Configurable duplicate criteria

Soft and rigid duplicates



Configurable duplicates criteria


Duplicates are defined according to the rules which you set up. A rule is a field according to which an item is considered a copy. For example, an email or a name. A customer is considered a duplicate if it satisfies any of the criteria. Any field or combination of fields on the contact's card can be considered to distinguish whether a contact is unique or a duplicate.

To configure the search settings go to General Settings and scroll down to the section 'Contacts Duplicates'.


A rule is a field, which serves as a search criterion in order to find contacts duplicates. Only the chosen search criteria contact card fields will be checked for matches.

To set the criteria to define contacts' duplicates:

1. Click on the button 'configure duplicates criteria' in one of the sections  'Soft Duplicates Criteria' or 'Rigid Duplicates Criteria'

2. Choose one of the stored fields from the list, or click 'Search more' to see the full fields' list

You can set up both rigid and soft search criteria or choose only one of them (see Soft and rigid duplicates).

To configure rigid/soft search criteria:

1. Go to General Settings and scroll down to the section 'Contacts Duplicates'

2. If you want Odoo to let you save potentially the same contacts, then select such criteria in the section 'Soft Duplicates Criteria'

3. Choose fields that are required to be different in the section 'Rigid Duplicates Criteria', for example, phone or email, and a second contact with the same value will be impossible to save


As a rule/duplicate criteria use any stored field of the following types:

1. Char (name, email, phone, mobile, etc.)

2. Text (descriptions)

3. Many2one (reference for a parent company or a related customer)

4. Selection (for instance, type)

5. Date and datetime (e.g. birthday)

6. Integer and float (any unique code or even planned revenue)  

The module compares the chosen fields of each contact with other contacts and searches for matches. In order to be considered as a duplicate, the contacts' field should be absolutely identical, for example, '123'='123'. Even a slight difference will result in considering a contact as a unique one. Only for the case of soft search by char fields, it is the operator 'ilike'. Thus, 'agro' is considered to be a potential duplicate of 'Agrolait' (but Agrolait is not considered a duplicate of 'agro').

If you added the same rule, for example, 'Email', in both 'Partner Soft Duplicates Fields' and 'Partners Rigid Duplicates Field', then the rigid search criteria will dominate and you will not be able to save a contact with the absolutely identical value in the field.

Restrict the search only to companies and stand-alone individuals. If the option is checked, Odoo will search only for and only among customers without parent contact. For example, if you have 200 contacts that are divided between 15 parent companies and 50 more individuals' contacts, then the system will check only for matches in the preset fields among 65 contacts. Each contact will be compared with the other 64. That will reduce the number of contacts to check and therefore will speed up the duplicate search time (see Performance issues).


The module supports multi companies and duplicates are searched within a certain company. However, the duplicate search settings are applied to all companies on the platform at once.

There might be equal contacts related to different Odoo companies and they will not be considered as duplicates.


Soft and rigid duplicates


The tool lets you both strictly avoid duplicates and/or just warn of those according to the set rules. A rule is a field by which an item is considered as a copy. For example, an email or a name. Use rigid criteria to fully exclude duplicate creation. Use soft criteria to only notify Odoo users of possible duplicates.  

For all fields, a duplicate should have absolutely the same value. For example, '123' equals '123', but '123' is not equal '1234'. Only for the case of soft search by char fields, the operator is 'ilike'. Thus, 'agro' is considered to be a potential duplicate of 'Agrolait' (but Agrolait is not considered a duplicate of 'agro').

You can set the soft and/or rigid criteria in General settings > Contacts Duplicates. If you choose one and the same field as both rigid and soft criteria, then the rigid criteria will dominate and you will not be able to save the contact with the same value in the field.

After setting soft criteria in the contacts list you will see a mark 'N Potential duplicates' and the button 'N Duplicates' on the contact's card.


After setting rigid criteria, the tool will not let to save a contact with the same value in chosen rigid fields. If you try to save such a partner, a pop-up warning appears. The warning shows the name of a duplicate, its unique ID, and matching fields. That allows you to find the contact easily, or to change the value in the matching fields of the currently created one in order to save a new partner.




Soft duplicates managing and merging


See the contacts duplicates from the list view and kanban view. In the list view click on the three dots and then tick 'Duplicates count' to see the column with the number of duplicates to each contact.

You can also filter contacts by potential duplicates, for that click on the 'Filters' above the contacts view and choose 'Potential Duplicates'.


Optionally, you can turn off the calculation of the number of soft duplicates when opening a kanban, tree, or form view. It is particularly useful when you need to speed up the views loading since the app will not calculate potential duplicates for each shown record. The search filter is not influenced by the setting.

To turn off the soft duplicates count in kanban and tree view:

1. Go to General Settings and scroll down to the section 'Contacts Duplicates'

2. Tick the option 'Do not show soft duplicates count (tree and kanban view)'

3. Click 'Save' in the top left corner.

To turn off the soft duplicates count in form view:

1. Go to Settings and scroll down to the section 'Contacts Duplicates'

2. Tick the option 'Do not show soft duplicates count (form view button)'

3. Click 'Save' in the top left corner.


Based on duplicates found you can merge those based on Odoo standard partner merging tools. To that end:

1. Click on the line 'N Potential duplicates' or on the button 'N Duplicates', where N is the number of found duplicates, in the contact's card to see its duplicates and similar fields

2. Choose duplicate records

3. Choose the destination contact

4. Click on a contact to open its card and see details before merging

5. Click 'Add a line' to add one more contact for merging manually

6. Click 'Merge'.




Performance issues


The app searches for the contacts' duplicates in real-time. Every time from any interface view: kanban, list, map, as you create or open a contact, the system searches for matches of the chosen fields among all available contacts. Although the tool is optimized to make searches as efficient as Odoo ORM allows it, with a growing number of documents, a search might become slower as all shown records are checked for duplicates among all existing records.

For example, when you open kanban view with 1000 contacts, the tool makes searches by your criteria among all of them. It may result in slowdowns of the following operations:

1. Opening kanban and list views of Odoo contacts. To avoid that, you may turn off showing the counter for a corresponding view. 

2. Saving changes after updating partners. To avoid that, assign only soft parameters and neglect rigid ones.