Data 360 identity resolution and golden records — rulesets for individuals and accounts, match rules, reconciliation rules, unified and link objects, the Connect API (create, run now, read status), limits, verification SQL, and failures
How Data 360 turns duplicate CRM accounts and contacts into golden records. A ruleset per object (Individual or Account) holds match rules (exact, fuzzy name, normalized email, phone and address) and reconciliation rules (last updated, most frequent, source priority). The result is a unified DMO and a link DMO. Covers the Connect API endpoints with their documented fields, the capture-and-replay way to script rulesets, run limits, SQL to measure consolidation, and the failures.
markdownreferencev1K4GN-7RVNstage: unifytrust: officialservice: data360interface: restinterface: sqlidentity resolutiongolden recordunified profilerulesetIndividual rulesetAccount rulesetmatch rulesexact matchfuzzy namenormalized emailreconciliation ruleslast updatedmost frequentsource priorityUnifiedIndividual__dlmIndividualIdentityLink__dlmUnifiedLinkssotAccount__dlmruleset ID suffixPOST /ssot/identity-resolutionsconfigurationTypematchRulesreconciliationRulesdoesRunAutomaticallyPOST /ssot/identity-resolutions/{id}/actions/run-nowidentity resolution runs per dayconsolidation ratematch rateidentity resolution takes 30 minutes
Identity resolution and golden records
A ruleset unifies one object, Individual (people) or Account (companies), inside one data space. It produces:
- a unified DMO: the golden record, holding reconciled attributes and no source data;
- a link DMO: one row per source record, pointing to its unified record, so you can traverse from source to unified and back.
Rules
| Kind | Options | Use for accounts, people and orders |
|---|---|---|
| Match rules (any rule matching links records) | Exact on any field; fuzzy on names; normalized on email, phone and address | People: fuzzy first name + exact last name + normalized email, then normalized phone + exact last name. Accounts: exact account number, then normalized name + normalized billing address or phone |
| Reconciliation rules (which value the golden record keeps) | Last updated, most frequent (null is never chosen), source priority (your source order) | Contact points: last updated. Names: source priority with CRM first. Account type and industry: most frequent |
Order data is never unified itself. Orders join to golden records through the link DMOs (reference/data360/insights-and-data-graphs.md).
Objects created
| Ruleset object | Unified DMO | Link DMO |
|---|---|---|
| Individual | UnifiedIndividual__dlm | IndividualIdentityLink__dlm (Salesforce's Trailhead SQL) |
| Account | Unified Account | UnifiedLinkssotAccount__dlm (per a community guide) |
With a second ruleset, the ruleset ID is appended to the names; the Salesforce workshop's object is "Unified Individual ccid". Resolve the names at run time by listing DMOs, as guides/data360/automate-the-golden-record-pipeline.md does.
API
| Call | Endpoint (under /services/data/v66.0/ssot) |
|---|---|
| List or create rulesets | GET / POST /identity-resolutions |
| Read, update or delete one | GET / PATCH / DELETE /identity-resolutions/{id}. Every item endpoint is keyed by ID, per the community plugin |
| Run now | POST /identity-resolutions/{id}/actions/run-now |
- The create body's fields are
label,description,configurationType(the object),rulesetId,matchRules,reconciliationRules(required) anddoesRunAutomatically, per Salesforce's Connect API reference. - The nested shapes of match criteria and reconciliation rules didn't render for the hub. Capture them from a working org instead of writing them by hand:
- Build the ruleset once in the UI.
- Run
GET /identity-resolutions/{id}. - Drop
id, status and run fields, and commit the JSON. POSTit to other orgs.
guides/data360/automate-the-golden-record-pipeline.md does this. Data kits are the supported alternative (reference/data360/automation-and-data-kits.md).
- Reading status: responses carry
status,lastRunStatusandmatchedRate(field names seen by the community plugin). Poll until the last run succeeded. A first run "can take up to 30 minutes", per Salesforce's workshop.
Limits
These are from a community guide (2025). Check the current Data 360 limits page before you design around them:
- 2 rulesets per data model object per data space;
- on-demand runs up to 4 times per 24 hours per ruleset;
- scheduled runs every 24 hours by default, skipped when nothing changed.
Each run consumes Data 360 credits (family 10).
Measure the golden records
SELECT COUNT(*) AS source_records, COUNT(DISTINCT l.UnifiedRecordId__c) AS golden_records
FROM IndividualIdentityLink__dlm l
- The consolidation rate is
1 - golden_records / source_records. Track it per run; a sudden jump usually means an over-broad match rule. - Field names on link DMOs vary with the ruleset.
UnifiedRecordId__cis the hub's reading of the Trailhead query. Confirm the names withGET /ssot/data-model-objects/{link DMO}before relying on this SQL.
Failures
| Symptom | Cause → fix |
|---|---|
| Unified DMO missing or empty | The ruleset hasn't run, or the run failed. Read lastRunStatus, then run now |
| Run-now refused | The daily on-demand limit was reached. Wait for the scheduled run |
| Unrelated people merged | A match rule on a shared value (a company switchboard number, a generic email). Remove it or combine it with a name match |
| Duplicates not merged | Contact points aren't mapped (Contact Point Email or Phone), or normalization doesn't apply to that field |
| Account ruleset finds nothing | The Account mappings it needs are missing, or the account DLO isn't profile data (reference/data360/streams-and-mapping.md) |
| SQL fails on the unified name | A second ruleset changed the object names. Re-resolve them |