Cookieless Audiences
Home Database API Docs Pricing Live Demo Taxonomy
Use Cases
Media Planning by Persona Inventory Curation & Deal Packaging Seller-Defined Audiences CDP & Analytics Enrichment ABM Account Profiling
Industries
SSPs DSPs Publishers Agencies Curation Platforms
Company
Contact Login
Try Live Demo
Use case · CDP & analytics enrichment

CDP enrichment: join audience character onto every domain your data already contains

Your CDP holds domains everywhere — referrer URLs, email addresses, UTM sources, CRM account websites. Each is a join key into a 102M-domain database of pre-computed audience segmentation. One warehouse reference table turns bare hostnames into audience context, with no cookies, no identity graph and no PII.

Demographics
Interests
Purchase intent
B2B firmographics
Personas
IAB Taxonomy 1.1 aligned
102Mdomains with audience attributes
1 keyregistrable domain, exact match
0 PIIno identifiers, no consent debt
The join keys you already have

Three domain columns hiding in every CDP

Most enrichment projects stall on identity resolution. Domain enrichment skips it: the key is already sitting in your event and profile tables.

Referral domains

Every pageview carries a referrer. Reduce it to eTLD+1 and you know which sites send traffic. Join audience attributes and you know who those sites reach. See referral-traffic audience analysis.

Account & email domains

B2B profiles carry a work email; accounts carry a website. The domain after the @ resolves to firmographics — company-size bands, seniority and job-function mix — plus the audience character of the company's site. See ABM account-domain profiling.

Traffic & media sources

UTM sources, placement reports and ad-server logs name the domains where you bought or earned attention. Enriching those columns turns spend reports into audience reports — the same join that powers ad-log enrichment.

Schema & join-key mechanics

One reference table, keyed by registrable domain

The database ships as flat files with one row per domain. Every attribute uses a fixed, versioned vocabulary (v1.0) — enumerated codes, not free text. Browse every value in the full taxonomy reference.

Field groupFieldsValues
Join keydomainNormalized registrable domain (eTLD+1), lowercase, no www — the column you join on.
Demographicsage_bracket, gender_skew, income_level, education_level8 age brackets, 5-point gender skew, 6 income bands, 7 education levels.
Lifestylelife_stage, household_composition, employment_status, home_ownership, urbanicity14 life stages plus household, employment, ownership and urbanicity enums.
InterestsinterestsINT.* codes — 29 groups, 285 sub-interests (e.g. INT.tech_computing.artificial_intelligence).
Purchase intentpurchase_intentPI.* codes — 34 groups, 283 segments (e.g. PI.software.computer_software).
B2B firmographicsaudience_type, b2b_company_size_employees, b2b_seniority, b2b_job_functionb2c / b2b / mixed flag plus LinkedIn-standard company-size, seniority and function bands.
PersonaspersonasDeterministic personas from a catalog of 1,667 (e.g. "DevOps Engineer", "Family Vacation Planner").
Qualityconfidence, vocab_versionBanded confidence (low / medium / high) and the vocabulary release the row was coded against.
Example — enriching referrer events in the warehouse behind your CDP
-- 1. Normalize whatever you hold to a registrable domain
--    lower-case, strip protocol/path/port and "www.", take eTLD+1
--    (use a public-suffix-list UDF; "shop.example.co.uk" -> "example.co.uk")

SELECT
  e.anonymous_id,
  a.age_bracket, a.income_level, a.interests, a.personas, a.confidence
FROM events e
JOIN audience_domains a
  ON a.domain = registrable_domain(e.referrer_url)
WHERE a.confidence IN ('medium','high');
Normalization is the whole job. The join is an exact string match. Good match rates come from disciplined key prep: lowercase, strip www., resolve to eTLD+1 with a public-suffix list, and drop free webmail domains (gmail.com, outlook.com) from B2B email joins.
Workflow

From raw events to audience traits in four steps

The whole pipeline is standard warehouse work — no SDKs, no tags, no vendor pixels on your site.

1

Load the reference table

Import the domain file into BigQuery, Snowflake, Redshift or ClickHouse as a plain table. Quarterly refreshes replace it in place.

2

Normalize your keys

Build a registrable_domain() transform for referrer URLs, email addresses and source fields, and materialize it as a column.

3

