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

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,, 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:

      • If you’re using the Unity MoPub Manager Prefab to initialize MoPub automatically please refer to the section about network configuration settings here.

      • If you’re using manual initialization via code:

         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. */

For AdColony Advanced Bidding on Android, there’s an additional step to follow, please see this topic.

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 adapters, 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 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 Bidder will be set up through this single Advanced Bidding line item. Note: The Advanced Bidding line item allows publishers to manage Advanced Bidding networks and Marketplace. Marketplace is enabled by default when the Advanced Bidding line item is created.

Set the Advanced Bidding line item at the highest priority to allow the most competition. The Advanced Bidding line item will compete at and below the priority you set.

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 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 and to review Marketplace content settings. The Marketplace unified auction settings are additive to the account level settings.

    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

    Marketplace content settings

  4. Optional: set a floor price per country basis. These are hard price floors and will apply to all Advanced Bidders. Note: To access price floors, reach out to your MoPub account team or

    hard price floors

  5. 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.

    • When setting price floors, enter the lowest value you will accept for your ad unit. Note: the default price will be $0.01 and applies to all Advanced Bidding networks and the Marketplace.

    • Keep your waterfall structure (for example, maintain network priorities) 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.

  6. Once you have created this line item, inform your MoPub account team, and they will review your set up prior to going live.

Keep all traditional network and Marketplace line items running as they are today. The network line items will be used to monetize users who have not updated to an app version that includes the Advanced Bidding SDKs. Your existing Marketplace line items will continue to stay enabled with no changes.

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:

    Show Ad and Verify Impression Tracker

Last updated June 09, 2020

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.

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