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 · Log-level data

Ad-log enrichment: give every impression's domain an audience profile

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.

1 columnthe domain field you already log
102Mdomains with audience rows
Batchpost-delivery join, not bidstream

DSP, ad-server & SSP logs

Any export with a site or domain column qualifies for the join.

Audience-level reporting

Turn delivery data into demographic, interest and persona breakdowns.

Modeling-ready features

Enumerated codes from fixed vocabularies make clean categorical features.

Inputs

Any log with a domain column qualifies

If an export names the site where an ad ran, it can be enriched. The four most common sources:

DSP log-level data

Impression, click and conversion feeds from your DSP. The site / domain field joins directly after normalization.

Ad-server logs

Publisher- and advertiser-side ad-server exports with per-request site fields, plus referrer domains on click events.

Placement & delivery reports

Aggregated site-level delivery reports from SSPs, networks and managed buys — already one row per domain, the easiest join of all.

Verification exports

Brand-safety and viewability vendor exports keyed by domain — enrichment adds the audience dimension those reports lack.

Scope note. This is a planning, reporting and analysis join performed on logs after delivery.
  • The domain dataset is not an impression-level bid-time classification service — we make no pre-bid claims
  • What it produces — audience reporting, scored domain lists, curation inputs — feeds the next campaign's setup
  • For per-URL granularity in analysis, the real-time API resolves individual pages against the same vocabularies
Pipeline

The enrichment pipeline in four steps

A standard batch job wherever your logs already live — warehouse, Spark, or a notebook.

1

Land the logs

Load LLD files or delivery reports into your warehouse. Keep the raw site string; add a derived column for the join key.

2

Normalize domains

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.

3

Join the audience table

Left-join the domain reference file. Every matched row gains demographics, INT.* interests, PI.* intent segments, personas, B2B fields and a confidence band.

4

Aggregate & publish

Roll up impressions, clicks and spend by attribute. Publish as dashboard tables for reporting, and as feature tables for modeling.

Worked example

Three log rows, enriched

An airline campaign's delivery report, joined against the database. Attribute values are real codes from vocabulary v1.0; the delivery numbers are illustrative.

delivery_report ⨯ audience_domains (excerpt)
DomainImpr.Joined audience attributesPersonasConf.
biz-travel-weekly.example 412k
35–44 / 45–54High incomePI.travel.business_travelPI.travel.air_travel
Frequent Business TravelerCorporate Executive
high
family-getaways.example 388k
25–34 / 35–44Middle incomeINT.travel.beach_travelPI.travel.hotels_and_resorts
Family Vacation Planner
high
coupon-central.example 530k
35–54Lower-middle incomeINT.shopping.deals_coupons
General Consumer
medium

What the rollup shows

Off-audience waste found

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.

Next-flight action

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.

Outputs

Two downstream uses: reporting and modeling

The same enriched table serves both the dashboard and the data-science team.

Audience-level reporting

  • Delivery composition — impressions and spend split by age bracket, income band, interest group and persona.
  • Plan-vs-actual audience — compare the targeted audience (see media planning by persona) with actual reach.
  • Off-audience share — the share of impressions on domains with no ICP-relevant attributes.
  • Supply-path context — which exchanges and deals deliver the on-audience share of the buy.

Modeling features

  • Categorical features — enumerated codes make clean one-hot or embedding inputs with stable vocabularies.
  • Conversion analysis — model conversion propensity against domain audience context in post-campaign work.
  • Domain scoring — score the log's domain universe against your ICP to produce ranked inclusion lists.
  • Cold-start lists — seed targeting of cookieless inventory from audience attributes when no history exists.

Stable features across refreshes

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.

Page-level granularity available

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.

Field mapping

From log column to audience attribute

Every attribute comes from the fixed, versioned v1.0 vocabularies, aligned with the IAB Audience Taxonomy 1.1.

Log sideTransformAttributes gained
site / domain (impressions)eTLD+1 normalizationFull 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 normalizationSame row — useful when click context differs from impression context
Interest & intent analysisjoin, then explode arraysINT.* — 29 groups / 285 sub-interests; PI.* — 34 groups / 283 segments
Persona reportingjoin, then explodeDeterministic personas from the 1,667-persona catalog
Quality controlfilterconfidence band (low / medium / high) and vocab_version for reproducibility
Related playbooks

The same join, other tables

FAQ

Ad-log enrichment questions

Which ad logs can be enriched with domain-level audience data?

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.

Is this a pre-bid or bid-time enrichment?

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.

How large a domain file do I need for log enrichment?

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.

What can enriched logs feed into for modeling?

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.

Put an audience column in your next log export

Check any domain from your last delivery report in the demo, then load a database tier and run the join across the whole log.

Stay in the loop

You are on the list!

We will send you updates that matter — no spam.