Ad Monetization
Track ad revenue and impressions alongside your subscription data
This feature is currently in beta. To enable it, visit the Ads page in your RevenueCat dashboard to opt in.
RevenueCat's ad monetization feature allows you to report ad impressions, clicks, and revenue alongside your subscription data, giving you a complete view of your app's monetization.
This integration works alongside your existing ad implementation. You're not replacing your ad SDK or changing how ads are served—you're just adding tracking to send ad events to RevenueCat.
Why Track Ads in RevenueCat?
If you're already tracking ads in your ad network's dashboard, you might wonder why you'd also track them in RevenueCat:
- Accurate Realized LTV: Get a complete view of customer lifetime value that includes both subscription revenue and ad revenue, not just one or the other
- Unified Monetization View: See which customers generate revenue from ads vs subscriptions vs both
- Better Segmentation: Understand how ad revenue varies by country, platform, or user cohort
- Lifecycle Analysis: Track user value holistically across all revenue streams
- Single Source of Truth: One dashboard for all your revenue data
This is especially valuable if you have a hybrid monetization model (free + ads, plus premium subscriptions).
Impression-Level Revenue Data (ILRD) means your ad platform reports revenue for each individual ad impression, not just aggregated daily totals. This allows RevenueCat to attribute revenue to specific users and ad placements.
Most modern ad platforms (AdMob, AppLovin MAX, ironSource, Unity Ads) support ILRD.
How It Works
Ad monetization hooks into your ad mediation platform's event callbacks to report ad events to RevenueCat. The data flows through the same infrastructure as your purchase events.
Your App → Ad SDK Callback → RevenueCat AdTracker → RevenueCat Backend → Charts
Supported Events
The ad monetization system captures the following events:
| Event | Description | When to Track |
|---|---|---|
| Ad Loaded | Ad successfully loaded from network | After successful ad load |
| Ad Displayed | Ad shown to user (impression) | When ad appears on screen |
| Ad Opened | User clicked/interacted with ad | When user taps ad |
| Ad Revenue | Revenue generated from ad | When mediation platform reports revenue |
| Ad Failed to Load | Ad request failed | When ad load fails |
Supported Ad Platforms
Direct Integration (Easiest)
- Google AdMob - Android helper library available, iOS coming soon
Manual Integration (Works with Any ILRD Provider)
- AppLovin MAX
- ironSource (LevelPlay)
- Unity Ads
- Google AdMob (if not using the helper library)
- Any custom mediation setup that provides impression-level revenue data
Note: Platforms that only provide aggregated daily reports (without per-impression revenue) are not supported.
Integration Options
AdMob SDK Integration (Recommended)
For apps using Google AdMob, RevenueCat provides a convenience module that automatically tracks all ad events with minimal code changes. Simply replace your standard AdMob loading calls with RevenueCat's loadAndTrack methods.
- AdMob SDK Integration (Android) - Available now
- iOS support coming soon
Manual Integration
For apps using other mediation platforms that provide impression-level revenue data (ILRD), you can manually call the AdTracker methods from your ad SDK callbacks.
- Manual Integration - Works with AppLovin MAX, ironSource, Unity Ads, and more
- Available for both Android and iOS
Event Data
Each ad event includes:
- Network Name: The ad network that served the ad (e.g., "Google Ads", "Meta Audience Network")
- Mediator Name: The mediation platform (e.g., "AdMob", "AppLovin")
- Ad Format: Type of ad (banner, interstitial, rewarded, etc.)
- Placement: Your custom identifier for where the ad appears in your app
- Ad Unit ID: The ad unit identifier from your mediation platform
- Impression ID: Unique identifier for the ad instance
- Revenue (for revenue events): Amount and currency
- Error Code (for failed events): Mediation platform error code
Placement Best Practices
The placement parameter identifies where ads appear in your app and is used for reporting and segmentation in Charts.
Use consistent, descriptive values like "home_banner", "level_complete_interstitial", or "bonus_coins_rewarded". Avoid dynamic values, timestamps, or overly generic names.
Testing Your Integration
During development, you can verify your ad events are being tracked correctly using the sandbox data view:
- Navigate to the Ads page in your RevenueCat dashboard
- Click the "Sandbox data" toggle
- View recent ad events from your debug builds
Events tracked in debug builds are automatically considered sandbox events. This view shows:
- Event types (loaded, displayed, opened, revenue, failed)
- Impression IDs and placement names
- Ad format, platform, mediator, and network
- Revenue amounts (for revenue events)
- Timestamps
Use this to verify your integration is working correctly before releasing to production.
Data Availability
Once integrated, your ad data will appear in:
- Ad Charts: Dedicated charts for ad impressions, clicks, revenue, CTR, eCPM, fill rate, and monetized customers
- Revenue Chart: Ad revenue is automatically included in total revenue and can be segmented separately
- Realized LTV per Customer: Ad revenue is included in customer lifetime value calculations
- Realized LTV per Paying Customer: Ad revenue contributes to paying customer LTV metrics
- Customer profiles: Ad revenue appears alongside subscription revenue
Ad data comes from real-time SDK callbacks and may differ from ad network dashboards, which apply post-processing, deduplication, and fraud filtering over 24-48 hours. Use RevenueCat for real-time unified reporting and your ad platform for final reconciliation.
Enhance Chart Readability
By default, ad charts display ad unit IDs which can be difficult to interpret (e.g., ca-app-pub-3940256099942544/9214589741).
For apps using Google AdMob, you can connect your AdMob account to automatically sync ad unit names:
→ Google AdMob Integration - OAuth connection that syncs ad unit names to make your charts more readable
This is optional and requires no code changes - simply connect your Google account in the RevenueCat dashboard.
Requirements
- SDK Version:
- Android:
purchases-android8.0.0+ - iOS:
purchases-ios5.0.0+ (when available)
- Android:
- Beta Opt-in: Enable ad monetization via the Ads page in your RevenueCat dashboard
- Charts v3: Ad monetization requires Charts v3, which will be enabled for you if it isn't already when you are granted access to the feature
- Experimental API: Ad monetization APIs are marked as experimental and may change
Next Steps
- Opt in to the beta via the Ads page in your RevenueCat dashboard
- Set up AdMob SDK Integration (Android)
- View your data in Ad Charts