Publisher Signals

This guide shows how to configure the InMobi SDK to pass custom signals for ad auction pricing or first-party data. Additionally, you can send custom user or request-level signals with each ad request to the InMobi SDK. This enhances ad relevance, leading to higher fills and eCPMs.

Integration

Prerequisites

Supported from InMobi SDK 10.7.8 onwards

The signals should be passed to InMobi SDK directly as format-level instances are not available on bidding integrations. You can use putPublisherSignals method on InMobi SDK instance and pass the first-party signals. These will be included in all subsequent ad requests.

  1. Ensure InMobi SDK is initialized. Generally, InMobi SDK gets automatically initialized by mediation SDK so this step is optional.
  2. Create a dictionary with keys as strings, and values as the datatypes. The exact key names and corresponding data type supported are mentioned in the List of Signals.
  3. Pass the values to InMobi SDK by passing the dictionary with putPublisherSignals method. This method must be called after InMobi SDK is successfully initialized.
  4. Ensure that you call this function and update the values before every ad request.
  5. You can call getPublisherSignals method to check what signals are set already.
  6. You can call resetPublisherSignals method if you want to clear all the signals data for the user.

    Note

    Some signals such as floor price, impression depth, user ctr, etc. have different values for each format while signals such as paying user, and retention have the same value across formats. 

Sample Implementation

Android (Kotlin)

// ensure InMobi SDK is initialised

// create map with required values
val publisherSignals = mapOf(
    "iap" to true, // User has made IAP
    "ua_type" to "paid" // User is acquired via paid medium
    "iap_type" to "minnow" //User has made low purchases
    "iaa_type" to "whale" //User has seen high number of ads
    "s_dep_rew" to 4 //User has seen 4 rewarded ads in current session
    "i_dep_rew" to 10 //User has seen 10 rewarded ads in lifetime
    "ctr_rew" to 9.25 //Historical CTR for user is 9.25%
    "abp_5_rew" to 0.01720 //average winning bid price for last 5 rewarded auctions was $0.01720, eCPM is $17.2
)

// Set the extras on InMobiSdk
InMobiSdk.putPublisherSignals(publisherSignals)

iOS(Swift)

// ensure InMobi SDK is initialised

// create map with required values
let publisherSignals: [String: Any] = [
    "iap": true, // User has made IAP
    "ua_type": "paid", // User is acquired via paid medium
    "iap_type": "minnow", // User has made low purchases
    "iaa_type": "whale", // User has seen high number of ads
    "s_dep_rew": 4, // User has seen 4 rewarded ads in current session
    "i_dep_rew": 10, // User has seen 10 rewarded ads in lifetime
    "ctr_rew": 9.25, // Historical CTR for user is 9.25%
    "abp_5_rew": 0.01720 // Average winning bid price for last 5 rewarded auctions was $0.01720, eCPM is $17.2
]

// Set the extras on InMobiSdk
IMSdk.putPublisherSignals(publisherSignals)

Unity

// create a dictionary with all required signals and corresponding values
Dictionary<string, any=""> publisherSignals = new Dictionary<string, any=""> { };

publisherSignals.Add("iap", "true"); // User has made IAP
publisherSignals.Add("ua_type", "paid"); // User is acquired via paid medium
publisherSignals.Add("iap_type", "minnow"); // User has made low purchases
publisherSignals.Add("iaa_type", "whale"); // User has seen high number of ads
publisherSignals.Add("s_dep_rew", 4); // User has seen 4 rewarded ads in current session
publisherSignals.Add("i_dep_rew", 10); // User has seen 10 rewarded ads in lifetime
publisherSignals.Add("ctr_rew", 9.25); // Historical CTR for user is 9.25%
publisherSignals.Add("abp_5_rew", 0.01720); // Average winning bid price for last 5 rewarded auctions was $0.01720, eCPM is $17.2

// example for passing signals in rewarded requests
IMSdk.putPublisherSignals(publisherSignals);

List of signals

Use suffixes as ‘ban’, ‘int’, ‘rew’, ‘nat’ for banner, interstitial, rewarded and native ad placements respectively.

Signal Key(case-sensitive) Data Type Supported Allowed values
Impression depth

i_dep_(ad_type)

e.g. i_dep_ban, i_dep_int, i_dep_rew, etc.

integer Total number of ads user has seen in lifetime.
Paying user iap bool ‘true’ if user has done IAP, else ‘false’
The average clearing price for the last n auctions

abp_10_(ad_type)
abp_5_(ad_type)
abp_(ad_type)

e.g. abp_10_ban, abp_10_int, abp_10_rew, abp_rew, abp_5_ban, abp_5_int, abp_5_rew

double value in USD and the bid values(not cpm).
Acquisition source ua_type string ‘paid' → if user was acquired using paid advertising,
'organic’ → if user was acquired organically
Session depth

s_dep_(ad_type)

e.g. s_dep_ban, s_dep_int, etc

integer ‘10’, ‘15’, ‘20’, or any integer value based on number of ads the user has seen in the current session. 
User average click-through rate

ctr_(ad_type)

e.g. ctr_ban, ctr_int, etc.

double ‘0.5’, ‘5.5', '10’, or any double value between 0 to 100 based on the click-through rate for the user. 
User average view-through rate

vcr_(ad_type)

e.g. vcr_ban, vcr_int, etc.

double ‘0.5’, ‘5.5', '10’, or any double value between 0 to 100 based on the view-through rates for the user. 
Purchasing user cohort iap_type string Applicable only when iapis set to true and based on in-app purchase value.

'minnow'(&lt;$5), 'dolphin'(&gt;$5 & &lt;=$10), 'shark'(&gt;$10 & &lt;=$50), 'whale'(&gt;$50)

Ad user cohort iaa_type string

Based on the number of full-screen or rewarded ads seen by the user.

‘minnow'(&lt;5 ads), ‘dolphin'(&gt;5 & &lt;=10), ‘shark'(&gt;10 & &lt;=25), 'whale'(&gt;25)

Note

The supported data types is applicable only when passing signals using putPublisherSignals method. The setExtras method expects all values to be passed as string only.

On This Page

Last Updated on: 15 Oct, 2024