---
id: "ad-monetization/admob"
title: "AdMob SDK integration"
description: "The RevenueCat AdMob integration provides helper methods that wrap standard AdMob ad loading calls. Use loadAndTrack methods to automatically track all ad events across every major AdMob format — Banner, Interstitial, Rewarded, Rewarded Interstitial, App Open, and Native."
permalink: "/docs/ad-monetization/admob"
slug: "admob"
version: "current"
original_source: "docs/ad-monetization/admob.mdx"
---

The RevenueCat AdMob integration provides helper methods that wrap standard AdMob ad loading calls. Use `loadAndTrack` methods to automatically track all ad events across every major AdMob format — Banner, Interstitial, Rewarded, Rewarded Interstitial, App Open, and Native.

:::info 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.
:::

**Before integrating, [install the AdMob Adapter SDK](/getting-started/adapter-sdks/admob) and complete the required AdMob configuration.** Requires `purchases-ios` 5.0+ (iOS 15+) or `purchases-android` 8.0+, plus the Google Mobile Ads SDK.

The `loadAndTrack` methods automatically track the following events, captured from AdMob's callbacks with no additional code required:

- **Ad Loaded** — Ad successfully loads
- **Ad Displayed** — Ad impression is recorded
- **Ad Opened** — Customer clicks the ad
- **Ad Revenue** — Ad generates revenue (via AdMob's paid event handler)
- **Ad Failed to Load** — Ad fails to load

## Quick start

### 1. Import the module

*Interactive content is available in the web version of this doc.*

These APIs are experimental and require explicit opt-in. iOS opts in through the `@_spi(Experimental)` attribute on the import (shown above). On Android, annotate each class or function that calls `loadAndTrack` with `@OptIn(ExperimentalPreviewRevenueCatPurchasesAPI::class)`, as shown in the examples below.

### 2. Replace load calls with `loadAndTrack`

Replace standard AdMob load calls with `loadAndTrack` methods:

*Interactive content is available in the web version of this doc.*

## Implementation examples

### Banner ads

*Interactive content is available in the web version of this doc.*

### Interstitial ads

*Interactive content is available in the web version of this doc.*

### Rewarded ads

*Interactive content is available in the web version of this doc.*

### Rewarded interstitial ads

*Interactive content is available in the web version of this doc.*

### App open ads

*Interactive content is available in the web version of this doc.*

### Native ads

*Interactive content is available in the web version of this doc.*

## Placement parameter

The `placement` parameter identifies where ads appear in your app and is used for reporting and segmentation in [Ad Charts](/dashboard-and-metrics/charts/ads).

Use consistent, descriptive names like `"home_banner"` or `"level_complete_interstitial"`. Avoid dynamic values or timestamps.

### Show-time placement override

For full-screen ads, you can set the placement when showing the ad instead of at load time. This is useful when you preload an ad before knowing where it will be shown:

*Interactive content is available in the web version of this doc.*

The show-time placement applies to **Ad Displayed**, **Ad Opened**, and **Ad Revenue** events. **Ad Loaded** and **Ad Failed to Load** always use the load-time placement.

## Optional parameters and callbacks

Beyond `placement`, all `loadAndTrack` methods accept optional parameters — a load completion/callback, a full-screen content delegate/callback, and a paid-event handler/listener:

*Interactive content is available in the web version of this doc.*

RevenueCat wraps your full-screen content delegate (iOS) or callback (Android) at load time to add tracking before forwarding events to your handlers. If you need to set or change it after loading, use the tracking-aware setter instead of assigning it directly:

*Interactive content is available in the web version of this doc.*

The tracking-aware setter — `setTrackingFullScreenContentDelegate` on iOS and `setTrackingFullScreenContentCallback` on Android — is available on all full-screen ad types: `InterstitialAd`, `AppOpenAd`, `RewardedAd`, and `RewardedInterstitialAd`.

The delegate/callback parameter on `loadAndTrack` methods is optional and defaults to none, so you can omit it at load time and set it later with the tracking-aware setter.

## Troubleshooting

### Testing your integration

Before troubleshooting, verify your events are being tracked:

1. Run your app in **debug mode**
2. Navigate to the **Ads page** in your RevenueCat dashboard
3. Toggle on **"Sandbox data"**
4. Trigger some ads in your app
5. Check that events appear in the sandbox events table

Events from debug builds are automatically marked as sandbox. This lets you verify your integration without affecting production data.

**Note on event timing:** Ad events are not synced to the dashboard in real-time. The SDK batches and sends events periodically. If you've triggered several ads and don't see events immediately, try putting your app in the background and bringing it back to the foreground to trigger a sync. This is normal behavior and doesn't indicate an integration issue.

### Events not appearing in charts

1. Verify that **"Impression-level ad revenue"** is enabled in your AdMob account ([instructions](https://support.google.com/admob/answer/11322405))
2. Verify you've opted in via the Ads page in your RevenueCat dashboard
3. Check that you're using `loadAndTrack` methods (not standard AdMob methods)
4. Ensure `placement` parameter is provided
5. Verify ads are actually loading and showing (check AdMob callbacks)
6. Use the sandbox data view (above) to confirm events are being received

### Compilation errors

Make sure you've added the experimental opt-in — the `@_spi(Experimental)` import on iOS, or the `@OptIn` annotation on Android:

*Interactive content is available in the web version of this doc.*

## Next steps

- Explore the example projects: [iOS](https://github.com/RevenueCat/purchases-ios-admob/tree/main/Examples/AdMobIntegrationSample) and [Android](https://github.com/RevenueCat/purchases-android/tree/main/examples/admob-sample)
- View your ad data in [Ad Charts](/dashboard-and-metrics/charts/ads), and see the [Ad Monetization overview](/ad-monetization#data-availability) for where it appears across the dashboard
- [Connect your Google AdMob account](/integrations/third-party-integrations/google-admob) to sync ad unit names for more readable charts — no code changes required
- Learn about [Manual Integration](/ad-monetization/manual-integration) for other mediation platforms
