SotiAds is an advanced tool that automates the creation and management of AdMob ad units and mediation groups, synchronizing them with Firebase Remote Config. By implementing multiple eCPM floor techniques, it aims to significantly boost ad revenue.
- Automatic creation of ad units with multiple eCPM floors
- Intelligent mediation group management
- Seamless synchronization with Firebase Remote Config
- Support for multiple ad formats (Interstitial, Rewarded, Banner, etc.)
- Compatible with both Node.js and Bun runtimes
Understanding the mechanics of eCPM floors and auction types is crucial for maximizing ad revenue:
In a second-price auction, the winning bidder pays the price of the second-highest bid. Here's how eCPM floors can help:
- Preventing Undervaluation: By setting a floor, you ensure that your ad inventory isn't sold for less than its perceived value.
- Encouraging Higher Bids: Bidders may increase their bids to surpass the floor and ensure they win the auction.
- Capturing True Value: If the highest bid is significantly above the second-highest, a well-placed floor can capture more of that value.
In a first-price auction, the winning bidder pays exactly what they bid. eCPM floors are beneficial here because:
- Setting Minimum Acceptable Prices: Floors directly establish the minimum price you're willing to accept for your inventory.
- Simplifying Bidding Strategies: Advertisers know they need to bid above the floor to have a chance, potentially leading to higher bids.
SotiAds implements a multiple eCPM floors strategy, which can boost revenue by:
- Capturing High-Value Opportunities: Higher floors capture high-value impressions when demand is strong.
- Maintaining Fill Rates: Lower floors ensure a baseline fill rate, maintaining overall revenue.
- Adapting to Market Conditions: Different floors allow your app to adapt to varying market conditions and user segments.
- Gathering Pricing Data: Multiple floors provide insights into the true value of your inventory across different scenarios.
To maximize the benefits of SotiAds's multiple eCPM floors, consider the following implementation strategy:
-
Prioritized Loading:
- Start by attempting to load ads with the highest eCPM floor.
- If unsuccessful, progressively try lower floors.
- Example pseudocode:
floors = [10.0, 5.0, 2.0, 1.0, 0.5] for floor in floors: ad = try_load_ad(floor) if ad: display(ad) break
-
Parallel Loading with Timeout:
- Initiate ad requests for multiple floors simultaneously.
- Set a timeout for high-floor requests.
- Display the highest-value ad that loads within the timeout.
- Example pseudocode:
ads = parallel_load_ads([10.0, 5.0, 2.0, 1.0, 0.5]) wait_for_timeout(3000) # 3 seconds best_ad = select_highest_value_loaded_ad(ads) if best_ad: display(best_ad) else: wait_for_any_ad(ads)
-
Dynamic Floor Adjustment:
- Use historical data to adjust floor values.
- Increase floors during high-demand periods.
- Lower floors when fill rates drop below targets.
-
User Segmentation:
- Apply different floor strategies based on user segments.
- Higher floors for users in high-value demographics or geos.
- Lower floors for new users or less engaged segments.
-
Waterfall Optimization:
- Use SotiAds to create a waterfall of ad networks.
- Order networks by historical eCPM performance.
- Adjust waterfall based on real-time performance data.
By implementing these strategies, you can maximize the effectiveness of the multiple eCPM floors created by SotiAds, potentially leading to significant revenue increases.
While results can vary widely based on app category, user base, and market conditions, apps implementing advanced eCPM floor strategies have reported:
- Overall revenue increases of 15-25%
- eCPM improvements of 20-30% for high-value ad formats like interstitials and rewarded videos
- Fill rate optimizations leading to 5-10% more filled requests
- Up to 40% increase in high-value impressions (top 10% eCPM range)
Note: These figures are general industry observations and not guaranteed results. Your specific outcomes may differ.
- Node.js (v14 or later) or Bun runtime
- AdMob account
- Firebase project
- Basic understanding of AdMob and mediation concepts
-
Clone the repository:
git clone https://github.com/yourusername/sotiads.git cd sotiads
-
Install dependencies:
For Node.js:
npm install
For Bun:
bun install
-
Create a
config.yml
file in the project root with your app configurations. Seeconfig.example.yml
for reference.
Create a config.yml
file with the following structure:
default:
ecpmFloors:
- 1000
- 500
- 300
- 100
- 50
- 30
- 10
- 5
- 3
- 1
apps:
your-app-id-1:
adSources:
meta:
placements:
default:
interstitial:
placementId: "your-meta-interstitial-placement-id"
rewarded:
placementId: "your-meta-rewarded-placement-id"
mintegral:
appId: "your-mintegral-app-id"
appKey: "your-mintegral-app-key"
placements:
default:
interstitial:
placementId: "your-mintegral-interstitial-placement-id"
adUnitId: "your-mintegral-interstitial-adunit-id"
rewarded:
placementId: "your-mintegral-rewarded-placement-id"
adUnitId: "your-mintegral-rewarded-adunit-id"
# ... other ad sources
your-app-id-2:
# ... configuration for another app
# ... more apps
Adjust the ecpmFloors
values and add all relevant ad sources for each app.
SotiAds supports two main actions: sync
and list
.
To list all available apps in your AdMob account:
For Node.js:
npm run start list
For Bun:
bun run index.ts list
To synchronize ad units and mediation groups for all configured apps:
For Node.js:
npm run start sync
For Bun:
bun run index.ts sync
To sync a specific app:
For Node.js:
npm run start sync <app-id>
For Bun:
bun run index.ts sync <app-id>
-c, --config
: Specify a custom path for the configuration file (default:config.yml
)-h, --help
: Show help message
- Start with a wide range of eCPM floors to capture various bid levels.
- Monitor performance and adjust floors based on your app's specific performance.
- Implement advanced loading strategies as outlined in the "Implementation Strategy for Developers" section.
- Regularly review and update your configuration to ensure optimal performance.
- Use A/B testing to fine-tune your eCPM floor strategy for each app and ad format.
- Pay attention to user experience metrics alongside revenue to ensure a balanced approach.
SotiAds requires authentication with your AdMob and Firebase accounts. Ensure that you keep your authentication tokens and configuration files secure and never share them publicly.
Contributions to SotiAds are welcome! Please feel free to submit a Pull Request.
SotiAds is licensed under the MIT License.