My AdMob Rollercoaster: From $2.50/Day to an Account Limitation
When I released my first app, nothing happened on the first day. But eventually, after getting through the review process, I started getting AdMob income. On this channel, I have a goal to cover the costs for my side business, and after just a couple of days, the AdMob income was already exceeding the $2.50 per day I needed. The income started low, then went up, down a bit, and then climbed again. I figured that since it's an app, some users would stick around, creating a snowball effect. Combined with my other AdSense income, I was making enough to reach my first goal.
The Implementation
The way I did this was with an app that helps you check AdSense. I limited users to five refreshes a day. If you wanted more, you had to watch a rewarded video, which gave you three additional refreshes. My idea was that if you stayed within the five-refresh limit, the AdMob library wouldn't even load. You always had to opt-in to watch a video.
And it worked—the income grew and grew.
The Fall
Then, all of a sudden, it just stopped. I got "no fill" on everything. Even test ads stopped working. The problem was, I had put AdMob in the critical path of my app. When a user couldn't get an ad, they got an error and were blocked. This led to a one-star review that's still haunting my five-star average. I even pushed an update removing the ads temporarily and replied to the reviewer, but the one-star rating remains.
A couple of days after the ads stopped, I got an email saying my ad account was limited.
The "Why"
I think a few things happened. First, AdMob likely saw that 100% of the users who initialized AdMob went on to watch a rewarded video. Also, every rewarded video that was loaded got watched. This was because I didn't preload the ads as they recommend. I was naive; I just assumed I would always get an ad to show. From their end, these numbers must have looked really shady.
The user who left the negative review also claimed he "watched 2000s of my ads and got nothing for it." I hadn't put a limit on how many videos someone could watch, thinking people might want to "bank" refreshes for the day. That was clearly a mistake.
Another thing that probably looked shady was my ad request strategy. For rewarded videos, you can request different price tiers. I set up three ad units: high, medium, and any. My app would first request a high-priced ad. If that failed, it would immediately request a medium one. If that failed, it would fall back to the lowest tier. This meant I was making very fast, consecutive requests, which likely flagged my app.
The Lessons
So, here are the lessons I learned and what I'm doing now:
- I'm not going to put AdMob in the critical path ever again. A failed ad should never break the user experience.
- I'm going to follow best practices. I've rebranded the app slightly, moving away from the "privacy" angle of not loading AdMob. I'll now initialize AdMob when the app starts (with consent, of course) and preload ads. I'll try to be more "normal" in my implementation, even if what I was doing wasn't technically prohibited. It just looked suspicious.
My goal is still to be creative with ads, but not in a way that risks the entire app.