Back to Bidders

Index Exchange (Prebid Server)

Features

Bidder Code ix Prebid.org Member yes
Prebid.js Adapter no Prebid Server Adapter yes
Media Types display, video, native Multi Format Support true
TCF-EU Support yes IAB GVL ID 10
GPP Support check with bidder DSA Support check with bidder
USP/CCPA Support yes COPPA Support yes
Supply Chain Support yes Demand Chain Support no
Safeframes OK yes Supports Deals yes
Floors Module Support yes First Party Data Support yes
User IDs idl, netId, fabrickId, zeotapIdPlus, uid2, TDID, id5Id, lotamePanoramaId, publinkId, hadronId, pubcid, utiq, criteoID, euid, imuid, 33acrossId, nonID, pairid ORTB Blocking Support check with bidder
Privacy Sandbox paapi Prebid Server App Support yes

Table of contents

Introduction

Publishers can use Prebid Server in any of the following ways with Index Exchange (Index). Index’s adapter supports all of the following methods:

  • If you want to call Index from a web environment, you can use Prebid.js to call Prebid Server, and then Prebid Server uses our server-side adapter to call Index. This reduces workload on the browser. For set up instructions, see Call Index from a web browser section on this page.
  • In mobile apps, you can use the Prebid Mobile SDK to call Prebid Server and then Prebid Server uses our server-side adapter to call Index. For set up instructions, see Call Index from Prebid Mobile SDK section on this page.
  • In CTV apps and other long-form video environments, you (or the SSAI vendor) can make a call to Prebid Server using OpenRTB, and then Prebid Server uses our server-side adapter to call Index. For set up instructions, see Call Index from CTV/long-form video environment section on this page.
  • In any other server-to-server OpenRTB environment, you can send OpenRTB bid requests to the Prebid Server host of your choice. For set up instructions, see Call Index from any other server-to-server OpenRTB environment section on this page.

Note about sending multiple ad slots in a single bid request: Index accepts up to 100 valid ad slots in a single bid request. If a single bid request contains more than 100 ad slots (including invalid ad slots), only the first 100 valid ad slots are accepted and the rest are ignored. For example, streaming TV media owners can signal multiple ad pods for long-form programming in a single request.

Supported media types

The following table lists the media types that Index supports. For information about the the Time-To-Live (TTL) for each media type, see How Index counts impressions in our Knowledge Base.

Type Prebid Server support
banner Supported
video Supported, including ad pods for OTT
native Supported

Configure the Index adapter in your Prebid Server instance

Before you begin: Contact your Index Exchange Representative to get an endpoint and setup instructions.

If you are hosting your own Prebid Server instance, depending on whether you are using Prebid Server Go or Prebid Server Java version, complete one of the following steps:

  • If you are using the Prebid Server Go version, in the static/bidder-info/ix.yaml file, complete the following:

    • Enable the adapter by deleting the disabled: true entry.
    • Add the following new entry and include the regional endpoint provided to you by Index:

       endpoint: "https://<ENDPOINT URL>"
      
    • Edit the below existing entry and include your publisher ID in the s parameter:

       userSync:  
        redirect:  
         url: "https://ssum.casalemedia.com/usermatchredir?s=<PUBLISHER ID>&gdpr=&gdpr_consent=&us_privacy=&cb="
      
    • Edit the below existing entry and include your publisher ID in the s parameter:

       userSync:  
        redirect:  
         iframe: "https://ssum.casalemedia.com/usermatch?s=<PUBLISHER ID>&gdpr=&gdpr_consent=&us_privacy=&cb="
      
  • If you are using Prebid Server Java version, edit the prebid-server-java entry in the src/main/resources/bidder-config/ix.yaml file as follows:

    • Edit the below existing entry and include the endpoint URL provided to you by Index.

      adapters: 
       ix: 
         endpoint: "https://<ENDPOINT URL>"
      
    • Edit the below existing entry and include your publisher ID in the s parameter:

       adapters: 
         ix: 
          usersync: 
           redirect: 
            url: "https://ssum.casalemedia.com/usermatchredir?s=<PUBLISHER ID>&gdpr=&gdpr_consent=&us_privacy=&cb=" 
      
    • Add the below entry and include your publisher ID in the s parameter:

      adapters: 
        ix: 
         usersync: 
          iframe: 
           url: "https://ssum.casalemedia.com/usermatch?s=<PUBLISHER ID>&gdpr=&gdpr_consent=&us_privacy=&cb="
      

Publisher instructions to call Index through Prebid Server

If you are using an existing Prebid Server instance that is already configured to call Index, depending on whether you want to call Index from the browser, mobile app, CTV, or long-form video, follow any of the below sections to complete the Index-specific configuration.

