|
1 | 1 | ---
|
2 | 2 | layout: bidder
|
3 |
| -title: Index Exchange (Casale) |
4 |
| -description: Prebid Index Exchange (Casale) Bidder Adaptor |
5 |
| - |
| 3 | +title: Index Exchange |
| 4 | +description: Prebid Index Exchange Bidder Adapter |
6 | 5 | top_nav_section: dev_docs
|
7 | 6 | nav_section: reference
|
8 |
| - |
| 7 | +biddercode: ix |
| 8 | +biddercode_longer_than_12: false |
9 | 9 | hide: true
|
| 10 | +prebid_1_0_supported : true |
| 11 | +gdpr_supported: true |
| 12 | +--- |
10 | 13 |
|
11 |
| -biddercode: indexExchange |
| 14 | +Overview |
| 15 | +======== |
12 | 16 |
|
13 |
| -biddercode_longer_than_12: true |
14 |
| -media_types: video |
| 17 | +``` |
| 18 | +Module Name: Index Exchange Adapter |
| 19 | +Module Type: Bidder Adapter |
| 20 | + |
| 21 | +``` |
15 | 22 |
|
16 |
| ---- |
| 23 | +Description |
| 24 | +=========== |
| 25 | + |
| 26 | +This module connects publishers to Index Exchange's (IX) network of demand |
| 27 | +sources through Prebid.js. This module is GDPR compliant. |
| 28 | + |
| 29 | +It is compatible with both the older ad unit format where the `sizes` and |
| 30 | +`mediaType` properties are placed at the top-level of the ad unit, and the newer |
| 31 | +format where this information is encapsulated within the `mediaTypes` object. We |
| 32 | +recommend that you use the newer format when possible as it will be better able |
| 33 | +to accommodate new feature additions. |
| 34 | + |
| 35 | +If a mix of properties from both formats are present within an ad unit, the |
| 36 | +newer format's properties will take precedence. |
| 37 | + |
| 38 | +Here are examples of both formats. |
| 39 | + |
| 40 | +##### Older Format |
| 41 | +```javascript |
| 42 | +var adUnits = [{ |
| 43 | + // ... |
| 44 | + |
| 45 | + mediaType: 'banner', |
| 46 | + |
| 47 | + sizes: [ |
| 48 | + [300, 250], |
| 49 | + [300, 600] |
| 50 | + ] |
| 51 | + |
| 52 | + // ... |
| 53 | +}]; |
| 54 | +``` |
| 55 | + |
| 56 | +##### Newer Format |
| 57 | +```javascript |
| 58 | +var adUnits = [{ |
| 59 | + // ... |
| 60 | + |
| 61 | + mediaTypes: { |
| 62 | + banner: { |
| 63 | + sizes: [ |
| 64 | + [300, 250], |
| 65 | + [300, 600] |
| 66 | + ] |
| 67 | + } |
| 68 | + } |
| 69 | + |
| 70 | + // ... |
| 71 | +}]; |
| 72 | +``` |
| 73 | + |
| 74 | +### Supported Media Types |
| 75 | + |
| 76 | +| Type | Support |
| 77 | +| --- | --- |
| 78 | +| Banner | Fully supported for all IX approved sizes. |
| 79 | +| Video | Only in-stream supported. |
| 80 | +| Native | Not supported. |
| 81 | + |
| 82 | +# Bid Parameters |
| 83 | + |
| 84 | +Each of the IX-specific parameters provided under the `adUnits[].bids[].params` |
| 85 | +object are detailed here. |
| 86 | + |
| 87 | +### Banner |
| 88 | + |
| 89 | +| Key | Scope | Type | Description |
| 90 | +| --- | --- | --- | --- |
| 91 | +| siteId | Required | String | <p>An IX-specific identifier that is associated with a specific size on this ad unit. This is similar to a placement ID or an ad unit ID that some other modules have.</p><p>Examples:<ul><li>`'3723'`</li><li>`'6482'`</li><li>`'3639'`</li></ul></p> |
| 92 | +| size | Required | Number[] | <p>The single size associated with the site ID. It should be one of the sizes listed in the ad unit under `adUnits[].sizes` or `adUnits[].mediaTypes.banner.sizes`.</p><p>Examples:<ul><li>`[300, 250]`</li><li>`[300, 600]`</li><li>`[728, 90]`</li></ul></p> |
| 93 | +| bidFloor | Optional<sup>1</sup> | Number | <p>The minimum bid required to participate in an auction for this ad unit. Assuming the bid floor currency that is set has a main unit (e.g. dollars, pounds) and a sub-unit (e.g. cents, pence), the bid floor should be in decimal-point format. If the currency only has main a unit (e.g. JPY), then the bid floor should be a whole number.</p><p>Examples:<ul><li>10.26 USD => `bidFloor: 10.26`</li><li>13.41 GBP => `bidFloor: 13.41`</li><li>600 JPY => `bidFloor: 600`</li></ul></p> | N/A |
| 94 | +| bidFloorCur | Optional<sup>1</sup> | String | <p>The currency of the bid floor.</p><p>Examples:<ul><li>`'USD'`</li><li>`'GBP'`</li><li>`'JPY'`</li></ul></p> |
| 95 | + |
| 96 | +<p> |
| 97 | + <sup>1</sup> <code>bidFloor</code> and <code>bidFloorCur</code> <b>must</b> |
| 98 | + both be set when a bid floor is being configured. |
| 99 | +</p> |
| 100 | + |
| 101 | +Setup Guide |
| 102 | +=========== |
| 103 | + |
| 104 | +Follow these steps to configure and add the IX module to your Prebid.js |
| 105 | +integration. |
| 106 | + |
| 107 | +The examples in this guide assume the following starting configuration: |
| 108 | + |
| 109 | +```javascript |
| 110 | +var adUnits = [{ |
| 111 | + code: 'banner-div-a', |
| 112 | + mediaTypes: { |
| 113 | + banner: { |
| 114 | + sizes: [ |
| 115 | + [300, 250], |
| 116 | + [300, 600] |
| 117 | + ] |
| 118 | + } |
| 119 | + }, |
| 120 | + bids: [] |
| 121 | +}]; |
| 122 | +``` |
| 123 | + |
| 124 | +##### 1. Add IX to the appropriate ad units |
| 125 | + |
| 126 | +For each size in an ad unit that IX will be bidding on, add one of the following |
| 127 | +bid objects under `adUnits[].bids`: |
| 128 | + |
| 129 | +```javascript |
| 130 | +{ |
| 131 | + bidder: 'ix', |
| 132 | + params: { |
| 133 | + siteId: '', |
| 134 | + size: [] |
| 135 | + } |
| 136 | +} |
| 137 | +``` |
| 138 | + |
| 139 | +Set `params.siteId` and `params.size` in each bid object to the values provided |
| 140 | +by your IX representative. |
| 141 | + |
| 142 | +**Example** |
| 143 | +```javascript |
| 144 | +var adUnits = [{ |
| 145 | + code: 'banner-div-a', |
| 146 | + mediaTypes: { |
| 147 | + banner: { |
| 148 | + sizes: [ |
| 149 | + [300, 250], |
| 150 | + [300, 600] |
| 151 | + ] |
| 152 | + } |
| 153 | + }, |
| 154 | + bids: [{ |
| 155 | + bidder: 'ix', |
| 156 | + params: { |
| 157 | + siteId: '4622', |
| 158 | + size: [300, 250] |
| 159 | + } |
| 160 | + }, { |
| 161 | + bidder: 'ix', |
| 162 | + params: { |
| 163 | + siteId: '6242', |
| 164 | + size: [300, 600] |
| 165 | + } |
| 166 | + }] |
| 167 | +}]; |
| 168 | +``` |
| 169 | + |
| 170 | +##### 2. Include `ixBidAdapter` in your build process |
| 171 | + |
| 172 | +When running the build command, include `ixBidAdapter` as a module. |
| 173 | + |
| 174 | +``` |
| 175 | +gulp build --modules=ixBidAdapter,fooBidAdapter,bazBidAdapter |
| 176 | +``` |
| 177 | + |
| 178 | +If a JSON file is being used to specify the bidder modules, add `"ixBidAdapter"` |
| 179 | +to the top-level array in that file. |
| 180 | + |
| 181 | +```json |
| 182 | +[ |
| 183 | + "ixBidAdapter", |
| 184 | + "fooBidAdapter", |
| 185 | + "bazBidAdapter" |
| 186 | +] |
| 187 | +``` |
| 188 | + |
| 189 | +And then build. |
| 190 | + |
| 191 | +``` |
| 192 | +gulp build --modules=bidderModules.json |
| 193 | +``` |
| 194 | + |
| 195 | +Setting First Party Data (FPD) |
| 196 | +============================== |
| 197 | + |
| 198 | +FPD allows you to specify key-value pairs which will be passed as part of the |
| 199 | +query string to IX for use in Private Marketplace Deals which rely on query |
| 200 | +string targeting for activation. For example, if a user is viewing a |
| 201 | +news-related page, you can pass on that information by sending `category=news`. |
| 202 | +Then in the IX Private Marketplace setup screens you can create Deals which |
| 203 | +activate only on pages which contain `category=news`. Please reach out to your |
| 204 | +IX representative if you have any questions or need help setting this up. |
| 205 | + |
| 206 | +To include FPD in a bid request, it must be set before `pbjs.requestBids` is |
| 207 | +called. To set it, call `pbjs.setConfig` and provide it with a map of FPD keys |
| 208 | +to values as such: |
| 209 | + |
| 210 | +```javascript |
| 211 | +pbjs.setConfig({ |
| 212 | + ix: { |
| 213 | + firstPartyData: { |
| 214 | + '<key name>': '<key value>', |
| 215 | + '<key name>': '<key value>', |
| 216 | + // ... |
| 217 | + } |
| 218 | + } |
| 219 | +}); |
| 220 | +``` |
| 221 | + |
| 222 | +The values can be updated at any time by calling `pbjs.setConfig` again. The |
| 223 | +changes will be reflected in any proceeding bid requests. |
| 224 | + |
| 225 | +Setting a Server Side Timeout |
| 226 | +============================= |
| 227 | + |
| 228 | +Setting a server-side timeout allows you to control the max length of time the |
| 229 | +servers will wait on DSPs to respond before generating the final bid response |
| 230 | +and returning it to this module. |
| 231 | + |
| 232 | +This is distinctly different from the global bidder timeout that can be set in |
| 233 | +Prebid.js in the browser. |
| 234 | + |
| 235 | +To add a server-side timeout, it must be set before `pbjs.requestBids` is |
| 236 | +called. To set it, call `pbjs.setConfig` and provide it with a timeout value as |
| 237 | +such: |
| 238 | + |
| 239 | +```javascript |
| 240 | +pbjs.setConfig({ |
| 241 | + ix: { |
| 242 | + timeout: 500 |
| 243 | + } |
| 244 | +}); |
| 245 | +``` |
| 246 | + |
| 247 | +The timeout value must be a positive whole number in milliseconds. |
| 248 | + |
| 249 | +Additional Information |
| 250 | +====================== |
| 251 | + |
| 252 | +### Bid Request Limit |
| 253 | + |
| 254 | +If a single bid request to IX contains more than 20 impression requests (i.e. |
| 255 | +more than 20 objects in `bidRequest.imp`), only the first 20 will be accepted, |
| 256 | +the rest will be ignored. |
| 257 | + |
| 258 | +To avoid this situation, ensure that when `pbjs.requestBid` is invoked, that the |
| 259 | +number of bid objects (i.e. `adUnits[].bids`) with `adUnits[].bids[].bidder` set |
| 260 | +to `'ix'` across all ad units that bids are being requested for does not exceed |
| 261 | +20. |
| 262 | + |
| 263 | +### Time-To-Live (TTL) |
| 264 | + |
| 265 | +All bids received from IX have a TTL of 60 seconds, after which time they become |
| 266 | +invalid. |
| 267 | + |
| 268 | +If an invalid bid wins, and its associated ad is rendered, it will not count |
| 269 | +towards total impressions on IX's side. |
| 270 | + |
| 271 | +FAQs |
| 272 | +==== |
| 273 | + |
| 274 | +### Why do I have to input size in `adUnits[].bids[].params` for IX when the size is already in the ad unit? |
| 275 | + |
| 276 | +There are two important reasons why we require it: |
| 277 | + |
| 278 | +1. An IX site ID maps to a single size, whereas an ad unit can have multiple |
| 279 | +sizes. To ensure that the right site ID is mapped to the correct size in the ad |
| 280 | +unit we require the size to be explicitly stated. |
| 281 | + |
| 282 | +2. An ad unit may have sizes that IX does not support. By explicitly stating the |
| 283 | +size, you can choose not to have IX bid on certain sizes that are invalid. |
| 284 | + |
| 285 | +### How do I view IX's bid request in the network? |
17 | 286 |
|
18 |
| -### Prebid Server Note: |
19 |
| -Before configuring the Index Exchange adapter as S2S, you must reach out to the Index Exchange team for approval and setup steps. |
20 |
| - |
21 |
| -#### Send All Bids Ad Server Keys: |
22 |
| -(truncated to 20 chars due to [DFP limit](https://support.google.com/dfp_premium/answer/1628457?hl=en#Key-values)) |
23 |
| - |
24 |
| -`hb_pb_indexExchange` |
25 |
| -`hb_adid_indexExchang` |
26 |
| -`hb_size_indexExchang` |
27 |
| - |
28 |
| -#### Default Deal ID Keys: |
29 |
| -`hb_deal_indexExchang` |
30 |
| - |
31 |
| -### bid params |
32 |
| - |
33 |
| -{: .table .table-bordered .table-striped } |
34 |
| -| Name | Scope | Description | Example | |
35 |
| -| :--- | :---- | :---------- | :------ | |
36 |
| -| `id` | required | The placement ID | | |
37 |
| -| `siteID` | required | the site ID | | |
38 |
| -| `tier2SiteID` | optional | | | |
39 |
| -| `tier3SiteID` | optional | | | |
40 |
| - |
41 |
| -### bid params: Video |
42 |
| - |
43 |
| -{: .table .table-bordered .table-striped } |
44 |
| -| Name | Scope | Description | Example | |
45 |
| -| :--- | :---- | :---------- | :------ | |
46 |
| -| `video` | required | Video parameters. See [video params table](#index-video) | `{"siteID": 12345, "playerType":"HTML5", "protocols":[2,3,5,6], "maxduration":15}` | |
47 |
| - |
48 |
| -<a name="index-video"></a> |
49 |
| - |
50 |
| -### Video params |
51 |
| - |
52 |
| -{: .table .table-bordered .table-striped } |
53 |
| -| Name | Scope | Description | Example | |
54 |
| -| :--- | :---- | :---------- | :------ | |
55 |
| -| `siteID` | required | Publisher site ID | `12345` | |
56 |
| -| `playerType` | required | String representing video player type, either HTML5 or FLASH | `"HTML5"` | |
57 |
| -| `protocols` | required | Array of integers representing VAST versions supported by the player, as defined in OpenRTB 2.3 section 5.6 | `[2, 3, 5, 6]` | |
58 |
| -| `maxduration` | required | Integer representing allowable max duration of the video ad, in seconds | `15` | |
59 |
| -| `minduration` | optional | Integer representing allowable min duration of the video ad, in seconds. Default of 0 assumed if none is specified. | `5` | |
60 |
| -| `startdelay` | optional | Defines the start of the ad, when a string is specified then generic RTB values are used, when a number is specified then is interpreted as the number of seconds into the content video at which the ad should play. Default assumed to be `preroll` if none specified | `"preroll"` | |
61 |
| -| `linearity` | optional | String representing whether video ad is linear or overlay. Defaults to `"linear"` if not defined | `"linear"` | |
62 |
| -| `mimes` | optional | Array of strings representing player supported mime types. Overrides the supported MIME types otherwise inferred by `playerType` setting. | `["video/mp4", "video/webm"]` | |
63 |
| -| `allowVPAID` | optional | Boolean defining whether player supports any version of VPAID. Which versions are supported is inferred from `playerType`. Defaults to false | `false` | |
64 |
| -| `apiList` | optional | Array of integers representing player supported VPAID versions, as defined in OpenRTB 2.3 section 5.6. Overrides versions inferred from `playerType`. | `[1, 2]` | |
| 287 | +In your browser of choice, create a new tab and open the developer tools. In |
| 288 | +developer tools, select the network tab. Then, navigate to a page where IX is |
| 289 | +setup to bid. Now, in the network tab, search for requests to |
| 290 | +`casalemedia.com/cygnus`. These are the bid requests. |
0 commit comments