Documentation Index
Fetch the complete documentation index at: https://mintlify.com/admob-plus/admob-plus/llms.txt
Use this file to discover all available pages before exploring further.
Overview
AdMob Plus provides a comprehensive event system to track ad lifecycle and user interactions. Events allow you to respond to ad loading, showing, dismissal, clicks, and more.
Event System
There are two ways to listen for ad events:
- Global events - Listen to all ad events using
document.addEventListener()
- Ad-specific events - Listen to events for a specific ad instance using
ad.on()
Global Events
All AdMob events are fired as document events and can be listened to globally.
Available Events
The Events enum defines all available event names:
admob.Events.ready // 'admob.ready'
admob.Events.adClick // 'admob.ad.click'
admob.Events.adDismiss // 'admob.ad.dismiss'
admob.Events.adImpression // 'admob.ad.impression'
admob.Events.adLoad // 'admob.ad.load'
admob.Events.adLoadFail // 'admob.ad.loadfail'
admob.Events.adReward // 'admob.ad.reward'
admob.Events.adShow // 'admob.ad.show'
admob.Events.adShowFail // 'admob.ad.showfail'
admob.Events.bannerSize // 'admob.banner.size'
Listening to Global Events
Use document.addEventListener() to listen to all ad events:
// Listen to all ad load events
document.addEventListener('admob.ad.load', (event) => {
console.log('Ad loaded:', event.ad.adUnitId);
}, false);
// Listen to all ad dismiss events
document.addEventListener('admob.ad.dismiss', (event) => {
console.log('Ad dismissed:', event.ad.id);
}, false);
// Using Events enum (recommended)
document.addEventListener(admob.Events.adClick, (event) => {
console.log('Ad clicked:', event.ad.adUnitId);
}, false);
Event Object Properties
All events include these common properties:
The ad instance that triggered the event. Access properties like ad.id and ad.adUnitId.
The unique identifier for the ad instance.
The event type (e.g., ‘admob.ad.load’).
Ad-Specific Events
Listen to events for a specific ad instance using the on() method:
const banner = new admob.BannerAd({
adUnitId: 'ca-app-pub-3940256099942544/6300978111',
});
// Listen to load event for this specific banner
const unsubscribe = banner.on('load', (event) => {
console.log('Banner loaded:', event.ad.id);
});
// Unsubscribe when no longer needed
unsubscribe();
Event Listener Return Value
The on() method returns an unsubscribe function:
const interstitial = new admob.InterstitialAd({
adUnitId: 'ca-app-pub-3940256099942544/1033173712',
});
const unsubscribe = interstitial.on('dismiss', () => {
console.log('Interstitial dismissed');
});
// Automatically unsubscribe after 60 seconds
setTimeout(() => {
console.log('Unsubscribing from event');
unsubscribe();
}, 60 * 1000);
Event Reference
ready
Event: admob.ready
Fired when the AdMob SDK is ready to use.
document.addEventListener(admob.Events.ready, () => {
console.log('AdMob SDK ready');
}, false);
adLoad
Event: admob.ad.load
Fired when an ad successfully loads.
const banner = new admob.BannerAd({
adUnitId: 'ca-app-pub-3940256099942544/6300978111',
});
banner.on('load', (event) => {
console.log('Ad loaded:', event.ad.adUnitId);
});
await banner.show();
adLoadFail
Event: admob.ad.loadfail
Fired when an ad fails to load.
interstitial.on('loadfail', (event) => {
console.error('Ad failed to load:', event.error);
});
adShow
Event: admob.ad.show
Fired when an ad is shown to the user.
interstitial.on('show', (event) => {
console.log('Ad shown:', event.ad.id);
});
adShowFail
Event: admob.ad.showfail
Fired when an ad fails to show.
rewarded.on('showfail', (event) => {
console.error('Ad failed to show:', event.error);
});
adClick
Event: admob.ad.click
Fired when a user clicks on an ad.
banner.on('click', (event) => {
console.log('User clicked ad:', event.ad.adUnitId);
});
adImpression
Event: admob.ad.impression
Fired when an ad impression is recorded.
banner.on('impression', (event) => {
console.log('Ad impression recorded:', event.ad.id);
});
adDismiss
Event: admob.ad.dismiss
Fired when a user dismisses an ad.
const interstitial = new admob.InterstitialAd({
adUnitId: 'ca-app-pub-3940256099942544/1033173712',
});
interstitial.on('dismiss', (event) => {
console.log('Ad dismissed:', event.ad.id);
// Load next ad or continue app flow
});
await interstitial.load();
await interstitial.show();
adReward
Event: admob.ad.reward
Fired when a user earns a reward from a rewarded ad.
const rewarded = new admob.RewardedAd({
adUnitId: 'ca-app-pub-3940256099942544/5224354917',
});
rewarded.on('reward', (event) => {
const { reward } = event;
console.log(`User earned reward: ${reward.amount} ${reward.type}`);
// Grant the reward to the user
});
await rewarded.load();
await rewarded.show();
Reward object properties:
amount (number) - The reward amount
type (string) - The reward type (e.g., “coins”, “gems”)
bannerSize
Event: admob.banner.size
Fired when a banner ad’s size changes (useful for adaptive banners).
const banner = new admob.BannerAd({
adUnitId: 'ca-app-pub-3940256099942544/6300978111',
size: { adaptive: 'anchored' },
});
banner.on(admob.Events.bannerSize, (event) => {
console.log(`Banner size: ${event.width}x${event.height}`);
});
await banner.show();
Complete Examples
Interstitial with Full Event Handling
function showInterstitial() {
const interstitial = new admob.InterstitialAd({
adUnitId: 'ca-app-pub-3940256099942544/1033173712',
});
// Track loading
interstitial.on('load', () => {
console.log('Interstitial loaded successfully');
});
interstitial.on('loadfail', (event) => {
console.error('Failed to load interstitial:', event.error);
});
// Track showing
interstitial.on('show', () => {
console.log('Interstitial shown to user');
});
interstitial.on('showfail', (event) => {
console.error('Failed to show interstitial:', event.error);
});
// Track user interaction
interstitial.on('click', () => {
console.log('User clicked interstitial');
});
interstitial.on('impression', () => {
console.log('Interstitial impression recorded');
});
interstitial.on('dismiss', () => {
console.log('Interstitial dismissed');
// Resume game or continue app flow
});
// Load and show
interstitial.load().then(() => interstitial.show());
}
Rewarded Ad with Reward Handling
function showRewardedAd() {
const rewarded = new admob.RewardedAd({
adUnitId: 'ca-app-pub-3940256099942544/5224354917',
});
let rewardEarned = false;
// Handle reward
rewarded.on('reward', (event) => {
rewardEarned = true;
const { reward } = event;
console.log(`User earned: ${reward.amount} ${reward.type}`);
// Grant reward to user
grantReward(reward.amount, reward.type);
});
// Handle dismissal
rewarded.on('dismiss', () => {
if (rewardEarned) {
console.log('User watched ad and earned reward');
} else {
console.log('User closed ad before completing');
}
});
// Handle errors
rewarded.on('loadfail', (event) => {
console.error('Failed to load rewarded ad:', event.error);
showRewardUnavailableMessage();
});
rewarded.on('showfail', (event) => {
console.error('Failed to show rewarded ad:', event.error);
});
// Load and show
rewarded.load().then(() => rewarded.show());
}
function grantReward(amount, type) {
// Your reward granting logic
console.log(`Granting ${amount} ${type} to user`);
}
Banner with Size Tracking
const banner = new admob.BannerAd({
adUnitId: 'ca-app-pub-3940256099942544/6300978111',
size: { adaptive: 'anchored' },
position: 'bottom',
});
// Track banner size for layout adjustments
banner.on(admob.Events.bannerSize, (event) => {
const { width, height } = event;
console.log(`Banner size: ${width}x${height}`);
// Adjust your app layout
adjustContentMargin(height);
});
banner.on('load', () => {
console.log('Banner loaded');
});
banner.on('loadfail', (event) => {
console.error('Banner failed to load:', event.error);
});
banner.show();
function adjustContentMargin(bannerHeight) {
document.getElementById('content').style.marginBottom = `${bannerHeight}px`;
}
Global Event Monitoring
// Monitor all ad events globally for analytics
const eventHandlers = {
[admob.Events.adLoad]: (event) => {
analytics.track('Ad Loaded', { adId: event.ad.id });
},
[admob.Events.adLoadFail]: (event) => {
analytics.track('Ad Load Failed', { adId: event.ad.id, error: event.error });
},
[admob.Events.adShow]: (event) => {
analytics.track('Ad Shown', { adId: event.ad.id });
},
[admob.Events.adClick]: (event) => {
analytics.track('Ad Clicked', { adId: event.ad.id });
},
[admob.Events.adImpression]: (event) => {
analytics.track('Ad Impression', { adId: event.ad.id });
},
[admob.Events.adDismiss]: (event) => {
analytics.track('Ad Dismissed', { adId: event.ad.id });
},
[admob.Events.adReward]: (event) => {
analytics.track('Ad Reward Earned', {
adId: event.ad.id,
amount: event.reward.amount,
type: event.reward.type,
});
},
};
// Register all event handlers
Object.entries(eventHandlers).forEach(([eventName, handler]) => {
document.addEventListener(eventName, handler, false);
});
Best Practices
Use ad-specific events (ad.on()) when you only care about events from a specific ad instance.
Use global events (document.addEventListener()) for analytics, logging, or handling events from all ads uniformly.
Always handle loadfail and showfail events to gracefully handle ad errors.
The dismiss event is your signal to continue app flow or load the next ad.
Remember to unsubscribe from events when they’re no longer needed to prevent memory leaks.