Every impression and click log you export carries a domain column. Join it against a 102M-domain audience database and the same log answers audience questions — age brackets, income bands, interests, purchase-intent segments and personas. The join is a batch operation on data you already have, with no cookies, IDs or PII.
Any export with a site or domain column qualifies for the join.
Turn delivery data into demographic, interest and persona breakdowns.
Enumerated codes from fixed vocabularies make clean categorical features.
If an export names the site where an ad ran, it can be enriched. The four most common sources:
Impression, click and conversion feeds from your DSP. The site / domain field joins directly after normalization.
Publisher- and advertiser-side ad-server exports with per-request site fields, plus referrer domains on click events.
Aggregated site-level delivery reports from SSPs, networks and managed buys — already one row per domain, the easiest join of all.
Brand-safety and viewability vendor exports keyed by domain — enrichment adds the audience dimension those reports lack.
A standard batch job wherever your logs already live — warehouse, Spark, or a notebook.
Load LLD files or delivery reports into your warehouse. Keep the raw site string; add a derived column for the join key.
Lowercase, strip www. and subdomains to the registrable eTLD+1 via a public-suffix list. Map obvious aliases (AMP and CDN mirrors) to their canonical domain.
Left-join the domain reference file. Every matched row gains demographics, INT.* interests, PI.* intent segments, personas, B2B fields and a confidence band.
Roll up impressions, clicks and spend by attribute. Publish as dashboard tables for reporting, and as feature tables for modeling.
An airline campaign's delivery report, joined against the database. Attribute values are real codes from vocabulary v1.0; the delivery numbers are illustrative.
| Domain | Impr. | Joined audience attributes | Personas | Conf. |
|---|---|---|---|---|
biz-travel-weekly.example |
412k | 35–44 / 45–54High income PI.travel.business_travelPI.travel.air_travel |
Frequent Business TravelerCorporate Executive |
high |
family-getaways.example |
388k | 25–34 / 35–44Middle income INT.travel.beach_travelPI.travel.hotels_and_resorts |
Family Vacation Planner |
high |
coupon-central.example |
530k | 35–54Lower-middle income INT.shopping.deals_coupons |
General Consumer |
medium |
Nearly 40% of delivered impressions ran on a deals domain with no travel interest or intent — invisible in a standard delivery report, obvious once the log carries audience attributes.
Exclude the deals cluster, shift budget toward domains carrying PI.travel.* intent, and hand the scored domain list to inventory curation as the inclusion list.
The same enriched table serves both the dashboard and the data-science team.
Every value is an enumerated code from a fixed versioned vocabulary, so features stay stable and traits mean the same thing this quarter and next.
For long-tail domains outside your file, or page-level detail on a specific URL, the real-time API returns identical codes and confidence bands.
Every attribute comes from the fixed, versioned v1.0 vocabularies, aligned with the IAB Audience Taxonomy 1.1.
| Log side | Transform | Attributes gained |
|---|---|---|
site / domain (impressions) | eTLD+1 normalization | Full audience row: 8 age brackets, 5-point gender skew, 6 income bands, 7 education levels, 14 life stages, household, employment, ownership, urbanicity |
referrer (clicks, landings) | eTLD+1 normalization | Same row — useful when click context differs from impression context |
| Interest & intent analysis | join, then explode arrays | INT.* — 29 groups / 285 sub-interests; PI.* — 34 groups / 283 segments |
| Persona reporting | join, then explode | Deterministic personas from the 1,667-persona catalog |
| Quality control | filter | confidence band (low / medium / high) and vocab_version for reproducibility |
Join audience attributes onto referral and account domains inside your CDP, with full schema and join-key mechanics.
The analytics-side sibling: profile the domains sending you traffic instead of the domains where you bought it.
Turn scored domain lists from enriched logs into curated packages and Deal-ID-ready inclusion lists.
Close the loop: plan the next flight against the personas your logs prove you can reach.
Any log or report with a site, domain or referrer column: DSP log-level data (impression, click and conversion feeds), ad-server logs, SSP delivery reports, campaign placement reports and verification exports. Normalize that column to a registrable domain (eTLD+1) and join it against the audience database. App inventory keyed by bundle ID rather than a web domain is out of scope for the domain join.
No. The domain dataset is built for planning, curation, enrichment and post-hoc analysis — enriching logs after delivery, building reporting, and deriving domain lists that feed future campaign setups. It is not an impression-level bid-time classification service, and we do not claim pre-bid capability. The real-time API adds per-URL granularity for planning and analysis workflows.
Programmatic delivery is heavily concentrated: the domains that account for the bulk of impressions in a typical log are in the head of the web, so the Top 100k tier ($490 one-time) often covers most delivered volume and the Top 1M tier ($1,990, instant download) covers the practical long tail. Because logs also surface obscure domains, larger slices — 5M up to the full 102M corpus — are available on a quoted basis, and unmatched rows can be looked up ad hoc through the API. See pricing.
The enumerated attribute codes make clean categorical features: age-bracket and income distributions, INT.* interest and PI.* purchase-intent segments, personas, B2B flags and confidence bands per domain. Teams use them as features in offline models — conversion propensity by context, media-mix and post-campaign analysis, and scoring domains to build inclusion lists and curation packages for the next flight. Because every value comes from a fixed versioned vocabulary, features stay stable across refreshes.
Check any domain from your last delivery report in the demo, then load a database tier and run the join across the whole log.