Skip to main content

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-valueMulti-value
Exactly one meaningful valueSeveral legitimate values at once
A legal name, a date of birthEmail addresses, phone numbers, addresses
Compared atomically when matchingCompared across every combination
One survivorship winnerOptionally 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.

Never flatten a composite into text

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)