AdMob Mediation is a feature that lets you serve ads to your apps from multiple sources, including the AdMob Network, third-party ad networks, and AdMob campaigns. AdMob Mediation helps maximize your fill rate and increase your monetization by sending ad requests to multiple networks to ensure you find the best available network to serve ads. Case study.

This guide is your one-stop shop for integrating mediation into your AdMob app. It covers both bidding and waterfall integrations.


  • For bidding: Google Mobile Ads SDK 18.3.0 or higher.

Initialize the Mobile Ads SDK

The quick start guide shows you how to initialize the Mobile Ads SDK. During that initialization call, mediation and bidding adapters also get initialized. It is important to wait for initialization to complete before you load ads in order to ensure full participation from every ad network on the first ad request.

The sample code below shows how you can check each adapter's initialization status prior to making an ad request.



public class MainActivity extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {

        MobileAds.initialize(this, new OnInitializationCompleteListener() {
            public void onInitializationComplete(InitializationStatus initializationStatus) {
                Map<String, AdapterStatus> statusMap = initializationStatus.getAdapterStatusMap();
                for (String adapterClass : statusMap.keySet()) {
                    AdapterStatus status = statusMap.get(adapterClass);
                    Log.d("MyApp", String.format(
                            "Adapter name: %s, Description: %s, Latency: %d",
                            adapterClass, status.getDescription(), status.getLatency()));

                // Start loading ads here...



MobileAds.initialize(this) { initializationStatus ->
  val statusMap =
  for (adapterClass in statusMap.keys) {
    val status = statusMap[adapterClass]
    Log.d("MyApp", String.format(
      "Adapter name: %s, Description: %s, Latency: %d",
      adapterClass, status!!.description, status.latency))

  // Start loading ads here...

Choosing your mediation networks

AdMob mediation supports several ad sources, with a mix of bidding and waterfall mediation integrations. Select an ad source below for integration instructions specific to that ad source.

Ad Source Banner Interstitial Rewarded Native Bidding ANO support
No third-party SDKs required
Ad Generation Bidding only
Chocolate Platform Bidding only
Fluct Bidding only
Improve Digital Bidding only
Index Exchange Bidding only Bidding only
MobFox Bidding only
OpenX Bidding only
PubMatic Bidding only
Rubicon Bidding only
Sharethrough Bidding only
Smaato Bidding only
Sonobi Bidding only
TripleLift Bidding only
UnrulyX Bidding only
Yieldmo Bidding only
YieldOne Bidding only
Open source and versioned - 3rd party SDKs required
AdColony Country-specific
AppLovin Country-specific
Chartboost Country-specific
Facebook Country-specific
Fyber Marketplace Country-specific
i-mobile Japan only
InMobi Country-specific
ironSource Country-specific
maio Japan only
MoPub Country-specific
myTarget Country-specific
nend Japan only
Tapjoy Country-specific
Unity Ads Country-specific
Verizon Media Country-specific
Vungle Country-specific
Non-open source - 3rd party SDKs required
AdFalcon Country-specific
Flurry Country-specific
Leadbolt Country-specific
LG U+AD None
Tencent GDT None
Vpon None
Zucks Country-specific

Open source and versioned adapters

If an adapter is labeled "Open source and versioned" in the above table, it means the adapter source code is open-sourced in Google's GitHub repository, enabling you to debug issues yourself should you choose to do so.

It also means that there are versioned adapter builds in Google's bintray repository, built against a specific version of the third-party ad network SDK. You can also integrate these adapters into your app with a single line change to your app's build.gradle file.

Adapter versioning

The adapter versioning scheme for versioned adapters is <third-party SDK version>.<adapter patch version>. For example, if an ad network releases a new SDK version 1.2.3, a new adapter version will be released to Bintray after being tested against that new SDK.

If an adapter needs updating outside the lifecycle of a third-party SDK release, the patch version will increase. A bug fix for adapter version will be released in version

Mediation picker

Use the mediation picker to quickly integrate any open-sourced and versioned adapter into your app.

  1. Click the desired checkboxes.
  2. Click Get Mediators.
  3. Copy and paste the integration statements into your app.
  4. See the individual partner pages for further integration instructions.

ANO support

When you configure multiple ad networks for mediation, you have to specify what order to request these networks by setting their respective CPM. This can be difficult to manage, since ad network performance changes over time.

Ad network optimization (ANO) is a feature that enables you to generate the highest CPM from the ad networks in your mediation chain by automating the process of ordering the mediation chain to maximize revenue.

The mediation networks table above uses the following values for ANO support:

ANO support What it means
Bidding only The ad network only participates in bidding. ANO support is not applicable.
Country-specific eCPM values are automatically updated on your behalf on a per-country basis. This is the optimal type of optimization.
None You must manually configure an eCPM value for that ad network.

Click on a specific ad network's guide for details on how to configure ANO for that network.

Custom events

If you're looking for an ad network and don't see it on the list above, you can use custom events to write your own integration with that ad network. See Custom Events for more details on how to create a custom event.

Check which ad network adapter class loaded the ad

Here is some sample code that logs the ad network class name for a banner ad:


public void onAdLoaded() {
  Log.d("Banner adapter class name: " + ad.getResponseInfo().getMediationAdapterClassName());


override fun onAdLoaded() {
  Log.d("Banner adapter class name:" + ad.responseInfo.mediationAdapterClassName)

Refer to the ResponseInfo documentation on getMediationAdapterClassName() for details about this method.

Initialize your ad object with an Activity instance

In the constructor for a new ad object (for example, AdView), you must pass in an object of type Context. This Context is passed on to other ad networks when using mediation. Some ad networks require a more restrictive Context that is of type Activity and may not be able to serve ads without an Activity instance. Therefore, we recommend passing in an Activity instance when initializing ad objects to ensure a consistent experience with your mediated ad networks.

Make sure to disable refresh in all third-party ad networks UI for banner ad units used in AdMob mediation. This will prevent a double refresh since AdMob also triggers a refresh based on your banner ad unit's refresh rate.

Rewarded ads mediation

We recommend that you override all default reward values by setting reward values in the AdMob UI. To do this, select the Apply to all networks in Mediation groups box so that the reward is consistent across all networks. Some ad networks don't provide a reward value or type at all. By overriding the reward value, the reward is consistent no matter which ad network served the ad.

For more information on setting reward values in the AdMob UI, refer to create a rewarded ad unit.

Native ads mediation

The following are some best practices to consider when implementing native mediation.

Native ad presentation policy
Each ad network has its own policies. When using mediation, it's important to remember that your app still needs to abide by the policies of the mediated network that provided the ad.
Use loadAd() instead of loadAds()
The loadAds() method currently serves only Google ads. For mediated ads, use loadAd() instead.

Troubleshooting bidding

When integrating a bidding partner that requires their SDK, the following symptoms indicate an improper integration:

  • The bidding report shows significantly fewer ad requests to that partner than you expect.
  • The a3p parameter in any request after the first ad request is missing.

Follow this checklist to make sure your setup is correct:

  • In the AdMob UI, your AdMob ad unit targets a mediation group that has a bidding entry configured for that third-party ad network.
  • In the AdMob UI, your AdMob ad unit belongs to the same AdMob app ID that you passed to the Google Mobile Ads SDK.
  • In your app code, you initialized the mobile ads SDK and verified the adapter status is READY prior to loading an ad.
  • In your app code, you've included the latest version of the adapter and SDK binaries for the ad source you're trying to integrate with.