Call Index from a web browser

To call Index from a web browser using Prebid Server, you must first configure Prebid.js to call Index directly from the browser using our client-side adapter. Follow the quick start instructions provided in Prebid’s Getting Started for Developers documentation. Complete the following steps to complete the Index-specific configuration:

  1. Build the binary in one of the following ways:
    • Download Prebid.js from the Prebid site to use the standard compiled binary that Prebid includes in the download process and select Index Exchange as an adapter.
    • Build it on your own from the source code by following the instructions in Prebid.js project README. If you use this method, you will need to include several modules in your build process. See the Index modules to include in your build process section in our Prebid.js documentation on the Prebid site.
  2. Define the Index-specific parameters at the bidder level which include adding ix as the bidder and the siteId. For Index’s bidder-specific parameters, see the Bid request parameters section below.

     {
         bidder: 'ix',
         params: {
             siteId: '9999990'
         }
     }
    
  3. Define your ad units in the adUnit object. This includes the details about the ad slots such as the media types, ad size, and ad code. For more information about this object, see Prebid’s Ad Unit Reference documentation.
  4. Enable user syncing by adding the following code in the pbjs.setConfig() function. Index strongly recommends enabling user syncing through iFrames, though we do also support image-based syncing. This functionality improves DSP user match rates and increases the Index bid rate and bid price. Make sure to call pbjs.setConfig() only once. This configuration is optional in Prebid, but required by Index.

     pbjs.setConfig({
         userSync: {
             iframeEnabled: true,
             filterSettings: {
                 iframe: {
                     bidders: ['ix'],
                     filter: 'include'
                 }
             }
         }
     });
    
  5. (Optional) Set up First Party Data (FPD). For more information about the data types we support and the instructions for each option, see the Set up First Party Data (FPD) section in our Prebid.js documentation on the Prebid site.
  6. (Optional) If you want to monetize instream video, you need to enable a cache endpoint in the pbjs.setConfig() function as follows:

     pbjs.setConfig({
         cache: {
             url: 'https://prebid.adnxs.com/pbc/v1/cache'
         }
     });
    
  7. (Optional) If you want to monetize outstream video, you can choose among the following options:
  8. (Optional) Configure Prebid Native with Index. For more information, see the Prebid Native section in our Prebid.js documentation on the Prebid site. Prebid Native is available from Prebid.js version 7.4.0 or higher.

Call Index from Prebid Mobile SDK

Before you begin: Contact your Index Exchange representative to get your siteId. You must provide this site ID to your Prebid Server host company.

Note: To implement Prebid Mobile SDK, follow Prebid’s Getting Started with Prebid Mobile documentation.

To add Index as a bidder to your mobile app:

  1. Inform your Prebid Server hosting company to add ixas a bidder in the configuration and include the siteId that Index provides to you at the time of integration.
  2. Define the Index-specific parameters at the bidder level. For information about these parameters, see the Bid request parameters section below.
  3. Include any ad unit level required or optional parameters provided in Prebid’s Prebid Mobile API - iOS and Prebid Mobile API - Android documentation.

Call Index from CTV/long-form video environment

Before you begin: Contact your Index Exchange Representative to get the siteId. You must provide this site ID to your Prebid Server host company.

Note: To implement CTV and long-form video using Prebid Server, follow Prebid’s Long Form Video documentation.

To add Index as a bidder:

  1. Inform your Prebid Server hosting company to add ixas a bidder in the configuration and include the siteId that Index provides to you at the time of integration.
  2. Define the Index-specific parameters at the bidder level. For information about these parameters, see the Bid request parameters section below.
  3. Include any ad unit level required or optional parameters provided in Prebid’s /openrtb2/video documentation.

Call Index from any other server-to-server OpenRTB environment

To request bids from Index:

  • In requests that you make to your Prebid Server host, add imp.ext.ix and include the siteId that Index provides to you at the time of integration.

Example:

    "imp": [{
           "ext": {
              "ix": {
                "siteId": "9999990"
              }
        }
      }],

Bid request parameters

For a list of the OpenRTB fields that Index supports in bid requests, see List of supported OpenRTB bid request fields for sellers. The following are the required fields for the various supported media types.

You must include these parameters at the bidder level.

Key Scope Type Description
siteId Required String An Index-specific identifier that is associated with this ad unit. This is similar to a placement ID or an ad unit ID that some other modules have. For example, '9999990', '9999991', '9999992'

Video

You must include these parameters at the bidder level.

