CDP data catalog and identity rules
Two tabs on Integrations → CDP own the governance side of your customer data: Data catalog aggregates every declared event and property into one data dictionary with its sensitivity classification, and Identity resolution holds the operator-authored rules that decide how an inbound event’suserId merges onto a contact. This guide covers reading the catalog, classifying fields, authoring match rules safely, and setting the survivorship policy that decides which value wins a merge.
The concept — how an incoming identifier becomes one contact, and what merges write downstream — is Identity resolution and merge semantics. This guide teaches the in-app surfaces that let you author and audit that policy.
1. Data catalog: audit where personal data lives
The Data catalog tab is a per-tenant data dictionary. It reads your tracking plan and renders one row per declared event plus one row per declared property, each carrying the governance metadata you attach to it:- Sensitivity —
none,pii,phi,financial, orsensitive. Unclassified entries reportnone. - Owner — the team accountable for the field (free text, e.g.
data-platform). - Allowed use — the purposes the field may be used for (e.g.
analytics,support). - Policy — a reference to the governing policy (retention, masking, lawful basis).
Classify a field
The catalog is read-only. Classification is authored on the tracking plan, stored alongside each event’s property rules, and the catalog tab aggregates it. Add aclassification block to a property rule — or at the top level of the schema for the event as a whole — when you upsert the plan row:
type and enum; sensitivity, owner, allowed use, and policy are stored verbatim and surfaced purely for audit. Classifying a field cannot reject events, break a producer, or change what a destination receives — it answers “where does personal data live?” before that data fans out to destinations and exports.
To mark progress, filter the catalog to Classified only off and work the none rows down to zero. A common cadence: classify on the day you declare the event, then re-review the catalog when a destination or export is added.
2. Identity rules: author how inbound identifiers merge
The Identity resolution tab on Integrations → CDP holds the merge rules that resolve an inbound event’suserId to an existing contact. Each rule has three fields:
- Match shape — one of
External ID,Phone,Email, orAnonymous ID. The shape is the natural key: one row per shape per tenant, so adding a shape that already exists updates that row rather than duplicating it. - Priority (1–1000) — the order the resolver tries shapes in. Lower runs first; the seeded default is 100.
- Enabled — a disabled rule stays in your list but is skipped at resolve time, which is how you stage a removal without deleting the audit history.
External ID enabled at priority 100. That default resolves a userId against the contact’s external identifier and nothing else. The two opt-in shapes change what an inbound userId is allowed to match:
- Phone — treat
userIdas an E.164 phone number and match the contact’s phone. Only enable this when you control the SDK and deliberately ship phone numbers asuserId. A phone-shapeduserIdthat was never meant to be an identity key will stitch the wrong people together, so the tab labels this opt-in. - Email — same trade-off for email-shaped
userIdvalues. - Anonymous ID — matches the platform-assigned anonymous identifier stored on the contact. Safe to enable; it carries no attribution risk because the identifier is platform-owned.
Simulate before you save
Changes to the three shapes the deterministic resolver actually matches on — external ID, email, and phone — are gated: the dashboard refuses to save until you have run a simulation for that shape in the current browser session. A save attempt without one shows a toast naming the simulation to run.- Open Audience → Identity resolution and run the simulation panel against the rule set you intend to apply. The simulation is read-only: it estimates how many clusters the proposed rules would form, how many profiles would merge, and flags rules that over-merge.
- If the estimate looks right, return to Integrations → CDP → Identity resolution and save the same change.
- If it flags an over-merge (one rule stitching far more profiles than expected), narrow the proposal — disable the aggressive shape or raise its priority so a stronger identifier resolves first — and re-run the simulation.
Author the survivorship policy
Match rules decide which contacts merge. The survivorship policy decides which value wins when the merge folds two rows into one — per field, for every merge from then on: newest value wins, oldest wins, a named source system wins, or a non-empty value always beats an empty one. That rule builder lives on Audience → Identity resolution, directly beneath the merge review console, because it governs the merges you review there. Draft the policy, preview it in the same simulation run you use for match rules, then save. Clearing the policy reverts every field to the legacy fallback; the policy itself is validated when it is applied, so an invalid draft fails on save rather than silently half-applying.Policy vs. review queue
The two surfaces split authoring from adjudication:- Integrations → CDP → Identity resolution is where you author the policy — the match shapes, their priority and enabled state. Nothing here approves or rejects an individual merge.
- Audience → Identity resolution is where the policy meets data — the auto-applied merges, the lower-confidence review queue you approve or dismiss one by one, the simulation panel, the survivorship builder, and the stitching timeline that records what merged and why.
3. End to end: declare, observe, tighten
The two tabs form one loop with the tracking plan:- Declare the event. Add the event to the tracking plan in
softmode with its property rules, and tag each property’s classification as you go. - Verify in the catalog. Open the Data catalog tab and confirm the event and its properties appear with the sensitivity and owner you set. Anything showing
noneis a gap in your governance map. - Run traffic. Ship the producer. Watch the tracking plan’s violations feed until the payload and the plan agree.
- Watch identity. If the new event carries an email- or phone-shaped
userId, the identities will not stitch until you enable that match shape. Simulate the enable first, then flip the rule on the Identity resolution tab. - Tighten. Once producers are clean, flip enforcement to
strict; once merge behaviour is proven, reorder rule priorities so the strongest identifier resolves first. Re-run the catalog rollup after any of this to keep the classified share from drifting back down.
4. Permissions and audit
- Data catalog — visible to the owner, admin, and developer roles. It enumerates where personal data lives, so it is not exposed to marketer or analyst roles, and analyst API keys cannot read it.
- Identity rules and the survivorship policy — readable and writable by owner, admin, and developer. Merge semantics are a tenant-wide attribution decision; the dashboard also hides the write controls for roles that lack them, and the API enforces the same restriction regardless of the UI.
See also
- CDP tracking plan — declare the event schemas the data catalog aggregates
- Identity resolution — the merge review queue and survivorship builder on the Audience page
- Identity resolution and merge semantics — the concept: how identifiers resolve, fold, and propagate
- Stitch anonymous sessions into known contacts — the automatic and operator-driven side of the anonymous-ID shape
- CDP API reference — the data-catalog, identity-rules, and survivorship-policy endpoints