Skip to main content
An organization maturing its identity strategy faces a common challenge: dozens of third-party identity providers offer overlapping capabilities, and it is not always clear which providers deliver incremental value versus redundant coverage. This cookbook provides a structured evaluation process for choosing between graph enrichment and addressability expansion providers and measuring their contribution.

What this cookbook covers

This cookbook walks through a five-step evaluation process:
  1. Define whether you need graph enrichment, addressability expansion, or both
  2. Baseline your current identity graph and match rates
  3. Select providers for proof-of-concept testing
  4. Measure each provider’s incremental contribution
  5. Evaluate commercial terms and build a layered strategy
The result is a repeatable framework you can apply each time you evaluate a new provider or renegotiate an existing relationship.

Prerequisites

Before starting, ensure you have:

Step 1: Define your primary objective

Start by identifying which problem you are solving: Choose graph enrichment if:
  • Your audience segments feel fragmented—the same customers appear as multiple profiles
  • Your frequency capping is ineffective because you cannot recognize users across devices
  • Your attribution is unreliable because conversion paths break across identifier boundaries
  • You need to improve person-level or household-level resolution before activation
Choose addressability expansion if:
  • Your segmentation is sound but match rates on activation platforms are low
  • You have strong first-party identity but limited identifier type diversity
  • You are expanding to new activation channels (CTV, programmatic audio, digital out-of-home) that use identifier types you do not currently have
  • You need immediate lift in campaign reach without changing your targeting logic
Choose both if:
  • You have fragmented profiles (graph enrichment problem) AND low platform match rates (addressability problem)
  • You are building identity infrastructure for the first time and need both resolution and reach
Most organizations eventually need both, but the sequencing matters. Graph enrichment typically comes first because better resolution improves the accuracy of everything downstream, including addressability expansion.

Step 2: Baseline your current state

Before evaluating any provider, measure where you stand today.

For graph enrichment: measure graph structure

-- Count connected component sizes in your first-party graph
SELECT
    component_size,
    COUNT(1) AS component_count,
    SUM(component_size) AS total_identifiers
FROM (
    SELECT
        seed.internal_user_id,
        COUNT(DISTINCT seed."_rosetta_stone"."unique_identifier"."value") AS component_size
    FROM company_data."first_party_graph" seed
    GROUP BY seed.internal_user_id
)
GROUP BY component_size
ORDER BY component_size
Key metrics to record:
MetricWhat it tells you
Singleton percentageShare of profiles with only one identifier—these are unresolved
Average component sizeHow many identifiers per resolved profile
Deterministic coverageShare of linkages based on direct observation vs. inference
Identifier type distributionWhich identifier types you have and which you lack

For addressability expansion: measure match rates

-- Count identifiers by type in your first-party data
SELECT
    seed."_rosetta_stone"."unique_identifier"."type" AS id_type,
    COUNT(DISTINCT seed."_rosetta_stone"."unique_identifier"."value") AS unique_ids,
    COUNT(DISTINCT seed.internal_user_id) AS unique_users
FROM company_data."crm_seed" seed
GROUP BY seed."_rosetta_stone"."unique_identifier"."type"
Record your current match rates on each activation platform you use. These become the baseline against which you measure provider lift.

Step 3: Select providers for proof of concept

For graph enrichment providers

Evaluate candidates on:
  • Linkage methodology. Deterministic linkages from login events are more reliable than probabilistic linkages from behavioral signals. Understand each provider’s methodology mix.
  • Update cadence. Identity data has a shelf life. Providers that refresh linkages monthly are more valuable than those refreshing quarterly.
  • Incremental coverage. A provider whose linkages overlap 90% with your existing graph adds less value than one with 40% overlap and 60% net new edges.

For addressability expansion providers

Evaluate candidates on:
  • Identifier type coverage. If you need MAIDs for programmatic and hashed phones for social, ensure the provider covers both.
  • Platform-specific match rates. Ask providers for benchmark match rates on the specific platforms you activate on.
  • Freshness guarantees. Appended identifiers that are six months old will have significantly lower match rates than those observed within the last 30 days.

How to evaluate incremental vs. overlapping coverage

Use NQL to measure overlap between a candidate provider and your existing data:
-- Measure identifier overlap with a candidate provider
SELECT
    provider."_rosetta_stone"."unique_identifier"."type" AS id_type,
    COUNT(DISTINCT provider."_rosetta_stone"."unique_identifier"."value") AS provider_total,
    COUNT(DISTINCT CASE
        WHEN seed."_rosetta_stone"."unique_identifier"."value" IS NOT NULL
        THEN provider."_rosetta_stone"."unique_identifier"."value"
    END) AS overlapping,
    COUNT(DISTINCT CASE
        WHEN seed."_rosetta_stone"."unique_identifier"."value" IS NULL
        THEN provider."_rosetta_stone"."unique_identifier"."value"
    END) AS net_new
FROM external_provider."candidate_identity_data" 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"

Step 4: Measure incremental contribution

Run a time-boxed proof of concept with each shortlisted provider and measure specific outcomes.

For graph enrichment: measure structural improvement

