Skip to main content
Graph enrichment uses third-party identity data to create or strengthen connections between nodes in your identity graph. Unlike addressability expansion, which appends identifiers to existing records, graph enrichment changes the graph’s structure itself—adding edges that connect previously isolated nodes into unified profiles.

What graph enrichment is

Your first-party identity graph reflects the linkages you can directly observe: login events, CRM matches, transaction data. But your observation is limited to your own touchpoints. Graph enrichment fills the gaps by incorporating linkages observed by third-party providers across their own data ecosystems. The result is a more connected graph with fewer fragmented profiles and better person-level or household-level resolution.

How it works

Consider a retail company with this first-party data:
  • Customer A: hashed email + iPhone IDFA (observed via app login)
  • Customer A: hashed email + home address (observed via shipping)
Their first-party graph has a connected component with three nodes: email, IDFA, and address. A third-party identity provider observes that the same email is also linked to an Android GAID and a second hashed email (a work address). After graph enrichment:
  • Customer A’s component now includes five nodes: personal email, work email, IDFA, GAID, and home address
  • The retailer can now reach Customer A on Android devices and recognize them when they use their work email
The graph’s structure changed. New edges were added, and the connected component expanded.

Effects on the graph

Graph enrichment can improve your identity graph in several ways: Person-level resolution. Connecting identifiers that belong to the same individual across devices and channels. A customer who appears as three separate profiles (email-only, MAID-only, cookie-only) becomes one resolved profile. Household-level resolution. Linking identifiers across individuals within a household. Shared addresses, shared IP ranges, and shared device usage can connect household members when that level of resolution is appropriate for your use case. Waterfall matching flexibility. A richer graph gives you more identifiers per person, which means more opportunities to match against any given activation platform. If one identifier type fails to match, another may succeed. Longitudinal consistency. When identifiers change over time (cookies expire, MAIDs reset), a well-enriched graph maintains continuity through other persistent linkages.

What to look for in providers

When evaluating graph enrichment providers, focus on these criteria:
CriterionWhat to measureWhy it matters
Linkage depthAverage edges per nodeMore edges per node means richer resolution
Determinism ratePercentage of deterministic vs. probabilistic linkagesDeterministic linkages are more reliable
Confidence score qualityDistribution and calibration of confidence scoresWell-calibrated scores enable meaningful thresholds
Update cadenceHow frequently linkages are refreshedStale linkages degrade graph quality over time
Incremental component overlapHow many of your existing components gain new edgesMeasures actual incremental value vs. redundant coverage

Risks

Graph enrichment carries higher stakes than addressability expansion. A bad identifier append reduces match rates—an inconvenience. A bad linkage merges two distinct people into a single profile—a structural corruption that propagates through every downstream use case. Protect against this by:
  • Setting confidence thresholds. Only incorporate linkages above a minimum confidence score. Start conservative and relax over time as you validate quality.
  • Monitoring component size distribution. A sudden increase in very large components may indicate over-linking. Healthy graphs follow a predictable size distribution.
  • Evaluating incrementally. Test a provider’s linkages against a subset of your graph before full integration. Measure resolution improvement against a known truth set.

Graph enrichment in Narrative

Narrative’s platform supports graph enrichment evaluation and execution through Rosetta Stone and NQL.

Evaluating provider linkage coverage

Use NQL to measure how much incremental coverage a provider adds to your existing graph:
SELECT
    provider."_rosetta_stone"."unique_identifier"."type" AS id_type,
    COUNT(DISTINCT provider."_rosetta_stone"."unique_identifier"."value") AS provider_ids,
    COUNT(DISTINCT CASE
        WHEN seed."_rosetta_stone"."unique_identifier"."value" IS NOT NULL
        THEN provider."_rosetta_stone"."unique_identifier"."value"
    END) AS overlapping_ids
FROM external_provider."identity_linkages" provider
LEFT JOIN company_data."first_party_graph" seed
    ON provider."_rosetta_stone"."unique_identifier"."value" = seed."_rosetta_stone"."unique_identifier"."value"
    AND provider."_rosetta_stone"."unique_identifier"."type" = seed."_rosetta_stone"."unique_identifier"."type"
GROUP BY provider."_rosetta_stone"."unique_identifier"."type"

Measuring resolution improvement

Compare connected component metrics before and after incorporating a provider’s linkages to quantify the resolution improvement they deliver.