Ad networks
A playable build profile packages one build per network you tick. Each package is shaped the way that network accepts it, carries that network's ad SDK calls, and is checked against its size cap. There are 17 networks; this page is generated from the packager's own table.
| Network | Package | Size cap | Install button calls |
|---|---|---|---|
| AppLovin | One HTML file | 5 MB | mraid.open with the profile's store URL |
| Unity Ads | One HTML file | 5 MB | mraid.open with the profile's store URL |
| ironSource (LevelPlay) | ZIP | 5 MB | dapi.openStoreUrl() — the destination is set on the campaign |
| Mintegral | ZIP | 5 MB | window.install(), which Mintegral rewrites |
| Meta (Facebook) | ZIP | 5 MB | FbPlayableAd.onCTAClick() — the destination is set on the campaign |
| Moloco | One HTML file | 5 MB | FbPlayableAd.onCTAClick() (Meta's contract) |
| Google Ads (UAC / AdMob) | ZIP | 5 MB | ExitApi.exit() (mraid.open as a fallback) |
| Google Ads (MRAID) | One HTML file | 5 MB | mraid.open |
| TikTok | ZIP | 5 MB | mraid.open |
| Pangle | ZIP | 5 MB | mraid.open |
| Snapchat | ZIP | 5 MB | ScPlayableAd.onCTAClick() — the destination is set in Snap Ads Manager |
| Vungle (Liftoff Monetize) | One HTML file | 5 MB | mraid.open |
| Liftoff | One HTML file | 5 MB | mraid.open |
| Adikteev | ZIP | 5 MB | the AK_CLICK_DESTINATION_URL macro (store URLs as the fallback) |
| Appier | One HTML file | 5 MB | mraid.open |
| Smadex | One HTML file | 5 MB | mraid.open |
| Rubeex | ZIP | 5 MB | mraid.open |
AppLovin
Package: one self-contained HTML file · Size cap: 5 MB · Build id: applovin
Install button: Game.ads.OpenStore() → mraid.open with the profile's store URL.
- One self-contained HTML file; mraid.js is injected by the host.
- No sound before the first tap.
- Store URLs must be set on the profile (iOS + Android).
Unity Ads
Package: one self-contained HTML file · Size cap: 5 MB · Build id: unity
Install button: Game.ads.OpenStore() → mraid.open with the profile's store URL.
- One HTML file; the packager references the host's mraid.js first in <head>.
- Must start only when the ad is viewable — the engine holds the game until then.
- Store URLs required.
ironSource (LevelPlay)
Package: ZIP · Size cap: 5 MB · Build id: ironsource
Install button: Game.ads.OpenStore() → dapi.openStoreUrl() — the destination is set on the campaign.
- ZIP with dapi-ad/index.html, fully inlined.
- Runs on DAPI, not MRAID; the adapter handles it.
- HTTPS-only — nothing external at all.
Mintegral
Package: ZIP · Size cap: 5 MB · Build id: mintegral
Install button: Game.ads.OpenStore() → window.install(), which Mintegral rewrites.
- Must call Game.ads.Finished() when the playable ends (Mintegral's gameEnd is mandatory — the validator rejects builds without it).
- ZIP with mintegral/index.html plus its script file.
- No type="module" / crossorigin scripts (the build already complies).
Meta (Facebook)
Package: ZIP · Size cap: 5 MB · Build id: facebook
Install button: Game.ads.OpenStore() → FbPlayableAd.onCTAClick() — the destination is set on the campaign.
- ZIP, index.html at the root, at most 100 files.
- No network requests of any kind.
- The CTA must come from a user action.
Moloco
Package: one self-contained HTML file · Size cap: 5 MB · Build id: moloco
Install button: Game.ads.OpenStore() → FbPlayableAd.onCTAClick() (Meta's contract).
- One self-contained HTML file.
- No network requests, no mraid.js.
Google Ads (UAC / AdMob)
Package: ZIP · Size cap: 5 MB · Build id: google
Install button: Game.ads.OpenStore() → ExitApi.exit() (mraid.open as a fallback).
- ZIP, index.html at the root, at most 100 files.
- Needs an ad.size meta tag — the packager adds 320×480 when missing.
- Google reviews strictly: no misleading UI, CTA only on user action.
Google Ads (MRAID)
Package: one self-contained HTML file · Size cap: 5 MB · Build id: adwords
Install button: Game.ads.OpenStore() → mraid.open.
- One HTML file; mraid.js injected by the host.
TikTok
Package: ZIP · Size cap: 5 MB · Build id: tiktok
Install button: Game.ads.OpenStore() → mraid.open.
- ZIP with index.html and a config.json declaring orientation (the packager writes it).
- TikTok's CDN SDK is deliberately not loaded — no external requests.
Pangle
Package: ZIP · Size cap: 5 MB · Build id: pangle
Install button: Game.ads.OpenStore() → mraid.open.
- ZIP with index.html and config.json (orientation).
- No external SDK requests.
Snapchat
Package: ZIP · Size cap: 5 MB · Build id: snapchat
Install button: Game.ads.OpenStore() → ScPlayableAd.onCTAClick() — the destination is set in Snap Ads Manager.
- Portrait only — design and test the playable in portrait.
- No mraid.js, no JS redirects, no external HTTP requests, no dynamic asset loading.
Vungle (Liftoff Monetize)
Package: one self-contained HTML file · Size cap: 5 MB · Build id: vungle
Install button: Game.ads.OpenStore() → mraid.open.
- One HTML file; mraid.js injected by the host.
Liftoff
Package: one self-contained HTML file · Size cap: 5 MB · Build id: liftoff
Install button: Game.ads.OpenStore() → mraid.open.
- One HTML file; mraid.js injected by the host.
Adikteev
Package: ZIP · Size cap: 5 MB · Build id: adikteev
Install button: Game.ads.OpenStore() → the AK_CLICK_DESTINATION_URL macro (store URLs as the fallback).
- ZIP with one inlined index.html; the packager stamps the click macros.
Appier
Package: one self-contained HTML file · Size cap: 5 MB · Build id: appier
Install button: Game.ads.OpenStore() → mraid.open.
- One HTML file referencing the host's mraid.js first.
Smadex
Package: one self-contained HTML file · Size cap: 5 MB · Build id: smadex
Install button: Game.ads.OpenStore() → mraid.open.
- One HTML file; mraid.js injected by the host.
Rubeex
Package: ZIP · Size cap: 5 MB · Build id: rubeex
Install button: Game.ads.OpenStore() → mraid.open.
- ZIP with index.html and config.json (orientation).