Playable Ads — A new ad format for Meta

I started this with one engineer, no PM, and no roadmap slot, and shipped it across Facebook and Instagram. For years, Meta couldn't make playable ads work, while competitors built entire businesses on the format and pulled away the app and gaming budgets that used to be Meta's.

Impact
All formats
Live on every Meta placement: Feed, Stories & Reels on Facebook & Instagram
$200k+Daily
Ad spend after launch
78%
Campaigns beat video on purchases & retention
2 → Team
A two-person experiment became a funded team in App & Gaming Monetization
The Format

A playable ad is a short, interactive demo of an app. Tap "Try demo" on a video ad, and you're playing the app before you decide to install.

It's one of the strongest formats in mobile advertising, and the biggest gap in Meta's ad lineup when I started.

Pre-click video ad with Try Demo CTA on Instagram Reels, and the post-click HTML playable experience with Install Now

Losing Ground to Competition

People don't install an app they've never tried. High-intent users tap "Install now," but a larger group sits on the fence: they'd convert if they could try the app first. User interviews backed this up, people were open to trying apps right inside Instagram.

Competitors had already built businesses on that behaviour. Playables make up 70–100% of spend on AppLovin's platform, and that format kept pulling app and gaming budgets away from Meta. Meta had tried playables back in 2017 and never scaled them.

AppLovin's 3-step flow vs Meta's old single-CTA approach

AppLovin's three-step funnel: video ad, playable demo, install. Meta's equivalent at the time was a single "Install now" CTA with no demo path.

21% 13.6%

Gaming's share of Meta's app ad revenue, lost in two years. Playables were the format to regain it.

Single CTA drop-off diagram: annotated conversion leak

The single-CTA drop-off diagram. Replacing "Install now" with "Try demo" removed the direct install path and added multiple new exit points.

Meta's previous attempt replaced "Install now" with a single "Try demo" CTA. It cannibalized direct conversions: a video ad has one path to the App Store, and a playable with only a demo CTA removed that direct path while adding multiple new drop-off points.

The design challenge was serving both user groups in the same ad unit without killing either path. And doing it on Instagram, a platform that had never supported the format and was protective of every pixel in the feed.

Designing for Two User Groups

Proving it could work

It started from zero: just me and one engineering partner, running a baseline test on Facebook Feed. I scoped it end to end. The test ran the old single-CTA format, and in most campaigns it didn't perform as well as video on installs. Deeper in the funnel it flipped: on purchases and retention, playables beat video. People who tried the demo first installed with more conviction, and stuck around longer.

A quick early prototype used to pitch the format to leadership

Initial experiment on Facebook Feed.

That was the evidence, but I didn't pitch it with a deck. I built a quick, working prototype. Rough, but functional enough to show in context. A ten-second demo communicated the concept faster than any document could. Leadership got it immediately, and the conversation went from "explain this format" to "when can we test it."

Two user groups, one ad unit

The same test explained the install gap: users with high intent just wanted to go straight to the download, and a single "Try demo" CTA stood in their way. So the design had to serve both intents at once: "Install now" for users ready to convert, "Try demo" for the ones who wanted to play first. No model for showing both existed on Instagram, so I designed five concepts for how it could work on Reels.

I weighed a range of concepts against four trade-offs: discoverability, disruption, nativity, and complexity.

Discoverability
It's a new feature, so how easily will users actually notice and find it?
Disruption
Does it grab attention and interrupt the feed? On Instagram it has to stay subtle.
Nativity
Does Instagram already have this interaction pattern, or is it something new?
Complexity
How much new engineering lift does it take to build and ship?
Click any concept to explore its prototype
Discoverability
Depending on how the intent model works, some users may not see playables
Somewhat subtle placement, may be missed
Different intent groups can still see the secondary CTA
Appears around 8 seconds into the video
Forces interaction with the playable CTA until SKOverlay appears
Disruption
No UI changes
No changes to the existing Reels format
No changes to the existing Reels format
Uses the same mid-scene interaction model
Disrupts the user with SKOverlay
Nativity
No UI changes
A pattern tested in the past
A pattern tested in the past
Uses the familiar mid-scene pattern
SKOverlay is a known pattern
Complexity
New pattern. Switching CTAs on a Reel adds eng work
Introduces the pill system for the "offsite" click
The ranking model could take extra time to implement
New design pattern in mid-scene with an extra button
iOS only
Concept 1

Ranking

Rank either play or install based on user intent.

