The problem: one export, N networks, all rebuilt by hand
Playworks/Luna gives you one working playable ZIP from your Unity scene. It doesn't know or care that Google Ads wants a clickTag and its own ExitApi script, AppLovin and Meta require every asset inlined into a single self-contained HTML file with zero external requests, Mintegral wants the archive name, folder, and HTML filename all matching, and TikTok wants a first-level index.html plus a config.json. Adapt that same export for several networks by hand and you're rewriting click-through code, re-encoding assets, and renaming files every time you ship a new creative. We cover that manual work in more detail on the multi-network export breakdown — this page is about how PlayableKit's upload flow actually removes it.
How the flow actually works
To be precise about what "upload once" means in the dashboard, here's the real sequence, verified against the build form and the /api/build handler:
- Pick or create an app — a one-time setup per game/app, where your Android and iOS store links are saved so you don't re-enter them on every build.
- Drop in the Luna/Playworks ZIP — the upload panel pre-fills the package name from your app and defaults orientation to "both," which you can leave as-is or adjust.
- Confirm networks and generate — the review screen shows a live preview of your build and a network grid with every network your plan includes already checked. You can uncheck any you don't want; you don't have to hunt for or add anything to get the full set. Clicking generate submits one build job.
That's a genuine upload-once flow: one file, one confirmation, and a single server-side job (not one job per network) that produces a separately packaged output for every network you left checked. It's fair to call it streamlined — it isn't literally one mouse click, since picking an app and confirming the network list are real, deliberate steps. What it removes is the part that actually costs time: there's no per-network re-export, no separate upload per ad network, and no manual file surgery in between.
What happens automatically the moment you confirm
This is the part that's genuinely automatic, regardless of how many clicks got you there:
- Per-network click-through wiring — Google's
clickTag/ExitApi, AppLovin/Unity Ads' MRAIDmraid.open(), Vungle'spostMessage('download','*'), Mintegral'swindow.install(), TikTok'sopenAppStore(), and Meta'sFbPlayableAd.onCTAClick()are each applied to the matching package — you don't write or choose any of it. - Asset encoding — for networks that require a single self-contained file (AppLovin, Meta, Unity Ads, Vungle), every image, audio clip, and font gets inlined automatically rather than left as a relative path.
- Package shaping — Mintegral's matching archive/folder/HTML filenames and TikTok's
index.html+config.jsonare generated to spec per package, not hand-renamed. - Size accounting — each network output is checked against its own byte cap (most networks cap around 5 MB) so you see per-network size in the results before you submit anywhere.
For the full breakdown of the conversion engine itself — what "convert" actually does to the Luna export under the hood — see the playable ad converter page. If you want to sanity-check a build for structural problems before running it through a paid job at all, the free validator does that with no signup and no credits spent.
Real pricing and build limits
"Upload once, get every network" is bounded by your plan — free accounts get a workspace but no build credits, and lower tiers cover a subset of the supported networks rather than all of them. Here's what that actually looks like:
| Plan | Price | Build credits / mo | Networks included |
|---|---|---|---|
| Free | $0 | 0 (workspace only) | None — upgrade to build |
| Starter | $400/mo | 50 | Google Ads, Meta, AppLovin, Unity Ads (4 of 7) |
| Studio | $560/mo | 100 | All networks |
| Scale | $800/mo, 2 seats | 300 | All networks |
| Enterprise | Custom | Custom | All networks + custom infrastructure |
Since each network checked in a build spends one credit, a Starter plan running the full one-upload flow across its four included networks spends 4 credits per creative, leaving room for roughly 12 creatives a month. Studio and above cover every network, so one upload can realistically produce a full network spread in a single job. Full plan details, seat limits, and overage terms live on the pricing page.