Thinking · Newsletter
How do I make a playable ad that improves install rate on AppLovin?
Build one HTML file under 5 MB that opens on your core mechanic and never sends the first tap to the store, then read it on IPM. AppLovin's spec, events and steps.
TL;DR. Make the playable one self-contained HTML file of 5 MB or less that opens on your core mechanic, lets the viewer do one thing and feel the payoff within seconds, and only then asks for the install, built to AppLovin's spec (MRAID v2.0, both orientations, no store redirect on the first tap). Then judge it on installs per thousand impressions (IPM) in a creative set beside your video, and use AppLovin's built-in playable events to see where viewers drop out. AppLovin's own guidance is that playable ads "should showcase the key features of your app", which it says "attracts high-value, more engaged users". The rest is cutting everything that stands between the first tap and that feature.
What "install rate" means for a playable
The number to move is IPM. Unity defines it as "the number of app installs per thousand ad impressions". A playable that turns more of the same impressions into installs lowers your cost per install at the same spend, which is the argument in how to lower CPI on AppLovin without cutting spend.
CTA taps are not the same thing. We read them as a diagnostic and IPM as the result.
How to make a playable ad that improves install rate on AppLovin
- Pick one moment from the core loop. Not a tour of the game: the single beat that makes someone say "oh, I get it". Our rule of thumb is one interaction, one mechanic, no tutorial screen, which we argue in playables: the shortest possible version wins. And keep it the real game: a playable that plays better than the game buys installs that churn, as our playable ads guide explains.
- Open on a state the viewer can act on. Unity's playable guidance (written for Unity Ads, but the logic is the same) says to "Open your playable on a state the player can act on right away" and to "Avoid logos, studio splashes, and cinematic intros." Teach with one visual hint, such as a pulsing hand, then remove it.
- Build to AppLovin's HTML spec from day one. One HTML file, 5 MB or smaller, every resource embedded in base64 or base122, no external network calls. It must work in portrait and landscape, support MRAID v2.0, wait for the MRAID ready event before any MRAID call, and use
mraid.open()for the click-through. - Never send the first tap to the store. AppLovin requires that each ad "must be playable and must not redirect to app stores on the first tap/click", and must not auto-click. The ad timer must start only after the first interaction, and audio stays muted until then. In our view a visible install button is fine, as long as the first tap is gameplay.
- End inside the playable on an end card that repeats the promise. Show the board, the result or the character the viewer just played with, one verb-led button, and nothing that imitates system UI (Unity's guidance warns against "fake close buttons or fake system UI"). How to vary and test the card is in our end cards guide.
- Instrument it with AppLovin's playable events. Wrap each call in AppLovin's safety check and fire the predefined events:
DISPLAYED(required), then the challenge events,ENDCARD_SHOWNandCTA_CLICKED. AppLovin does not track custom event names. - Preview on AppLovin and on a real phone. AppLovin points advertisers to its Playable Preview page to test the file. Unity's checklist adds a useful bar: the playable "loads and reaches the first interaction in less than 2 s on a mid-tier device".
- Ship it in a creative set beside video and images, then test one variable. A creative set combines video, HTML and image assets, up to 10 files per asset type, and AppLovin recommends "a mix of video, playable, and static assets". Our first test is always the same playable with and without the tutorial, read on IPM.
The spec at a glance
| Requirement | AppLovin's rule |
|---|---|
| File | Single HTML file, 5 MB or smaller |
| Assets | Embedded in base64 or base122; external resources prohibited |
| Network | External network calls prohibited |
| Orientation | Must work in landscape and portrait |
| MRAID | Must support MRAID v2.0; wait for ready before MRAID calls |
| Click-through | mraid.open() |
| First tap | Must not redirect to app stores |
| Timer and audio | Start only after the first user interaction |
| WebGL | Provide a UI fallback if initialisation fails or the context is lost |
Get any of these wrong and the problem is not install rate. AppLovin warns that if click-through does not use mraid.open(), "click-through fails and your campaign performance may be negatively impacted for serving broken HTML files."
Reading where the playable loses people
AppLovin's analytics give you a funnel inside the ad. The events run in a recommended order: LOADING and LOADED (optional), DISPLAYED, then CHALLENGE_STARTED, the optional CHALLENGE_PASS_25, _50 and _75 milestones, CHALLENGE_SOLVED, then ENDCARD_SHOWN and CTA_CLICKED. AppLovin notes that CTA_CLICKED "can happen any time after DISPLAYED, not necessarily after ENDCARD_SHOWN", so a button visible from the start still reports.
This is how we read the gaps. It is our diagnostic, not AppLovin's.
| Where the drop is | What it usually means | First fix |
|---|---|---|
| Displayed, but few challenges started | The opening frame is not obviously playable | Start mid-action, one hint, cut the intro |
| Started, but few reach the 50 or 75 percent marks | The loop is too long or too hard | Cut to the payoff; remove the fail path |
| Solved, but few end card views or CTA taps | The ending does not land | Rebuild the end card around the reward |
| Many CTA taps, low IPM | The ad promised something the store page or game does not deliver | Match the store page to the ad |
One caveat from AppLovin's own documentation: it says not to integrate analytics into short HTML experiences, defined as those "with fewer than three interactions to complete" or that "redirect in less than five seconds from the first interaction". If you build the very short version we recommend, skip the events and judge it on IPM against your video. On AppLovin you can also send the playable to a custom product page or custom store listing at the creative-set level, which helps with the last row.
Where Flixr fits
We make playables and end cards in house from the same brief as the video, and run and read them in clients' AppLovin accounts, so the build and the IPM read sit with one team.
Questions people ask
What is the file size limit for an AppLovin playable ad? 5 MB. AppLovin requires a single HTML file with all resources embedded in base64 or base122, and prohibits external resources and external network calls.
Which MRAID version does AppLovin require for playables? AppLovin's creative specs say HTML ads must support MRAID v2.0. They also say to wait for the ready event, or confirm mraid.getState() is not 'loading', before calling any MRAID API.
How long should a playable ad be on AppLovin? AppLovin's creative specs do not set a playable length; they require only that the ad loads and becomes interactive "in a reasonable time frame". Our rule of thumb is one interaction and its payoff, then the end card.
Can my playable show an install button from the start? Yes, in our reading, as long as the first tap does not send the viewer to the store, which AppLovin prohibits. AppLovin's own analytics allow for it: a CTA tap can be logged any time after the ad is displayed.
Do playable ads get a better install rate than video on AppLovin? AppLovin does not publish a comparison, and we have not found a credible public one. AppLovin says the majority of its inventory is video-based and recommends a mix of video, playable and static assets, so test the playable inside the same creative set as your video and compare IPM.
Sources: AppLovin Support Center, "Creative specs & guidelines"; AppLovin Support Center, "HTML analytics integration"; AppLovin Support Center, "Scale your campaign"; AppLovin Support Center, "How to create creative sets"; Unity, "Playable best practices"; Unity, "Installs per mille".