- Review holds changes Clustr can write to your CRM and is waiting for you to decide on. Everything in it has an Apply button.
- Findings holds problems Clustr cannot fix by itself. You fix them in your CRM.
Review
Review shows every waiting change from every scan, grouped by kind, for example “Safe · Format & casing · contact · phone”. Each group shows its count and a few examples, with the value before and after. A change waits in Review when:- its check is set to Ask me; or
- its check is on Do it, but the check was not sure, for example a merge between two records with near-identical names, or a company association.
Apply and dismiss
Over the API and MCP, dismissing a group stops the suggestion by default
(
suppress: true). Send suppress: false to only clear it.
Every bulk apply, in the app or over the API and MCP, takes only Certain merges. A
Likely merge is accepted one at a time.
Before writing, Clustr reads each record again. If someone changed the value in your
CRM since the scan, Clustr does not write over it: the change becomes a
conflict.
When changes leave Review on their own
- Fixed in your CRM. When a scan looks at a record again and no longer finds the problem, the change closes. History shows it as Resolved before review or No longer found.
- Not seen for 45 days. A waiting change that no scan has found again in 45 days closes the same way. A change that every scan still finds stays until you decide.
Changes that failed
When changes could not be saved to your CRM, Review shows a “changes need attention” banner with a Retry button on each. See Failed and conflict.Findings
Findings counts open problems by kind, and lists each one with a reason and, on HubSpot, an Open in HubSpot link to the record. Expand a duplicate group to see every record in it, each with its own Open link. Each full scan refreshes the list.Export findings
Export CSV next to the search downloads every open finding that matches the kind and search you picked. Each row has the kind, the object type, the record id and name, the reason, when it was first and last seen, and a link to the record in HubSpot. A file holds at most 50,000 rows. Over the API, useGET /api/crm/cleaning/findings/export.
Dismiss findings
- Dismiss on one finding clears it.
- Dismiss all ▸ Dismiss these clears the kind. The findings you dismissed are not reported again, but the same problem on other records still is.
- Dismiss all ▸ Dismiss and stop reporting this clears the kind and stops reporting it.
suppress: false).
Duplicates and merges
Clustr groups records that look like the same contact or company. Deals follow their own, stricter rules: see Duplicate deals.- Personal email domains and link shorteners never count as a shared identifier.
- A role mailbox such as
info@,sales@orcontact@never counts as the same person: two people can share one. - Person names are compared without accents, so
HélèneandHelenematch. - Phone numbers are compared in international form, so
+33 6 48 27 19 53and06 48 27 19 53on a French record match, and a contact’s phone can match another contact’s mobile. Numbers need at least 8 digits. - A phone number alone is never Certain. Two contacts on one number whose names disagree are not matched at all, and companies need a similar name as well as the number.
- A number shared by more than 3 records, such as a switchboard or an office line,
is ignored. So are placeholders such as
0000000or123456789. - When one company name sits inside the other, the websites must agree: if both records have a website, it must be the same one, and if only one has a website, the other’s name must appear in it. Two companies with different websites never match.
- Two contacts that share an email or LinkedIn URL but whose names disagree are shown with Names differ. They are Likely, never Certain.
Your own match rules
Under Settings ▸ CRM Cleaning ▸ Match rules you can add up to 5 rules for contacts and 5 for companies. A rule is a list of fields, for example contacts with the same First name, Last name and Company, or companies with the same Name and City. Two records match a rule when every field in it is filled and the same on both.- Values are compared ignoring case, accents and extra spaces, so
Saint-Étienneandsaint-etiennematch. Phone numbers are compared as numbers, emails in lower case, domains and LinkedIn URLs the way the built-in matching reads them. - A blank field never matches.
- A rule only adds pairs. The built-in matching still runs, and a pair it already found keeps its own reason.
- A pair found only by your rule is always Likely: it waits for you and never merges on its own. It shows the rule’s fields in alphabetical order, as “Your rule: company + first_name + last_name”.
- Two contacts whose names disagree are not matched by a rule either.
- A value many records share, such as a common job title, is ignored, the same way an office phone number is.
Two ways to merge
- From Review. With Contact duplicates or Company duplicates on Do it, certain matches merge on their own and the rest wait in Review as pairs, marked Certain or Likely. Each pair shows why it matched, for example “Same LinkedIn: in/ana-silva” or “Same email: ana.silva@northwind.example”, the record to Keep, the one to Merge into it, and the value each field would keep. Apply certain merges applies only the Certain pairs. Merge each Likely pair on its own with Merge, or Dismiss it.
- From Findings. Click Merge on a duplicate group, then confirm. Clustr reads the records again from your CRM, picks the record to keep, and queues one merge per other record. The button only shows on a CRM that can merge.
Which record is kept
By default Clustr keeps, in this order:- the record that has an owner, because that is the one a rep works;
- then the most complete record;
- then the most recently updated one;
- then the one created first.
Up to 10 rules. They apply to the pairs a scan proposes and to a merge started from
Findings, so run a scan after changing them to refresh the pairs already waiting.
For each field, the kept record keeps its own value, and a blank is filled from the
other record. The Kept column of a pair shows exactly that: what your CRM will hold
after the merge. For a name field, the kept record gets the richer spelling of the
same name:
O'Connor over Oconnor, Hélène over Helene.
To keep a different value for a field, pick it when you accept the merge. Over the API,
send field_overrides when you accept the change.
Over the API, survivorship in the settings changes the policy:
Custom match rules are
match_rules in the settings:
{ "contact": [{ "fields": ["first_name", "last_name", "company"] }], "company": [{ "fields": ["name", "city"] }] }.
A rule holds at most 6 fields. An unknown field, a field named twice, an empty rule, the
same rule twice or more than 5 rules for one object type is refused.
Duplicate deals
Two open deals are reported as duplicates only when all of these hold:- they are in the same pipeline;
- they are linked to the same company;
- their names match. Case, accents, punctuation and spacing are ignored, and so is a
trailing
(copy),- copyor[clone], or the company’s own name, soWebsite redesign - NorthwindmatchesWebsite redesign. A number is kept:Seats #1andSeats #2never match, because they are usually two deals; - their amounts are the same, or neither has an amount, and when both have a currency it is the same;
- they were created within 90 days of each other.
Merges are permanent
Your CRM has no unmerge. History offers Revert on a merge for 30 days, but it recreates the archived record as a new record with a new id. See Revert. A deal merge has no Revert. To stop every merge at once, setmerge_enabled to false in the
settings. Everything else keeps
running.