Join and aggregate

Join events and profiles to the reference table. Roll domain attributes up to the profile: distributions of interests, dominant income band, persona counts.

4

Publish as traits

Register the aggregates as computed traits or audience conditions in the CDP, and sync them to your analytics, email and planning tools.

Stable, auditable traits

Every value is an enumerated code. A segment like interests CONTAINS 'INT.personal_finance.personal_investing' means exactly the same thing this quarter and next.

API fallback for the long tail

For domains outside your file, the real-time API answers ad-hoc lookups with the same vocabularies, codes and confidence bands — batch and API rows are interchangeable.

Worked example

One referral domain, decoded

A SaaS company sees steady sign-ups referred from a cloud-infrastructure tutorial site. Joining that referrer against the database attaches this row to every one of those profiles:

cloud-tutorials.example referrer on 4,120 sign-up events · vocab v1.0

Demographics

Age 25–34 25_34
Age 35–44 35_44
Male lean male_lean
Upper-middle income upper_middle
Undergraduate undergraduate

Interests & purchase intent

Artificial Intelligence INT.tech_computing.artificial_intelligence
Computing INT.tech_computing.computing
Computer Software PI.software.computer_software
Web Hosting & Cloud PI.web_services.web_hosting_and_cloud_computing

B2B & personas

Audience: B2B b2b
Function: software engineering engineering_software
Function: IT operations it_ops
Persona: DevOps Engineer
Persona: Cloud Solutions Architect
Confidence: high
Trait: "acquired via developer-audience referrers"
Route sign-ups to technical onboarding
Report acquisition mix by audience, not URL

No individual was profiled — attributes describe the referring domain's audience, applied as context to the profile.

Where it fits

Domain enrichment alongside your other CDP sources

Domain-level audience data doesn't replace first-party behavioral data or consented identity — it fills the gaps those sources structurally can't reach.

Enrichment sourceKeyCoverageBest for
First-party behavioralYour own IDsYour logged-in / cookied usersOn-site behavior, conversion history
Identity-graph / onboarded dataEmail, hashed IDsMatched individuals only; consent-dependentIndividual-level attributes where lawful and matched
Firmographic APIsCompany domainCompaniesCompany facts: size, industry
Domain-level audience dataAny registrable domain102M domains — referrers, sources, accounts alikeAudience character of domains around a profile; works where cookies are blocked
A note on scope. Safari, Firefox and iOS in-app browsing block third-party cookies by default, shrinking cookie-dependent enrichment coverage. Domain joins are indifferent: a referrer string is present on the event whether or not any cookie ever was.
Related playbooks

Adjacent ways teams use the same join

Building for CDP customers rather than in one? See the CDP platform page for OEM and feed licensing.

FAQ

CDP enrichment questions, answered

What join key does the audience database use?

Every row is keyed by a normalized registrable domain (eTLD+1, e.g. example.com). Reduce whatever you hold — referrer URLs, emails, UTM sources, account websites — to the same form: lowercase, strip protocol and www, then extract the eTLD+1 using a public-suffix-list library. The join is an exact string match, not fuzzy.

Does CDP enrichment with domain-level data involve any personal data?

The dataset contains no PII — attributes describe the audience a domain reaches, inferred from content. Inside your CDP you join domain-level attributes onto records you already lawfully hold. The enrichment adds no new identifiers; a trait like "domains skewing 25–34" is a statement about the domains, applied as profile context.

How do I load the database into my CDP or warehouse?

The database ships as flat files keyed by domain. Create a table in your warehouse (BigQuery, Snowflake, Redshift, ClickHouse), load the file, and join on the normalized domain column. Quarterly refreshes replace it in place; vocab_version keeps trait definitions stable. See the taxonomy page for allowed values.

Which tier should a CDP team start with?

Match the tier to your match rate. The Top 100k file ($490 one-time) covers most referral traffic. The Top 1M ($1,990, instant download) covers the practical long tail. For domains beyond that — common for B2B account lists — slices from 5M to the full 102M are quoted individually. Compare tiers on the pricing page.

See what your domains say about your audience

Look up any referrer or account domain in the interactive demo, then load a full tier into your warehouse — the Top 1M file is an instant card-checkout download.

Stay in the loop

You are on the list!

We will send you updates that matter — no spam.