RORK LABJP
PLAY — Google Play's target API level 36 requirement took effect yesterday, August 31. From today, new apps and updates must target Android 16VISIBILITY — Apps still on API 35 stay listed but disappear for users on newer Android versions. No error is raised; new installs simply fade, which makes the change easy to missEXTENSION — If you missed the deadline, an extension through November 1, 2026 can be requested in Play Console — best filed alongside a concrete migration planAPPLE — On the Apple side, the event lands September 9 and iOS 27 is reported to ship September 14. Testing generated apps on iOS 27 hardware before release week is time well spentEXPO — Expo released expo-paste-input on August 28, a native module that brings image, GIF, and sticker paste to React Native TextInputEAS — EAS Observe reached general availability on August 20, putting crash and performance monitoring on the same EAS platform as builds and updatesPLAY — Google Play's target API level 36 requirement took effect yesterday, August 31. From today, new apps and updates must target Android 16VISIBILITY — Apps still on API 35 stay listed but disappear for users on newer Android versions. No error is raised; new installs simply fade, which makes the change easy to missEXTENSION — If you missed the deadline, an extension through November 1, 2026 can be requested in Play Console — best filed alongside a concrete migration planAPPLE — On the Apple side, the event lands September 9 and iOS 27 is reported to ship September 14. Testing generated apps on iOS 27 hardware before release week is time well spentEXPO — Expo released expo-paste-input on August 28, a native module that brings image, GIF, and sticker paste to React Native TextInputEAS — EAS Observe reached general availability on August 20, putting crash and performance monitoring on the same EAS platform as builds and updates
Articles/Business
Business/2026-05-30Advanced

I Turned Off My AdMob Floors and Revenue Collapsed — The Mediation Rules That Actually Worked Solo

A record of tuning AdMob mediation eCPM floors to real-world rates on an indie wallpaper app, and handling the end of Unity Ads waterfall support. Why you must not turn INT floors off, the 80% match-rate boundary, and a twice-monthly review routine.

AdMob70Mediation7eCPM4App Monetization11Unity AdsAd OptimizationIndie Developer11

Premium Article

When you run wallpaper apps solo, ad revenue is never something you set once and forget. Leave it alone, and one day's casual settings change can quietly eat into your earnings. Last month that was exactly me: my estimated interstitial revenue visibly dropped, and it took several days to track down the cause. The culprit was a single change I had added thinking it would help. This article is about the judgment rules around "how to touch mediation floors" that solidified during that recovery.

To put the conclusion first: the rule that helped most was a single line — "never turn floors off." At a glance, removing the floor (the minimum eCPM) seems like it would let inventory sell more easily and increase revenue. In reality, the opposite happened.

The time I turned floors off and revenue collapsed

As preparation for adding a new ad network to mediation, I once temporarily removed all eCPM floors from my AdMob interstitial groups. I thought "floors might block bids from the new network," but that was wrong.

Turning floors off removes the minimum-eCPM brake across all of mediation, including bidding. As a result, inventory started clearing even on cheap bids; impressions rose, but the price per impression collapsed, and estimated revenue actually went down. A floor is not "a wall that blocks new networks" — it is "a floor that asserts a minimum price against every network." Once I realized this, I restored floors based on real-world rates and revenue returned to its previous level.

The official docs say "you can set a floor," but they do not say "what happens if you turn the INT floor off." This was a pitfall I only understood by stepping into it.

Set the floor at 50-60% of real eCPM

So what value do you set? The rule of thumb that solidified while running 42 groups is: INT floor = trailing-30-day real eCPM x 50-60%.

For example, in a region where real eCPM is around $16, I put the floor near $8.5. In a region at $10, around $5-$6. If the ratio of floor to real eCPM climbs above 65%, the floor may be too high and squeezing match rate, so I review it. Conversely, if it drops below 40%, I judge that I can push a little harder with little lost fill.

The quick-reference table I keep on hand looks roughly like this. Real eCPM varies a lot by region, so the point is to think in ratios rather than fixed dollar amounts.

Region real eCPM (trailing 30 days)INT floor target (50-60%)Operating note
~$16 (high-rate regions)~$8.5Above a 65% ratio it tends to squeeze match rate
~$10 (mid-rate regions)$5-$6Baseline. Fine-tune within +/-30%
~$4 (low-rate regions)~$2If the ratio dips below 40%, you can push a bit
Banners generally ($0.10-$0.30)OFFA floor here drops fill rate

What matters here is not applying the same logic to banners. Banner real eCPM is low, $0.10-$0.30, and setting a floor drops fill rate badly. I keep banner floors off across all groups and leave them to Google's automatic optimization. Changing policy per format turned out to be the realistic answer in production.

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
Turning INT floors off removes the minimum eCPM across all of bidding and collapses revenue — I share the judgment mistake I actually made and how I recovered
Take away the concrete thresholds that solidified over running 42 groups: floor = 50-60% of real eCPM, 80% match rate as the investigation boundary, and changes capped at +/-30%
See how I handled Unity Ads waterfall support ending on January 31, 2026, and how I run a twice-monthly floor review in about 15 minutes
Secure payment via Stripe · Cancel anytime

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $15 for lifetime access
View Membership →

Related Articles

Business2026-05-30
Two Weeks After Adding Pangle and Mintegral to My AdMob Waterfall — Notes on eCPM and Fill Rate
A record from a wallpaper app with over 50 million downloads: I added Pangle and Mintegral to my AdMob mediation, then compared two weeks of eCPM and fill-rate data. Bidding-and-waterfall coexistence, the effective-revenue breakdown, region-based groups, and a daily monitoring script — kept in a form you can actually operate.
Business2026-06-04
Expanding AdMob bidding demand without adding SDKs — what applying to 11 server-side partners taught me about 'enabled ≠ serving'
A working log of actually adding SDK-free, server-side bidding partners to AdMob's bidding sources: the difference between doc-type and form-type sign-up flows, how reCAPTCHA behaves, and the trap that 'partnership enabled' does not mean 'eligible to serve', told from a solo developer's point of view.
Business2026-05-21
Putting AdMob Bidding into Production for a Rork App — Five Networks Bidding in Parallel, eCPM Trends, and Daily Operations
I moved the AdMob mediation layer of my Rork-generated apps from waterfall to bidding, with five ad networks bidding in parallel. Here are my real-world numbers after three weeks of production, the SDK pitfalls, and how I delegate daily monitoring to Claude in Chrome.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →