Ad Network Guide
Playable Ads for Google Ads & AdMob
Google Ads and AdMob give mobile app advertisers access to the largest advertising inventory in the world, spanning Google Search, Google Display Network, YouTube, and the AdMob in-app network. Google's App campaign format consolidates placement across all of these surfaces under a single campaign configuration: machine learning automatically allocates budget toward the placements and audiences most likely to drive installs or in-app events. For gaming advertisers, AdMob's in-app inventory alone covers hundreds of millions of daily active users across Android and iOS globally.
Playable ads on Google use a different technical mechanism than other networks: instead of MRAID, Google provides its own ExitApi (you load exitapi.js in the head and call ExitApi.exit()) which triggers the store redirect when the player taps your CTA. ExitApi.exit() is the exit Google documents, so a creative that only calls mraid.open() has no store exit Google reads, which is why a Google export is not interchangeable with an MRAID network's export. The Playable Ads Maker swaps the CTA call for you when you select the Google preset.
The Playable Ads Maker's Google export is a ZIP with two files at the root: index.html, which loads exitapi.js and carries the ad.orientation meta tag, and main.js, which carries the playable itself with every asset inlined. You then create an App campaign in Google Ads, add a Playable as an asset type, and upload the ZIP. Google places it from there: you do not pick placements or set bids per publisher, and delivery is optimised across Search, Display, YouTube and AdMob at once.
Export specifications
| Specification | Value |
|---|---|
| Accepted format | ZIP |
| Playable Ads Maker exports | ZIP (index.html + main.js) |
| Published size limit | 5 MB |
| Playable Ads Maker builds to | 5 MB |
| MRAID | Not used — ExitApi |
| Store-exit call | ExitApi.exit() |
| External requests | None allowed at runtime |
| Files inside the ZIP | No more than 512 (Google) |
| Supported orientations | Portrait and landscape (ad.orientation meta tag) |
| Networks covered | AdMob, Google Ads App campaigns, Google Display Network |
| Review time estimate | Most ads are reviewed within 1 business day (Google) |
Size, format, MRAID and store-exit rows are taken from Google Ads / AdMob’s own documentation; “Playable Ads Maker builds to” is our exporter’s own target. Every network side by side: playable ad size limits by network.
If you already have a build, drop the ZIP into the free Playable Ad Spec Checker and it will grade it against these Google Ads / AdMob requirements (size, packaging, MRAID and the store-exit call) in your browser, with nothing uploaded.
Check my Google Ads / AdMob playable adHow to upload to Google Ads / AdMob
- Build your playable in the Playable Ads Maker. Google's store exit is ExitApi.exit() rather than MRAID, so the Google / AdMob export is a separate build from the MRAID networks'. Select it rather than reusing another network's file.
- Select the Google / AdMob preset in the Export modal. The exporter automatically replaces mraid.open() with Google's ExitApi.exit(), loads exitapi.js in the head, and generates both index.html and main.js.
- Export to download a ZIP archive. Open it and verify that index.html and main.js are at the root level of the ZIP with no sub-folders containing the main files.
- Verify the .ZIP itself is 5 MB or smaller and holds no more than 512 files. Google states the limit against the .ZIP you upload (About HTML5/Playable ads for App campaigns).
- In Google Ads, create a new App campaign, choose your app from the store, and proceed to the Assets step. Select Upload a new creative and choose Playable as the asset type.
- Upload the ZIP file using the file picker in the Assets step. Google's validator analyses the ZIP structure and checks for the ExitApi call. Any validation error will display inline with specific guidance.
- Complete the campaign configuration (budget, bidding strategy, geo targeting) and submit for review. Google will notify you via email and dashboard alert when the playable is approved.
File size tip
Google Ads / AdMob publishes a limit of 5 MB; Playable Ads Maker builds Google Ads / AdMob exports to 5 MB. If your export is too large, reduce image resolution, switch to WebP at 75–80% quality, or trim animation frame counts in the Playable Ads Maker Export modal. The live size estimate updates as you adjust each setting.
Tips for Google Ads / AdMob playable ads
ExitApi.exit() does nothing outside Google's container, and that is expected
The exported bundle loads Google's exitapi.js from tpc.googlesyndication.com, so opening index.html in a browser for final QA does define ExitApi and the CTA tap raises no error. It goes nowhere, because the store redirect only happens inside Google's ad container. A silent CTA in Chrome is therefore not a bug and needs no stub; what you should check locally is that the tap is registered and the End Card behaves, and leave the destination to Google.
Let Google's ML choose placements rather than restricting them
Google App campaigns are designed for full automation. The algorithm decides in real time whether your playable should run on AdMob, Display Network, or YouTube based on which placement gives the highest probability of your chosen conversion event. Restricting placements manually typically reduces ML signal and increases your effective CPI. Start with all placements enabled, monitor performance by channel in the campaign report after one week, and only exclude specific placements if a channel is performing significantly below your CPA threshold.
Keep the ZIP structure flat, with no nested asset folders
Google measures the .ZIP and allows no more than 512 files inside it, and a ZIP that wraps its entry file in a folder is a common cause of a confusing upload error. The Playable Ads Maker inlines every asset into main.js as data URIs, so the exported ZIP is two files at the root (index.html and main.js) and nowhere near the file-count limit. If you modify the HTML after export, double-check that you have not added any external asset references.
Playable Ads Maker does the Google Ads / AdMob packaging (ZIP (index.html + main.js)), wires the ExitApi.exit() store exit and inlines every asset when you export.
Build your playable ad