In-App Ads (IAA)
Updated: Mar 3, 2026
Copy for LLM
In-App Advertising lets you earn revenue by displaying Facebook Audience Network ads within your Instant Game.
How Ad Revenue Works
When you show an ad in your game, advertisers pay Facebook to reach your players. You receive a share of that advertising revenue. The amount you earn depends on several factors:
eCPM (Effective Cost Per Mille)
eCPM is the amount you earn per 1,000 ad impressions. It is the primary metric for measuring ad revenue performance. eCPM varies based on:
- Ad format: Rewarded ads typically have the highest eCPM, followed by interstitials, then banners.
- Geography: Players in tier 1 markets (US, UK, Western Europe, Australia, Japan) generate significantly higher eCPMs than players in tier 2/3 markets (Southeast Asia, Latin America, Africa).
- Seasonality: eCPMs tend to be higher during Q4 (October-December) due to holiday advertising budgets and lower during Q1 (January-March).
- Player demographics: Factors like age, interests, and purchase history affect how much advertisers are willing to pay.
Fill Rate
Fill rate is the percentage of ad requests that are successfully filled with an ad. A 100% fill rate means every time you request an ad, one is available. In practice, fill rates are typically 90-99% for major markets and may be lower in smaller markets.
If an ad request is not filled, no ad is shown and no revenue is earned. Your game should handle the
ADS_NO_FILL error gracefully — simply try again later.Revenue Formula
Your ad revenue is calculated as:
Daily Ad Revenue = (Impressions / 1,000) x eCPM
For example, if your game shows 10,000 interstitial ad impressions per day at an eCPM of $8.00, your daily ad revenue is:
(10,000 / 1,000) x $8.00 = $80.00 per day
Supported Ad Formats
Instant Games support three ad formats, each suited to different moments in the player experience:
| Format | Description | Best For | Typical eCPM |
|---|---|---|---|
Small rectangular ads displayed at the top or bottom of the screen. Non-intrusive; can be shown alongside gameplay during non-critical moments. | Menu screens, loading screens, level select, leaderboards | Low | |
Full-screen ads that cover the entire game view. Shown at natural transition points. Player must wait for the ad to finish or dismiss it. | Between levels, after game over, during screen transitions | Medium | |
Full-screen video or interactive ads that players choose to watch in exchange for an in-game reward. The most player-friendly ad format. | Extra lives, bonus currency, score multipliers, hints, continue after game over | High |
Choosing the Right Format
Most successful games use all three formats strategically:
- Banners provide steady, passive revenue during low-attention moments.
- Interstitials generate meaningful revenue at natural breaks without requiring player opt-in.
- Rewarded ads generate the highest per-impression revenue and the best player experience because players actively choose to watch them.
Setting Up Audience Network
Before you can show ads in your game, you need to create ad placement IDs in the Monetization Manager.
Step 1: Enable Audience Network
- Go to the Monetization Manager (also accessible from the App Dashboard under Monetization).
- Select your app or add it if it is not listed.
- Complete the Audience Network onboarding process, including agreeing to the terms and configuring your payout settings.
Step 2: Create Placement IDs
For each ad format you want to use, you need to create a placement:
- In Monetization Manager, go to Placements.
- Click Create Placement.
- Select the platform (Instant Games).
- Choose the ad format (Banner, Interstitial, or Rewarded Video).
- Give the placement a descriptive name (e.g., “Main Menu Banner”, “Level Complete Interstitial”, “Extra Life Rewarded Video”).
- Configure any format-specific settings.
- Save the placement and note the Placement ID — you will need this in your SDK integration.
You can create multiple placements for the same format to track performance in different locations within your game. For example, you might have separate interstitial placements for “between levels” and “after game over” to see which performs better.
Step 3: Note Your Placement IDs
Placement IDs follow the format:
YOUR_APP_ID_PLACEMENT_NAME (e.g., 123456789_banner_menu). You will pass this ID to the SDK when creating ad instances.General SDK Integration Pattern
All three ad formats follow the same general pattern:
- Create an ad instance using the placement ID.
- Preload the ad so it is ready to display immediately when needed.
- Show the ad when the appropriate moment occurs.
- Re-preload the next ad for future use.
Here is the general pattern (specific details vary by format — see the individual format guides):
var adInstance = null; // Step 1: Create an ad instance FBInstant.getInterstitialAdAsync('YOUR_PLACEMENT_ID') .then(function (interstitial) { adInstance = interstitial; // Step 2: Preload the ad return adInstance.loadAsync(); }) .then(function () { console.log('Ad preloaded and ready to show.'); }) .catch(function (error) { console.error('Failed to load ad:', error.code, error.message); }); // Step 3: Show the ad when the time is right function showAd() { if (adInstance) { adInstance.showAsync() .then(function () { console.log('Ad shown successfully.'); // Step 4: Preload the next ad preloadNextAd(); }) .catch(function (error) { console.error('Failed to show ad:', error.code, error.message); }); } }
Preloading Best Practices
- Preload early. Start preloading ads as soon as your game initializes, not when you are ready to show them. Ads take time to load (especially video ads), and you want them ready the instant you need them.
- Preload the next ad immediately after showing one. Once an ad instance has been shown, it cannot be reused. Create and preload a new instance right away.
- Handle preload failures gracefully. If preloading fails (e.g., no fill), retry after a delay. Do not block the player experience.
Facebook Audience Network uses a revenue share model. The standard revenue share for Instant Games ad revenue is approximately 70/30 — you receive approximately 70% of the net ad revenue and Facebook retains approximately 30%. The exact share may vary based on your agreement and market.
Payout
Ad revenue is paid out on a monthly basis through the payout account you configured in Monetization Manager. You can view your ad revenue, impressions, eCPM, and other metrics in the Monetization Manager dashboard.
Common Errors
When working with ads, you may encounter these error codes:
| Error Code | Meaning | Recommended Action |
|---|---|---|
ADS_NO_FILL | No ad is available to show right now. | Retry after a delay (e.g., 30-60 seconds). This is normal, especially in low-demand markets. |
ADS_FREQUENT_LOAD | You are requesting ads too quickly. | Wait at least 30 seconds between load requests for the same placement. |
ADS_TOO_MANY_INSTANCES | You have created too many ad instances. | Limit the number of concurrent ad instances. Typically, one instance per placement is sufficient. |
CLIENT_UNSUPPORTED | The current client does not support this ad format. | Hide the ad trigger and do not attempt to show ads. |
INVALID_PARAM | The placement ID is invalid. | Verify your placement ID matches what is configured in Monetization Manager. |
NETWORK_FAILURE | A network error prevented the ad from loading. | Retry after a delay. |
Ad Format Guides
For detailed integration instructions and code examples for each format, see:
- Banner Ads — Small, non-intrusive ads for menus and non-gameplay screens.
- Interstitial Ads — Full-screen ads shown at natural transition points.
- Rewarded Ads — Player-opted ads that grant in-game rewards. The highest-earning and most player-friendly format.
Next Steps
- Monetization Best Practices — Strategic guidance on ad placement, frequency, format selection, and combining ads with IAP.
- In-App Purchases — Set up direct purchases alongside ads for a hybrid monetization model.
- SDK Reference — Complete API documentation for all ad-related methods.