MetricHow to calculateWhat good looks like
Net new edgesCount linkages the provider adds that you did not haveHigher is better, but quality matters more than volume
Component size changeCompare average component size before and afterModest, consistent growth (not sudden large merges)
Singleton reductionChange in percentage of single-identifier profilesDirect measure of resolution improvement
Cross-device reachPercentage of profiles with identifiers on 2+ device typesMeasures practical multi-device capability

For addressability expansion: measure activation lift

MetricHow to calculateWhat good looks like
Match rate lift by platform(New match rate - baseline match rate) / baseline match rateVaries by platform; 20%+ lift is meaningful
Incremental addressable usersUsers matchable after expansion minus users matchable beforeThe absolute reach improvement
Cost per incremental matchProvider cost / incremental matched usersCompare across providers for efficiency
Identifier freshnessPercentage of appended identifiers observed within last 30/60/90 daysFresher identifiers match at higher rates

Measuring before and after in Narrative

Create materialized views that capture your baseline and post-enrichment states:
-- Baseline: unique users matchable by identifier type
CREATE MATERIALIZED VIEW "identity_baseline"
DISPLAY_NAME = 'Identity Baseline - Pre-Enrichment'
DESCRIPTION = 'Baseline identifier coverage before provider enrichment'
TAGS = ('identity', 'evaluation', 'baseline')
WRITE_MODE = 'overwrite'
AS
SELECT
    seed."_rosetta_stone"."unique_identifier"."type" AS id_type,
    COUNT(DISTINCT seed.internal_user_id) AS unique_users,
    COUNT(DISTINCT seed."_rosetta_stone"."unique_identifier"."value") AS unique_ids
FROM company_data."crm_seed" seed
GROUP BY seed."_rosetta_stone"."unique_identifier"."type"
-- Post-enrichment: unique users matchable after provider data is incorporated
CREATE MATERIALIZED VIEW "identity_post_enrichment"
DISPLAY_NAME = 'Identity Post-Enrichment - Provider A'
DESCRIPTION = 'Identifier coverage after incorporating Provider A data'
TAGS = ('identity', 'evaluation', 'post-enrichment')
WRITE_MODE = 'overwrite'
AS
SELECT
    combined_id_type AS id_type,
    COUNT(DISTINCT internal_user_id) AS unique_users,
    COUNT(DISTINCT combined_id_value) AS unique_ids
FROM (
    SELECT
        seed.internal_user_id,
        seed."_rosetta_stone"."unique_identifier"."type" AS combined_id_type,
        seed."_rosetta_stone"."unique_identifier"."value" AS combined_id_value
    FROM company_data."crm_seed" seed
    UNION
    SELECT
        seed.internal_user_id,
        provider."_rosetta_stone"."unique_identifier"."type" AS combined_id_type,
        provider."_rosetta_stone"."unique_identifier"."value" AS combined_id_value
    FROM company_data."crm_seed" seed
    INNER JOIN external_provider."provider_a_data" provider
        ON seed."_rosetta_stone"."unique_identifier"."value" = provider."_rosetta_stone"."unique_identifier"."value"
        AND seed."_rosetta_stone"."unique_identifier"."type" = provider."_rosetta_stone"."unique_identifier"."type"
)
GROUP BY combined_id_type

Step 5: Evaluate commercial terms

Identity data pricing varies significantly. Consider:
FactorGraph enrichment considerationsAddressability expansion considerations
Pricing modelFlat licensing or per-linkage pricing; understand cost per incremental edgeCPM-based or per-record pricing; understand cost per incremental match
Use case restrictionsSome providers restrict derived-data usage or require separate licensing for analytics vs. activationSome providers restrict which platforms you can activate on
Refresh costsOngoing costs for linkage updates; stale linkages degrade valueOngoing costs for identifier refresh; churned identifiers waste spend
Data sovereigntyWhere linkage data is stored and processed; relevant for GDPR/CCPA complianceWhether appended identifiers can be stored or must be used in-flight
Pass-through rightsWhether you can use enriched profiles with downstream partnersWhether expanded identifiers can be shared with agency or platform partners

The layered identity strategy

Most mature identity strategies follow a phased approach:

Phase 1: Graph foundation

Build your first-party graph with deterministic linkages from login events, CRM data, and transaction records. This is your highest-confidence data and forms the foundation for everything else.

Phase 2: Addressability expansion

Once your graph foundation is solid, expand addressability to improve activation reach. This delivers immediate, measurable ROI through higher match rates and broader campaign reach.

Phase 3: Graph enrichment

With addressability established, invest in graph enrichment to improve structural resolution. Better resolution improves segmentation accuracy, frequency capping, and attribution—benefits that compound over time.

Phase 4: Continuous measurement

Identity is not a one-time project. Establish ongoing measurement of graph quality, match rates, and provider contribution. Re-evaluate providers annually as the identity landscape shifts with privacy regulations, platform changes, and new identifier standards.

Summary

Decision pointKey questionPrimary metric
Enrichment vs. expansionIs your problem fragmented profiles or low match rates?Singleton % vs. platform match rates
Provider selectionDoes this provider add incremental value or redundant coverage?Net new edges or net new matched users
Quality validationAre new linkages or identifiers reliable?Component size distribution or identifier freshness
Commercial fitDoes the pricing align with the incremental value delivered?Cost per incremental edge or cost per incremental match