We've watched a lot of mini-game studios close their books, and the line that stings most is almost never the one they expected. It's user acquisition — the money they spend to talk a stranger into tapping "play," then the silence when that stranger leaves before the game earned a cent back.

So they buy more users. And more. The math holds until it doesn't.

The part everyone skips past: the cheapest user you will ever acquire is the one your other game already paid for.

The house ad nobody invoices

Voodoo is the loud version of this idea, and enough of their numbers are public to be useful. In FY2025 they reported that 35% of new installs came from their own internal cross-promotion — not Meta, not TikTok, not a UA agency. Those same internal campaigns cut acquisition cost by about 20% and lifted 30-day retention by 12 percentage points. They weren't buying those players. They were lending them from one title in the portfolio to the next.

That only scales because Voodoo owns a catalog that's big enough to matter — 350+ live titles, 150M MAU. Most teams aren't Voodoo. But the principle shrinks gracefully: every game you ship is a storefront for the next one, and the rent is zero.

What Voodoo's own channels did in FY2025FigureWhy it matters even if you're small
New installs from cross-promo35%A third of growth with no media budget behind it
CAC on internal installs~20% lowerThe same user, reached by a link instead of a bid
30-day retention from internal campaigns+12 ppBorrowed players show up already warm

Multi-hosting makes this easier, not harder

A standalone title cross-promotes inside one app. A mini-game that runs across several super-apps cross-promotes across all of them at once — and the audience it borrows from is the union of every host's users, not just its own.

The usual catch applies: if each host is a separate build with a separate identity, you can't tell that the player who bounced off Game A is now on Game B. The cross-promo click becomes a guess, and the credit goes nowhere.

A shared runtime is what fixes that. One identity, one event log across the whole catalog, so a "play our other game" prompt can aim at people who already finished your first one — and get credited when they convert. The catalog stops being a pile of separate SKUs and becomes a single funnel you actually own.

The honest tradeoff

Cross-promo isn't free lunch. Push it too hard and you train players to treat your games as interchangeable, so your best title becomes a farm for the rest. Voodoo's own portfolio is lopsided — four titles take roughly 60% of their ad weight. The channel works best when the next game is genuinely better, not just next in line.

And it only compounds if the players you lend come back. That 12-point retention lift is the real prize; the cheap install is just the entry ticket.

We built Cross Mini App so a studio's catalog shares one runtime and one identity across every host — which is what turns "send this player to our other game" into a single config change instead of a per-store project. The same shared identity is also what makes attribution across hosts stop lying to you.

Sources