How to find and merge duplicate clients
If one person has several client records, merging brings their history and money together in one primary record. The other selected records are deleted. An employee makes the decision: a shared phone number or email address does not necessarily mean this is the same person.
Where to open duplicates
- Open the client list.
- In the toolbar above the table, click the icon showing several people and a check mark. Its tooltip is “Duplicate clients”.
- Select a group under “Duplicate groups” and compare the records.
The icon and merging are available only to company administrators: the admin and superadmin roles. The search covers clients across all branches of one company. Records from different companies cannot be merged.
How likely duplicates are found
A match on any one of these details is enough:
| Detail | How it is compared |
|---|---|
| Phone | The last 10 digits, ignoring spaces and punctuation. Shorter numbers are ignored. |
| Passport | The series and number combined, without spaces; at least 6 characters are required. |
Ignoring letter case and spaces at either end; the address must contain @. |
A value shared by more than five clients in the company is not used to find duplicates. Phone numbers made of one repeated digit, such as 9999999999, are also ignored. Demo clients and clients of demo companies are excluded.
A group can connect several matches: two records share a phone number, while the second and third share an email address. Compare everyone in the group even if the reason for the match looks convincing.
Groups marked “Flags differ” come first: for example, one record has a problem flag and another does not. Next come groups where several records have bookings. Within each tier, groups with more recent last bookings appear first. If there are no candidates, you will see “No duplicates found”.
How to choose the primary record and merge
- Compare the names, contact details, passport, driving licence, branch, bookings, balance, category, discounts and flags of the records.
- Check the “Primary” selection. The system suggests the record with the most bookings; if tied, it chooses the one created earlier. You can choose another.
- Clear the “Merge” checkbox for records you want to exclude. Keep the primary record and at least one other record selected.
- Wait for the “After merging” preview. Check the resulting fields, the number of records to move and any reasons shown under “Cannot merge”. Changing the selection recalculates the preview.
- Click “Merge”. In “Merge clients?”, check the number of client records and bookings, then confirm with “Merge”. If you change your mind, click “Cancel”.
After success, “Clients merged” appears, the processed group disappears from the dialog and the client list refreshes. Fields cannot be edited manually in this dialog: open the primary record as usual after merging.
Merging is irreversible
The selected extra records are permanently deleted. There is no undo button. Before confirming, make sure the records belong to the same person. The operations log records who merged which client records.
What moves to the primary record
Bookings, payments, debts, fines, invoices, deposits and blocked amounts, files and driver documents, conversations and messenger links, leads, tasks and notifications move to the primary record. Completed, terminated and cancelled rent-to-own contracts also move.
The balance, blocked balance and debt amount are each added up across the selected records. Merging does not create new cash transactions or move money between cash accounts. Existing payments keep their amounts and the balances recorded before each transaction on the original client record.
For some data, only one version remains: the primary record's client check is kept, or the most recently updated check from the other records if it has none. Album documents are combined. All booking signatures move; for each type of signature on the client record itself, the primary record's signature is kept, or the most recently updated one if it has none.
How fields, flags and discounts are combined
Ordinary fields already filled in on the primary record are kept. Empty fields are filled from the most recently updated selected record with a value in that field. If update times match, the record with the higher ID is used.
The “Problem client”, “Debtor” and “Blacklisted” flags are kept if any selected record has them. Problem descriptions, debt descriptions and additional information are combined; text from other records is labelled with the client ID and name. An invalid-email flag is also preserved for an email address that is carried over.
The category follows the first applicable rule:
- If any selected record has the Black category, that becomes the result.
- If there is no Black category but there is a Gray category, Gray is used.
- If the primary record has a non-empty custom category outside the standard Permanent, Loyal and New categories, it is kept.
- Otherwise, the highest standard category is selected: Permanent, then Loyal, then New.
- If there are no standard categories, the non-empty category from the most recently updated record is used; ties use the higher record ID. If all categories are empty, the field stays empty.
Percentage and fixed discounts are selected separately: each takes the highest value among the selected records. However, if the resulting category is Black or Gray, or there is a “Problem client” flag, both discounts stay as they were on the primary record.
What to do if these are different people
- Select the group and make sure all its records belong to different people.
- Click “These are different people”. You will see “The group was marked as different people”, and the group will disappear.
The button applies to the entire open group, regardless of the “Merge” checkboxes. The decision persists after reloading. If a group contains both a real duplicate and another person, first merge only the records belonging to one person.
Marked pairs are no longer used as matches. They may appear in one group again through a third record; the dialog then shows which IDs belong to different people and prevents merging them together. This decision cannot be undone in the dialog.
When merging is unavailable
| Reason | What to do |
|---|---|
| A non-primary record has a draft or active rent-to-own contract | Choose that record as primary. If several records have such contracts, they cannot be merged together. |
| Several records have a non-zero balance, blocked amount or debt and were created in branches with different currencies | First reconcile the amounts in those branches. Merging does not convert currencies. The records cannot be combined while the conflict remains. |
| Moving payments would create a conflict between reversing transactions | Contact support with the client record IDs: after merging, unrelated transactions could incorrectly be treated as reversing each other. |
| Selected records were previously marked as different people | Exclude records belonging to another person. |
| A demo record is selected | Demo records cannot be merged. |
| No additional record is selected | Keep the primary record and select “Merge” for at least one other record. The primary record cannot also be a record to delete. |
If another employee or operation is currently changing the records, try again later. If a record has already been merged or the group has changed, reopen the duplicates list and check your selection. A rejected merge does not delete records or partially move their data.
Merging through an AI agent
A connected AI agent can also find duplicates, review the result and merge records, if its key was issued by a company administrator. The agent sees the same groups and gets the same reasons a merge is blocked as this dialog. If the key is limited to one branch, the agent only sees groups whose records are all in that branch.
What the agent may do on its own depends on the key's access level for the Fleet area: the merge waits for your approval, shows the result first, or runs immediately. If a record being deleted has a balance, a blocked amount or a debt, the key also needs the approve level or higher for the Money area.
Merging by an agent is just as irreversible
A key with the immediate level merges records without your confirmation. To check every merge, issue the key with the approve level: the agent shows the result and merges the records only after you approve it in RentProg.
For integrators: webhooks after merging
When webhooks are configured, merging emits client_update for the primary record and client_destroy for each deleted record. Only deletion through merging adds merged_into_id to client_destroy: the ID of the primary record that received the data. For regular deletion, payload still contains only id.
payload is a JSON string. For example, record 88 was merged into record 42:
{
"event": "client_destroy",
"payload": "{\"id\":88,\"merged_into_id\":42}"
}Use merged_into_id to associate the deleted record's history with the primary record in your system. Events are generated by a background job after a successful merge, according to the webhook settings.