The IA-dsp-staging Developer Hub

Welcome to the IA-dsp-staging developer hub. You'll find comprehensive guides and documentation to help you start working with IA-dsp-staging as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started    

Contextual App Targeting for the Post-IDFA Era


At WWDC 2020, Apple announced major changes to the IDFA on iOS 14. Fyber expects that Apple's changes to IDFA will make this persistent user identifier obsolete and no longer usable for user-level ad targeting. Fyber also expects that Google will eventually follow suit. We're releasing new targeting signals that existing machine learning models can vet against while GAID is still available.

The time is ripe for industry innovation and we're adapting quickly to help our marketing partners adjust to the post-IDFA/GAID era. As attribution shifts to solutions such as SKAdNetwork that do not rely on a persistent identifier, programmatic trading will also have to adjust and expand solutions for privacy aware campaign targeting.

Fyber's role as an ad monetization SDK and a supply-side partner is to provide our buyers with high quality, in-app inventory, and put them in the best position to make bidding decisions. We believe the app economy is shifting towards new types of app targeting signals, ranging from much richer session-level data to more precise device property targeting. Fyber's goal is to establish standardized OpenRTB custom extensions that can be seamlessly adopted and used for targeting by the programmatic app industry.

OpenRTB Bid Request Parameters for Contextual App Targeting

  • These bid request parameters are structured to fit into the existing OpenRTB 2.5 and 3.0 specifications
  • Bid request parameters will be available on both iOS and Android, unless they are operating system specific, like IDFV
  • Fyber will not pass a data signal, if it is not present in the request
ObjectAttributeNameDescriptionValueExample ValueRelease
Appext.devuseridDeveloper User IDA developer's own persistent unique user identifierString"abcd12399"1
AppverApp VersionThe version of the applicationString"14.16.0"1
Appext.storecatApp Store CategoryGoogle Play and Apple App Store category definitions. For example, "games"String"games"1
Appext.storesubcatApp Store SubcategoryGoogle Play and Apple App Store Sub-game category definitions. The array is always capped at 3 strings.String Array["entertainment", "trivia", "simulation"]1
Appext.fmwnameFramework NameA string value describing if the app is using the unity or native framework, listed as "unity" or "native"String"native"1
Appext.apilevelAPI Level(Android only) An integer value that specifies the API level supportedInteger"10"3
PublisherDomainDeveloper DomainThe developer domain used for app-ads.txtString""3
Userext.impdepthImpression DepthThe count of impressions for a specific placement type in a given app session. The impression depth is reset once the session endsInteger"4"1
Userext.sessiondurationSession DurationThe total duration of time a user has spent so far in a specific app session expressed in seconds. For example, a user has been playing Word Game for 45 secondsInteger"45"1
Userext.lastbundlePrior App Bundle(iOS Only) The last app bundle the user saw on the previous impression in a given session per placement typeString"123456789"1
Userext.lastadomainPrior AdomainThe last advertiser domain the user saw on the previous impression in a given session per placement typeString""1
Userext.clickrateSession Click RateThe percentage of clicks/impressions per user per placement type over a given number of impressions, where 5 represents a 5% CTRInteger"5"3
Userext.lastclickPrior ClickA boolean value indicating if the user clicked on the last impression in a given session per placement type, where "1" = user clickedBoolean"1"3
Userext.lastskipPrior SkipVAST specific. A boolean value indicating if the user skipped the video on the last impression in a given session, where "1" = user skippedBoolean"1"3
Userext.lastclicktypePrior Video Click TypeVAST specific. A integer value indicating what part of the video the user clicked on, where "0" = no click, "1" = ClickThrough, and "2" = CompanionClickThroughInteger"1"3
Userext.completionrateCompletion RateThe percentage of successful completions/impressions for a user per placement type for a given number of impressions, where 70 represents a 70% completion rate. This only applies to Rewarded and Video placement typesInteger"70"3
Deviceext.idfvIDFV(iOS Only) A persistent unique identifier for each app on a device that identifies the device to the app's vendor. The value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor.String"60A06FF5-3755-4077-AXXX-4520CCC9CFXX"1
Deviceext.inputlanguageDevice Keyboard LanguagesA string array containing the languages setup on the user's device keyboard. Country codes are passed in the string array, where "en", "he" = English and Hebrew languages are enabled on the user's device keyboardString array["en","he"]Already live
Deviceext.diskspaceDevice Available Disk SpaceAn integer value describing the available disk space on the device in megabytes, where "18201" = device has 18201 MB of available disk space. MB will be passed as a whole number.Integer"18201"1
Deviceext.totaldiskDevice Total Disk SpaceAn integer value describing the total disk space on the device in megabytes, where "63989" = the device has 63989 MB of total disk space. MB will be passed as a whole number.Integer"63989"1
Deviceext.ringmuteRing Sound Settings(Android only) An integer value describing the device sound setting during time of ad request describing if sound is set to ring or mute, where "0" = mute, "1" = ringBoolean"1"2
Deviceext.chargingBattery ChargingAn integer value describing if the device is connected to a charger, where, "0" unplugged, "1" plugged into power outletBoolean"1"1
Deviceext.bluetoothBluetooth ConnectedA boolean value indicating if the device is connected to bluetooth, where "1" = connected to bluetoothBoolean"1"1
Deviceext.bluetoothnameBluetooth NameAn array indicating the bluetooth name(s) the device is currently connected toJSON Array["airpods", "alexa"]3
Deviceext.headsetWired HeadsetA boolean value indicating if the device is connected to a wired headset, where "1" device is connected to any wired headset, "0" no wired headset connectedBoolean"1"1
Deviceext.batterylevelBattery LevelAn integer describing percent battery remaining on the user's device, segmented into buckets, where
100-85% = "8"
84-70% = "7"
69-55% = "6"
54-40% = "5"
39-25% = "4"
24-10% = "3"
9-5% = "2"
less than 5% = "1"
Deviceext.batterysaverBattery Saver StatusA boolean value indicating if battery saver ('Low Power Mode' on iOS) has been enabled, where "1" = battery saver,
"0" not enabled
DevicehwvDevice Hardware VersionThe hardware version of the device passed as a string. For example, "iPhone X"String"iPhone X"Already live
Deviceipv6IP address closest to device as IPv6IP address with a 128-bit valueString"2001:0db8:85a3:0000:0000:8a2e:0370:7334"Already live
DeviceutcoffsetTime difference from UTCLocal time as the number +/- of minutes from UTCInteger"60"1
Deviceext.darkmodeDark Mode SettingA boolean value indicating if dark mode is enabled on the device, where "1" = dark mode enabled,
"0" not enabled
Deviceext.airplaneAirplane Mode Setting(Android only) A boolean value indicating if airplane mode is enabled, where "1" = airplane mode enabled,
"0" not enabled
Deviceext.dndDo Not Disturb Setting(Android only) A boolean value indicating if do not disturb setting is enabled, where "1" = do not disturb enabled, "0" not enabledBoolean"1"2

Updated about 4 hours ago

Contextual App Targeting for the Post-IDFA Era

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.