Advanced Bidding

Advanced Bidding is the complete reimagination of header bidding for the mobile app environment. It’s designed to help publishers more efficiently monetize their inventory by replacing the traditional ad waterfall with simultaneous real-time bidding (RTB) from ad networks and DSPs. For more information, visit the Advanced Bidding page.

Participate in the Advanced Bidding Beta

To enroll in our Advanced Bidding Beta program, email your MoPub account team about your interest in Advanced Bidding. They must whitelist you for the Advanced Bidding Beta before you can start creating Advanced Bidding line items. If you do not have a MoPub account manager or don’t know how to reach out to the account team, email support@mopub.com.

Before You Integrate

The following are the minimum technical requirements for enabling Advanced Bidding.

Step 1. Initialize Your Network SDKs

Initialization has varying effects, depending on the Advanced Bidder. To guarantee success with every bidder, we recommend the simplified and guaranteed network SDK initialization below.

Ensure that networks are initialized as early as possible. This means doing so “outside of the MoPub integration”; that is, before MoPub is initialized, for sufficient lead time to generate a successful bid.

The following is a generalized approach to initializing networks outside of MoPub:

  1. On app launch, identify where the app initializes MoPub, and preface it a couple of lines. This is where you will initialize the network SDKs.

  2. Call the corresponding initialization API from the network SDK to initialize it, and pass in any parameters or IDs as necessary.

  3. Once the network finishes initializing, after a predefined wait time, initialize MoPub.

  4. Once MoPub finishes initializing via the completion callback (Android / iOS / Unity), make the ad request.

  • Consider AdColony as an example:

    • Android:

         // Define the AdColony app and zone IDs you want to initialize with
         String appId = "your_adcolony_app_id";
      
         String[] zoneIds = {"rewardedZoneId", "interstitialZoneId"};
      
         // Initialize the AdColony SDK with the above IDs
         AdColony.configure(this, appId, zoneIds);
      
         // Initialize MoPub
         MoPub.initializeSdk(this, configBuilder.build(), initSdkListener());          
      
    • iOS:

         // Define the AdColony app and zone IDs you want to initialize with
         NSString * appId = @"your_app_id";
         NSArray * allZoneIds = [NSArray arrayWithObjects:@"rewardedZoneId",@"interstitialZoneId"];
         NSString * userId = @"your_user_id";
      
         // Initialize the AdColony ZSDK with the above IDs
         [AdColonyController initializeAdColonyCustomEventWithAppId:appId allZoneIds:allZoneIds userId:userId callback:^{
              // Initialize the MoPub SDK
              [[MoPub sharedInstance] initializeSdkWithConfiguration:sdkConfig completion:^{
              }];
         }];
      
    • Unity:

         private void Start()
         {
              MoPub.InitializeSdk(new MoPub.SdkConfiguration {
                   // Define the AdColony app and zone IDs you want to initialize with
                   MediatedNetworks = new MoPub.MediatedNetwork[]
                   {
                        new MoPub.SupportedNetwork.AdColony
                        {
                             NetworkConfiguration = new Dictionary<string,object> {
                                  { "appId", YOUR_APP_ID_STRING },
                                  { "allZoneIds", YOUR_JSON_ARRAY_OF_ZONE_IDS }
                             },
                        },
                   },
              });
      
              /* Here, listen to OnSdkInitializedEvent to know when the MoPub SDK finishes initializing. 
              Keep in mind that AdColony, while it will initialize with your IDs passed in, 
              might take a different amount of time compared to MoPub to initialize. 
              OnSdkInitializedEvent cannot be used as a signal for that. */
         }
      

Step 2. Migrate to a Supported Network Instance

If you currently have the Advanced Bidding network set up as a Custom SDK Network, you must migrate your placement IDs to the supported network instance for all ad units using Advanced Bidding.

  1. Check if the network is on the supported setup in the Networks tab. Supported networks are labeled “SDK Network” in the Implementation column, whereas unsupported network setups are labeled “Custom SDK.” If yours is labeled “Custom SDK,” continue with the rest of these steps to migrate.

  2. In the MoPub UI Networks tab, click New network to add the supported network. Select the network name from the list:

    Add Network

  3. Confirm that you are using the supported MoPub adapters in your project (iOS, Android).

    If you are using the same adapters within your app as the MoPub-supported events, then simply move the placement IDs over to the new instance. If you are not using the same custom events, please contact your MoPub account team for more details on the best way to migrate.

  4. Follow these additional instructions for migrating to the supported network instance.

Step 3. Create a New Network Advanced Bidding Line Item