Risk: relying on the ranking model. Can we actually achieve this?

DiscoverabilityDepending on how the intent model works, some users may not see playables
DisruptionNo UI changes
NativityNo UI changes
ComplexityNew pattern. Switching CTAs on a Reel adds eng work

High intent → Install now CTA

Low intent → Try demo CTA → App Store

Concept 2

Attribution pill

Use the attribution pill row, adding a "Try demo" pill beside the sponsored pill.

DiscoverabilitySomewhat subtle placement, may be missed
DisruptionNo changes to the existing Reels format
NativityA pattern tested in the past
ComplexityIntroduces the pill system for the "offsite" click

Attribution pill on the Reel

Concept 3

Attribution pill with intent ranking ★ Worth testing

Use the attribution pill row with a "Try demo" pill, then add intent ranking. Users with high intent see the Install CTA with a demo pill; users with low intent see the inverse.

DiscoverabilityDifferent intent groups can still see the secondary CTA
DisruptionNo changes to the existing Reels format
NativityA pattern tested in the past
ComplexityThe ranking model could take extra time to implement

High intent → CTA Install, pill Demo

Low intent → CTA Demo, pill Install

Concept 4

Mid-Scene ★ Recommended

Using the new mid-scene pattern, surface a "Try demo" pill alongside the standard Install now CTA as the core CTA.

DiscoverabilityAppears around 8 seconds into the video
DisruptionUses the same mid-scene interaction model
NativityUses the familiar mid-scene pattern
ComplexityNew design pattern in mid-scene with an extra button

Mid-scene dual CTA

Concept 5

SK Overlay

The CTA stays "Try demo", but SKOverlay appears on dwell to drive the install.

DiscoverabilityForces interaction with the playable CTA until SKOverlay appears
DisruptionDisrupts the user with SKOverlay
NativitySKOverlay is a known pattern
ComplexityiOS only

SKOverlay install

I fought for the mid-scene overlay. Getting a new CTA pattern onto Reels meant a rigorous review, so I anchored the conversation with aggressive concepts first (playables on impression, full-surface takeovers), then presented mid-scene as the measured alternative. It worked.

Different mid-scene dual CTA patterns explored for Reels

Different variants of the dual CTA in mid-scene.

Single CTA control vs the dual-CTA design that shipped, mobile screens compared

Before and after. Left: the single-CTA control that removed the install path. Right: the dual-CTA design we took live, keeping both options in one ad unit.

From Experiment to Platform

Shipping meant winning a separate design review for every surface across both apps, working with each format owner in turn. iOS and Android each needed their own solution.

End-to-end happy path: Reel, dwell, dual CTA, playable demo, install

The end-to-end flow, from Reel to install.

What shipped is the mid-scene concept. The ad starts as normal video, then mid-play the unit surfaces both CTAs. Tapping "Try demo" opens the playable, an HTML experience inside Meta's in-app browser, with a persistent install CTA anchored at the bottom. On iOS, Apple's SKOverlay (a native component that shows basic app metadata) lets users install without leaving the ad.

Designing Android's SKOverlay from scratch

Android has no equivalent of Apple's SKOverlay, so I designed one from scratch. Same goal (app metadata, ratings, one-tap install), built for a platform without the convention.

iOS Apple SKOverlay vs Android custom overlay comparison

Apple's native install overlay on iOS, and the custom equivalent I designed for Android.

What I cut

I designed multiple iterations of playable ads on impression: letting users interact with the demo directly on the surface, no post-click transition. It was the most ambitious concept and I pushed hard for it. It got rejected. I agreed with the call.

Rejected concept: playables on impression iterations

Playables on impression. Rejected.

Users don't expect an ad to behave like an app. Dropping a game straight into a Reel breaks how people read the surface. That post-click tap matters: it's the moment a user chooses to enter the demo. Take the choice away and the format just feels invasive.

From Two People to a Team

Playables are now a standing part of Meta's app-install business, live at full scale across both apps.

Advertisers adopted it immediately. They were already producing playable assets for AppLovin, so running them on Meta took no extra creative production, and it opened a path beyond gaming into e-commerce and other verticals, anywhere letting people try first makes the download feel less of a gamble.

Android had no native install overlay when I designed ours. It opened a separate workstream with Google, co-designing a native Android version.

Also designed

I didn't show everything. Here are a few more pieces of the system I designed for this project.

In-app browser and loading state for the playable HTML experience
Ads Manager flow for uploading playable HTML and configuring campaigns