Skip to main content

Ad Monetization

Track ad revenue and impressions alongside your subscription data

AIAsk AIChatGPTClaude
⚠️Beta Feature - Opt-in Required

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.

Works Alongside Your Existing Ad Code

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).

📘What is ILRD?

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:

EventDescriptionWhen to Track
Ad LoadedAd successfully loaded from networkAfter successful ad load
Ad DisplayedAd shown to user (impression)When ad appears on screen
Ad OpenedUser clicked/interacted with adWhen user taps ad
Ad RevenueRevenue generated from adWhen mediation platform reports revenue
Ad Failed to LoadAd request failedWhen 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

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.

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:

  1. Navigate to the Ads page in your RevenueCat dashboard
  2. Click the "Sandbox data" toggle
  3. 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
📘Data Processing

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-android 8.0.0+
    • iOS: purchases-ios 5.0.0+ (when available)
  • 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