Follow the steps below to create one Advanced Bidding line item for each of your ad units. An Advanced Bidding line item can only be targeted to one MoPub ad unit, and every Advanced Bidding network will be set up through this single Advanced Bidding line item. Set the Advanced Bidding line item at the highest priority to allow the most competition. The Advanced Bidding network line item will compete at and below the priority you set. The floor price passed in the bid request will be $0.01 regardless of the CPM entered in the line item.

Advanced Bidding Line Item

  1. Create a new Placement ID in the Network’s UI.

    For Facebook Audience Network: If you are converting from a traditional tag ID to Advanced Bidding, use an existing traditional tag placement_id. If you are using multiple Facebook Audience Network placement IDs, choose the traditional tag placement that generates the most revenue for your bidding ID.

  2. In the MoPub UI, go to the ad unit against which you want to set up an Advanced Bidding line item. (You need one Advanced Bidding network line item for each MoPub ad unit ID.) Navigate to the Advanced Bidding submenu.

    Advanced Bidding Submenu

  3. Click Manage Bidders to set up the placement IDs for each network. If you don’t see the network you want to enable, contact your MoPub account team to be whitelisted.

    For Facebook Audience Network: Do not set target prices for the Advanced Bidding placement IDs in the Facebook UI. Do not violate any Facebook policies (such as “no auto-refresh <30 seconds”).

    Manage Bidders

  4. For a successful integration, follow our recommended checklist for a healthy waterfall setup:

    • All Advanced Bidding networks are set up via the supported network instance in the MoPub UI. The traditional Marketplace and network line items remain live in the waterfall.

    • Marketplace line items are set up at and below every priority where network line items are competing.

    • No structural changes (for example, change in network priorities) to the waterfall as you analyze the impact of bidding.

    • Enable Auto CPM for supported non-bidding networks. This ensures the fairest competition for the networks that aren’t submitting a real-time price.

  5. Once you have created these line items, inform your MoPub account team, keeping the line items paused until you get approval from your MoPub account team.

Keep all traditional network and Marketplace line items running as they are today. These line items will be used to monetize users who have not updated to an app version that includes the Advanced Bidding SDKs. You do not need to modify any of the Marketplace line items for Advanced Bidding. The traditional Marketplace line items will be used to monetize all users.

Step 4. Test Your Advanced Bidding Integration

Test your Advanced Bidding integration using a test ad unit before enabling Advanced Bidding on your production ad units. To make testing easy, MoPub will whitelist your test ad units so they can return test ads from our Advanced Bidding partners to ensure that you have fill while testing.

Important: Never integrate test ad units into a production version of your app.

Test your integration via Charles Proxy. If you are unfamiliar with Charles Proxy, your account team will provide you with setup instructions.

Create a Test Ad Unit

  1. In the Apps tab, create a new app for each platform, named “Advanced Bidding [OS] Testing” (for example: “Advanced Bidding iOS Testing” or “Advanced Bidding Android Testing”).

  2. Create one ad unit for each ad format you plan to take live in the Beta. We support all formats from each network.

  3. Target the Advanced Bidding Beta line items you already created to your newly created ad units by navigating to the line item in the MoPub UI, clicking Edit line item, and choosing your new ad unit in the Ad unit targeting section.

  4. Contact your MoPub account team to have your ad units whitelisted for Advanced Bidding test mode.

Testing Instructions

  1. Start Charles Proxy and set up focused hosts by navigating to ViewFocused HostsAdd. Filter for MoPub requests via focused hosts as shown:

    Filter for MoPub Requests

  2. Select the Focused option to begin using Focused Hosts.

    Select Focused

  3. Make an ad request. Navigate to the Request JSON Text and verify that the ad request is passing the advanced bidding token, passed via the abt parameter in the request.

    AB Token

  4. Verify that the MoPub SDK version is 5.5+. The MoPub SDK version is passed in the nv parameter.

    Verify MoPub Version

  5. Confirm that the request is using Advanced Bidding. Check this by navigating to the ad request Response JSON Text and verifying that the adm field is passed.

    Verify Advanced Bidding

    Note: If your ad requests are not making it down far enough in the waterfall to reach the advanced bidders, contact your account team and we can provide instructions to force line items to serve via Charles rewrites.

  6. Show the ad to ensure that it renders and tracks correctly. You will see the MoPub impression tracker fire if the impression was tracked. The MoPub impression tracker looks like this: ads.mopub.com/m/imp.

    Show Ad and Verify Impression Tracker

Last updated September 06, 2019

TWITTER, MOPUB, and the Bird logo are trademarks of Twitter, Inc. or its affiliates. All third party logos and trademarks included are the property of their respective owners.

© 2019 MoPub (a division of Twitter, Inc.)