Even though network fill rates do vary, there are some additional factors you should keep in mind when evaluating whether the numbers you are seeing for your applications make sense, and whether there’s anything that you can do about it.
If you are seeing an unusually low fill rate, or if the fill rate for one of your applications is noticeably lower than another one, you should evaluate the difference in how you’re showing ads in the two applications.
For example, ads shown in in-between screens can have a lower fill rate as users might click away from that screen before the ad is fully loaded. This is especially the case if your highest paying networks are ones that we are integrated with on a native SDK level (such as Millennial Media or AdMob, for example). For these natively integrated networks our server tells their native SDKs to fire and this takes more time due to network latency (one hop to MoPub to get the decision, one hop to the network to get the actual ad). For other networks where we get the ads via server to server communication the latency is much lower (a single hop to MoPub).
This means that you may see a decreased fill rate in some instances where users spend a very limited time on the page where the ads are shown and do not give the ads a chance to fully load. This is because MoPub counts the request immediately when our server gets pinged, but only counts the impression once an ad is finally loaded. If users navigate away from the page too quickly, the ad impression doesn’t get fired and it appears (rightly so) that the fill of that ad unit is low.
What can you do to increase fill?
A choice that you have is to disable the user’s ability to navigate away from the page for 3-5 seconds until the ad is rendered, though of course this is up to you as this will impact the user experience. If your user experience is most important here, you can make sure that the networks first checked to fill for this ad space are ones we are integrated with server to server.