justin avatar image
justin posted

Why is my fill rate dropping?


The Amazon Mobile Ad Network is comprised of many advertisers and publishers. Various advertising campaigns move through the network which can result in a fluctuation in your monetization. If you notice a change in your eCPM or fill rate, please review your app to ensure that it is accepting ads from Amazon. More information can be found here:

Note that your fill rate is based on requests, which are worldwide, and impressions, which are only US, the UK, Germany, France, Spain, Italy, and Japan at this time. The API locations tags do not stop your app from requesting an impression, thus your fill rate is skewed by the fact requests are worldwide and impressions are US only. Other factors include your app content, ad placements, and advertising campaigns that match your user base. Note also that fill rates may change significantly over time based on app inventory in each market segment, this is impacted by season and other market forces.

Also, the fill rate for Mobile Ads in the International Market is dependent on you having integrated the latest SDK. Ads will not be delivered to devices that do not have the latest SDK integrated. Note also that users that have not updated their app to your latest version (using the latest jar) will not be receiving Amazon Ads as well.

To maximize fill rate best results can be obtained by following the best practices below:

Known Issues / Best Practices

  • Apps loading interstitial ads should not set the Android launch mode to "singleTask" or "singleInstance". These launch mode settings can cause interstitial ad loading to fail. See the Android documentation for more information about launch mode.
  • Interstitial ads have not been certified for devices running Android 2.2 and below.
  • Due to a known issue, Auto Ad Size failures may be incorrectly reported as NO_FILL errors. Correctly following the guidelines in the Auto Ad Size section when setting up your banner ad's layout will prevent these errors from occurring.
  • It's possible for Auto Ad Size to return no ads if your AdLayout is too small or its size is not appropriate for the device loading the ad. If you would like to take advantage of Auto Ad Size for most screen sizes, it's recommended that you set the AdLayout's width to MATCH_PARENT and set the AdLayout's height to WRAP_CONTENT.
  • If you're creating an AdLayout in memory to move onto the screen later, then you must not assign it a parent view until this move occurs. The AdLayout should be added directly to the activity's view hierarchy. Do not add it to a parent view and then insert the parent view into the hierarchy as this could force ad loading to fail. See the Floating Ad Sample for an example implementation.
  • Banner ads created in memory to be floated onto the screen later have been known to crop in rare cases on certain Android 4.0.x phones. You can avoid this problem by setting your app's target API to 13 or lower.
  • On some devices running Android 2.2 and older, you may see logcat error messages about a database lock when you attempt to load an ad. These messages are related to a known issue tied to certain Android versions, and they may be safely ignored.
  • If banner ads do not scale to the proper size, you may be using a customized layout that fails to provide AdLayout with the correct dimensions needed for scaling. You can fix this by hard-coding the correct dimensions into the AdLayout before attempting to load any ads. For example, if you want to load a 320x50 ad, adding the following line right before ads are loaded for the first time will ensure that the ad scales properly regardless of screen size or pixel density: myAdLayout.setLayoutParams(new LayoutParams(320, 50));
  • When a banner ad is reloaded using the same AdLayout, rich media ad expansion is disabled to prevent the rich media ad from collapsing while users are interacting with it.
  • When using an XML document to lay out your app, it is not recommended to use WRAP_CONTENT for both AdLayout width and AdLayout height.
  • If your app supports Android 3.x devices and contains TextViews that can be modified by the user, we recommend that you add the following line to the AndroidManifest.xml file in the section corresponding to the app in order to prevent the keyboard from appearing unexpectedly upon banner ad collapse: android:windowSoftInputMode="stateHidden"
  • During integration, you should set the enable testing flag to true to ensure that most ad requests return an ad. Test requests don't show up in your metrics, but allow you to test different ad types within your app. Call the enableTesting function with a true argument to enable the test request. For example: AdRegistration.enableTesting(true);
  • The timeout value set through AdLayout.setTimeout() only sets the timeout for retrieving an ad from the Amazon Ad Server. It does not account for the time it takes to load all the ad's referenced resources such as images.
  • If your App Key is invalid, the server will not return an ad. AdListener.onAdFailedToLoad() will be called with Error Code INTERNAL_ERROR and Error Message "Server Message: INVALID_APPID".
  • Android emulators may have issues rendering some ads. Additionally, the emulators may not expose all functionality. For best results we recommend integration testing on actual Android devices.
  • On Android 4.x devices you may see a blue border around ad images that have been clicked on.
  • We do not support rich media expandable banner ads on Android 1.6 devices. These devices will only receive non-expandable image banners.

Keywords: mobile ad network, ecpm, fill rate, AdLayout, requests, drop


mobile ads
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.



levonl contributed to this article brizzlebrazzle contributed to this article Justin@Amazon contributed to this article