Attributes and data types
An attribute is a named piece of data on an entity type. How you declare it changes how matching, survivorship, and validation behave.
Cardinality
| Single-value | Multi-value |
|---|---|
| Exactly one meaningful value | Several legitimate values at once |
| A legal name, a date of birth | Email addresses, phone numbers, addresses |
| Compared atomically when matching | Compared across every combination |
| One survivorship winner | Optionally every distinct value preserved |
Getting this wrong is expensive later. Declaring email single-value forces the platform to discard real data at every merge.
Usage types
A multi-value attribute can bind a usage type — home, work, mobile — drawn from a controlled list.
This is more than a label. Survivorship groups by usage type, so each resolves independently: one winning home address and one winning work address, rather than one address overall. Without usage types, a merge would have to pick a single address and discard the rest.
One value per usage type may be marked preferred.
Composite attributes
Some values are structured, not scalar. An address is a set of named parts, not a string.
Declaring it composite is what allows matching to target sub-fields — comparing postal codes exactly while comparing street lines loosely. That is impossible if the address is one joined string.
Once structure is lost it cannot be recovered reliably. Comparing two whole composites with a scalar comparator is rejected outright, because two entirely different addresses would otherwise compare as equal — a catastrophic over-merge.
Binding to reference data
An attribute whose values come from a controlled list binds to a lookup type. The platform then accepts only that list's codes.
The code is stored; the label is resolved when reading. That separation means relabelling a value in the interface does not rewrite stored data, and every consumer displays the same thing.
Search accounts for this too: searching a lookup-bound attribute matches the resolved label, not only the stored code — so finding a place by its name works even though a code is what is stored.
Validation
Attributes carry validation rules with a severity: errors block the write, warnings record a violation and lower the data quality score.
Next
Last verified against commit 952ed91b (2026-08-03)