Skip to main content
CRM Cleaning scans your connected CRM for data-quality issues: duplicate records, missing associations, formatting problems, incomplete fields, and (on HubSpot) lifecycle-stage anomalies. Not every fix is possible on every provider: what a detector can do depends on the write APIs the provider itself offers. How Clustr decides what to apply, what to ask you about and what to report is on the CRM Cleaning overview, and every check is described in Every check. Clustr never hides this. A problem your CRM cannot act on goes to the findings report rather than the queue, so it is never shown as something you can apply. The tables below tell you which is which for your provider before you run a scan. You can also read this live for your own workspace from GET /api/crm/cleaning/capabilities, which returns the same information this page documents.
This page is checked against Clustr’s cleaning engine in CI: the tables below cannot go stale without breaking a build.

Provider capability matrix

These are the three CRM-write capabilities CRM Cleaning’s detectors depend on.
  • Record merge: a real API to merge two records into one, keeping a single survivor.
  • Associations: a way to write links between records, such as a contact to its company.
  • Lifecycle stages: a HubSpot-style lifecycle-stage and deal-pipeline model. Attio has no equivalent concept; Salesforce’s Stage and Status fields model something different, not a drop-in substitute.

Detector actionability by provider

  • Full: the detector runs with everything it needs. Its changes follow the rule’s setting (Off, Ask me or Do it), and its findings appear in the findings report.
  • Flag only: the detector runs, but this provider has no write API for its fix, so everything it finds goes to the findings report and you fix it in your CRM directly.
  • Skipped: the detector does not run at all. This provider has no equivalent of the concept it checks (for example lifecycle stages on Attio), so a finding would have nothing real to point at.
  • Mixed (duplicate detection only): duplicate groups appear in the findings report on every provider. Merging a group also needs record merge, so on Salesforce and Attio the group is visible but the merge action is not offered. Duplicate deals work the same way: every provider reports them, and only HubSpot can merge a group, when a person asks for it.
Format & casing (format_normalize) runs on every provider, but two of its fields need the CRM to say what values a property accepts, and only HubSpot does: country, and state / region (United States, Canada, Australia and India). On Salesforce and Attio both are left as they are. See the format standard. Missing associations can be fixed on every connected provider: Attio and Salesforce both added association writes after CRM Cleaning first shipped on HubSpot. Record merge and lifecycle stages remain HubSpot only: Attio has no lifecycle-stage concept to build against, and record merge on Salesforce and Attio is only planned if a customer needs it. Standardise values runs on every provider for contact job title and company name. Its other fields (lead status, lifecycle stage, company industry, city and state) are written by their HubSpot property names, so mappings on them apply on HubSpot only.