Developer GuideDemand SourcesTargeting Dimensions

Targeting Dimensions

This page is a complete reference for all targeting dimensions available when writing Delegate strategies, and the corresponding bid request fields for traditional RTB demand sources (DSPs).


Geographic targeting

DimensionDelegate condition keyRTB fieldFormatExample
Countrygeo.countrydevice.geo.countryISO 3166-1 alpha-2"AE", "GB", "US"
Region / Stategeo.regiondevice.geo.regionISO 3166-2"AE-DU", "GB-ENG", "US-CA"
Citygeo.citydevice.geo.cityCity name"Dubai", "London"

Delegate example:

"conditions": {
  "geo.country": ["AE", "SA", "KW"],
  "geo.city": "Dubai"
}

Multiple values use array syntax and OR logic within the same field. The example above matches any request from AE, SA, or KW. City is AND’d with country — both must match.


Device targeting

DimensionDelegate condition keyRTB fieldValues
Device typedevice.typedevice.devicetype"mobile", "desktop", "ctv", "tablet"
OSdevice.osdevice.os"iOS", "Android", "Tizen", "webOS"
Makedevice.makedevice.make"Samsung", "Apple", "LG"

Delegate example — CTV only:

"conditions": {
  "device.type": "ctv"
}

Delegate example — mobile + tablet:

"conditions": {
  "device.type": ["mobile", "tablet"]
}

When using the Campaign API, pass device types as words in the targeting.devices array: ["mobile", "tablet", "ctv", "desktop"]. The system also accepts aliases like "connected tv", "phone", "pc".


Time targeting

⚠️

Time values must be strings in Delegate conditions. "hour": "8" is correct; "hour": 8 will not match.

DimensionDelegate condition keyFormatNotes
Hour of dayhour"0"–"23"UTC hour when auction runs
Day of weekweekday"0"–"6""0"=Sunday, "1"=Monday … "6"=Saturday

Delegate example — business hours weekdays:

"conditions": {
  "weekday": ["1", "2", "3", "4", "5"],
  "hour": ["9", "10", "11", "12", "13", "14", "15", "16", "17"]
}

Delegate example — prime time:

"conditions": {
  "hour": ["18", "19", "20", "21", "22", "23"]
}

For traditional RTB demand sources, time targeting is handled in your own bidder logic using the auction timestamp. Praevis does not send a hour or weekday field in the bid request — derive it from tmax context or server time.


Content targeting

DimensionDelegate condition keyRTB fieldFormat
Genrecontent.genreapp.content.genreFree text
IAB categorycontent.categoryapp.cat or site.catIAB 1.0 taxonomy
Content title—app.content.titleString
Live vs VOD—app.content.livestream0=VOD, 1=live
Language—app.content.languageISO 639-1

Delegate example — genre targeting:

"conditions": {
  "content.genre": ["drama", "thriller", "documentary"]
}

IAB Taxonomy: Praevis uses IAB 1.0 content taxonomy (e.g. "IAB1", "IAB9-7"). Categories are matched as strings against the site.cat or app.cat arrays in the bid request. Use the IAB 1.0 format for all category targeting.

Genre values are set by the publisher when configuring their inventory. Common values on the Praevis network:

GenreTypical inventory
dramaCTV drama series
sportLive and recorded sports
newsNews channels
comedySitcoms, comedy specials
documentaryFactual content
kidsChildren’s programming
realityReality TV
movieFeature films

Inventory targeting

DimensionDelegate condition keyRTB fieldFormat
Publisher IDpublisher_idapp.publisher.idUUID
Pool IDpool_idimp.ext.pool_idUUID
Deal IDdeal_idimp.pmp.deals[].idString

Delegate example — publisher-specific:

"conditions": {
  "publisher_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

Ad format targeting

DimensionDelegate condition keyRTB fieldValues
Secure—imp.secureAlways 1 on Praevis
Skip—imp.video.skip0=non-skip, 1=skippable
Start delay—imp.video.startdelay0=pre-roll, -1=mid-roll
Video dimensions—imp.video.w, imp.video.hPixels

Combining conditions

All conditions within a single rule use AND logic. Multiple values within one condition use OR logic.

Example — CTV drama in UAE prime time:

"conditions": {
  "device.devicetype": "3",
  "geo.country": "AE",
  "content.genre": "drama",
  "hour": ["18", "19", "20", "21", "22", "23"]
}

This matches only when ALL of: CTV device AND UAE AND drama genre AND evening hours.

Example — drama OR sport:

"conditions": {
  "content.genre": ["drama", "sport"]
}

This matches when genre is drama OR sport.


Empty conditions — match all

"conditions": {}

An empty conditions object matches every auction — useful as a catch-all fallback rule with low priority and a low bid.