Key Scope Type Description
siteId Required String An Index-specific identifier that is associated with this ad unit. It will be associated with the single size, if the size is provided. This is similar to a placement ID or an ad unit ID that some other modules have. For example, '9999990', '9999991', '9999992'
Note: You can re-use the existing siteId within the same flex position or video size, if the video adapts to the containing <div> element.

If you are using Index’s outstream ad unit and have placed the video object at the bidder level, you must include the Index required parameters at the bidder level. You can include the optional parameters to specify the outstream ad unit configurations.

Key Scope Type Description
video.w Required Integer The width of the video player in pixels that will be passed to demand partners. You must define the size of the video player using the video.w and video.h parameters. We strongly recommend video sizes to be 256 x 256 or greater, 300 x 250, or 320 x 180.
video.h Required Integer The height of the video player in pixels that will be passed to demand partners. You must define the size of the video player using the video.w and video.h parameters. We strongly recommend video sizes to be 256 x 256 or greater, 300 x 250, or 320 x 180.
video.playerSize Required Integer[] The video player size that will be passed to demand partners.
video.playerConfig Optional Hash The Index-specific outstream ad unit configurations.
video.playerConfig.floatOnScroll Optional Boolean A boolean specifying whether you want to use the player’s floating capabilities, where:
- true: Use the Index player’s float capabilities.
Note: If you set floatOnScroll to true, Index updates the placement value to 5.
Note: We do not recommend using the player’s default float capabilities if you have more than one outstream ad unit per page.
-false: Do not use the Index player’s float capabilities (default).
video.playerConfig.floatSize Optional Integer[] The height and width of the floating player in pixels. If you do not specify a float size, the player adjusts to the aspect ratio of the player size that is defined when it is not floating. Index recommends that you review and test the float size to your user experience preference.
video.plcmt Required Integer[] The video’s placement type, where:
- 1 = Instream
- 2 = Accompanying Content
- 3 = Interstitial
- 4 = No Content/Standalone

Examples

Banner

{
  "id": "ix-banner-id",
  "imp": [
    {
      "id": "imp-id",
      "banner": {
        "w": 300,
        "h": 250,
        "id": "1",
        "pos": 0,
        "format": [
          {
            "w": 300,
            "h": 250
          },
          {
            "w": 300,
            "h": 600
          }
        ]
      },
      "instl": 0,
      "tagid": "5602709",
      "bidfloor": 0.02,
      "bidfloorcur": "USD",
      "secure": 1,
      "ext": {
        "ix": {
          "siteId": "9999990"
        }
      }
    }
  ],
  "app": {
    "bundle": "555555555",
    "storeurl": "https://apps.apple.com/us/app/test-app/id555555555",
    "publisher": {
      "id": "123456"
    },
    "content": {
      "title": "Entertainment",
      "genre": "IAB9-30,IAB6,IAB9-7,IAB1"
    }
  },
  "device": {
    "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 15_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",
    "ip": "10.20.30.40",
    "ifa": "2E2E2E2E-3B3B-4141-8A8A-181818181818"
  },
  "at": 1,
  "tmax": 200
}

Video

{
  "id": "ix-video-example",
  "imp": [
    {
      "id": "imp-id",
      "video": {
        "mimes": [
          "video/mp4",
          "video/3gpp",
          "video/webm"
        ],
        "minduration": 15,
        "maxduration": 60,
        "startdelay": -1,
        "protocols": [
          2,
          3,
          5,
          6
        ],
        "w": 320,
        "h": 480,
        "placement": 1,
        "linearity": 1,
        "minbitrate": 1000,
        "api": [
          1,
          2,
          3,
          5
        ]
      },
      "secure": 1,
      "ext": {
        "ix": {
          "siteId": "9999990"
        }
      }
    }
  ],
  "app": {
    "bundle": "555555555",
    "storeurl": "https://apps.apple.com/us/app/test-app/id555555555",
    "publisher": {
      "id": "123456"
    },
    "content": {
      "title": "Entertainment",
      "genre": "IAB9-30,IAB6,IAB9-7,IAB1"
    }
  },
  "device": {
    "ua": "Mozilla/5.0 (iPhone; CPU iPhone OS 15_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E18",
    "ip": "10.20.30.40",
    "ifa": "2E2E2E2E-3B3B-4141-8A8A-181818181818"
  },
  "at": 1,
  "tmax": 1000
}

"Send All Bids" Ad Server Keys

These are the bidder-specific keys that would be targeted within GAM in a Send-All-Bids scenario. GAM truncates keys to 20 characters.
hb_pb_ix hb_bidder_ix hb_adid_ix
hb_size_ix hb_source_ix hb_format_ix
hb_cache_host_ix hb_cache_id_ix hb_uuid_ix
hb_cache_path_ix hb_deal_ix

Back to Bidders