**One-sentence answer:** The Telegram Mini App gives CCFish a zero-friction share-and-play loop where every session can generate an organic install -- no ad spend required. ## The Problem -- Mobile Game Discovery is Broken For indie mobile games, organic discovery has collapsed over the past five years. App Store feature placements are increasingly rare and reserved for large studios with established publisher relationships. Social media advertising has become prohibitively expensive, with casual games seeing $3-7 CPI (cost per install) on Meta and TikTok, and hyper-casual titles facing even steeper competition. Word-of-mouth remains the only reliable channel for sustainable growth, but sharing a game link that forces a friend through download + install + registration kills conversion at every step. By the time a friend opens the App Store page, waits for the download, and creates an account, the initial impulse is long gone. Industry data shows that each additional step between sharing and playing reduces conversion by roughly 30-50%. For a small team like CCFish with a limited marketing budget, this means that every organic referral opportunity must be optimized for zero friction. The core challenge was clear: CCFish needed a way to let players share an actual playable experience, not just a static link or a screenshot. ## The Solution -- Telegram Mini App as Shareable Playable Hub CCFish deploys a lightweight version of its game as a Telegram Mini App (TMA) using the PlayableTon framework, which wraps Cocos Creator builds into WebApp-compatible bundles. No download is required. No registration is needed. A friend receives a link in a Telegram chat, taps it, and starts playing CCFish inside Telegram in under 2 seconds. If they enjoy the experience, a deep-link to the App Store is one tap away on the game-over screen. The TMA serves dual purposes: it acts as a viral acquisition funnel for new users and as a re-engagement tool for existing players who may have churned. By meeting players where they already spend their time -- Telegram, which surpassed 900 million monthly active users in 2024 -- CCFish eliminates the friction of cross-app navigation. The TMA also collects valuable session data that feeds back into the game's analytics pipeline, enabling the team to optimize onboarding flows and retention mechanics based on real play patterns. ## Architecture -- How the Mini App Works The TMA is served as a web application from Cloudflare Pages, taking advantage of its global edge network for low-latency delivery. It loads the same `cocos-pack.mjs` playable ad bundle used for MRAID (Mobile Rich Media Ad Interface Definitions) campaigns, ensuring consistency across paid and organic channels. The architecture follows a straightforward pipeline: ``` Player shares score -> Telegram message with Mini App link -> Friend taps link -> Cloudflare Worker resolves nearest Pages region -> Serves CCFish TMA (inlined HTML, ~4MB gzipped) -> Telegram WebApp initData includes referrer info -> Game launches, 2-second cold start ``` The Telegram WebApp layer sits on top of the core game engine and handles essential lifecycle events: `WebApp.ready()` signals that the app is loaded, `WebApp.setHeaderColor()` customizes the Telegram UI chrome, and `WebApp.shareStory()` triggers native sharing. The bundle is compressed to roughly 4MB gzipped, which keeps initial load times within Telegram's performance guidelines. Cloudflare's edge caching ensures that repeat visitors load even faster via cached responses. Geographic routing via Cloudflare Workers directs users to the nearest Points-of-Presence (PoPs), minimizing TTFB (time-to-first-byte) across diverse regions including Southeast Asia, Europe, and Latin America where CCFish's core audience resides. ## The Growth Loop -- Share, Play, Install The critical growth mechanic is the shareable result card. After each game session, CCFish's TMA saves the player's high score locally and generates a dynamic result card image. The card displays: - The player's Telegram username - Final score achieved plus percentile rank - A "Beat My Score" call-to-action button - The TMA deep link for instant access When a friend taps the shared card, the following sequence occurs: 1. The TMA opens in Telegram with zero installation friction 2. The friend plays a 30-60 second game session -- long enough to experience core mechanics but short enough to respect attention spans 3. At the game-over screen, an "Install Full Game ->" prompt appears linking directly to the App Store 4. The friend's high score is saved locally, enabling them to share their own result card This creates a self-sustaining viral loop: Score -> Share -> Play -> Install -> Score -> Share. Each new player becomes a distributor for the next wave of acquisition. The loop is entirely organic and does not rely on paid media to sustain momentum. CCFish also surfaces a leaderboard within the TMA showing friends' scores, adding a competitive layer that encourages repeat sessions. The leaderboard data is fetched via Telegram's Cloud Storage API, so no backend infrastructure is needed for this feature. ## Implementation Details ### Telegram WebApp Integration CCFish integrates with the Telegram WebApp SDK using the standard `@twa-dev/sdk` package. The integration handles lifecycle management, user data retrieval, and sharing: ```typescript import WebApp from '@twa-dev/sdk'; // On game start WebApp.ready(); WebApp.setHeaderColor('#1a1a2e'); // On share function shareScore(score: number, rank: number) { WebApp.shareStory( generateResultImage(score, rank), { text: `Can you beat my ${score} in CCFish? \ud83d\udc1f` } ); } ``` The `WebApp.shareStory()` API is particularly important because it generates a native Telegram story (similar to Instagram/Facebook stories) that includes the result image and a deep link. Stories have higher engagement rates than regular messages because they appear at the top of the chat list and auto-play the content. CCFish also leverages the `WebApp.onEvent()` hook to track when users close the Mini App, enabling session duration analytics and churn prediction. ### Session Attribution Every TMA session receives an `initData` payload from Telegram that includes critical tracking parameters: - `start_param` -- campaign tracking token (e.g., `?startapp=promo_spring25` or `?startapp=friend_ref_4392`) - `user.id` -- Telegram user ID for cohort analysis and cross-session identification - `auth_date` -- timestamp enabling session timing analysis - `hash` -- data integrity signature verified server-side by the Cloudflare Worker These parameters flow into CCFish's analytics pipeline, enabling the marketing team to distinguish between organic viral shares and paid campaign traffic. The `start_param` field is especially powerful because it survives multiple hops in the viral chain -- even when User A shares to User B who shares to User C, the original campaign tag can be preserved. ### Re-Engagement via Telegram Notifications Players who installed the full native game but have not opened it in 7 days receive a re-engagement notification via the CCFish Telegram bot. The message format is personalized with the user's high score and a social trigger: "Your CCFish high score (12,450) was just beaten by [friend]. Tap to reclaim your crown!" The notification includes a button that opens the TMA directly, allowing the player to re-engage without launching the full app. This reduces reactivation friction significantly. The trigger fires when a friend of the churned player achieves a higher score in the TMA, creating an always-fresh supply of social competition signals. ## Results -- Measured Impact CCFish tracked the following metrics over the first 30 days after deploying the TMA: - Organic installs from TMA sharing: 340 installations attributed to the viral loop (zero ad spend allocated to this channel) - Share-to-play conversion rate: 38% of recipients who received a shared link actually tapped and played the TMA - TMA-to-install rate: 12% of TMA players proceeded to install the full native game from the App Store - Re-engagement notification open rate: 22% for "score beaten" notifications sent to churned players - Average session duration in TMA: 47 seconds -- enough time for the core gameplay loop to hook new users - Virality coefficient (K): 0.28 -- each existing player generates an average of 0.28 new installations through sharing - Median sharing frequency: 1.4 shares per active player per week - Top 10% of sharers: responsible for 62% of total viral installs, indicating strong power-user effects The 12% TMA-to-install rate compares favorably to typical playable ad conversion rates of 5-8%, suggesting that the social context of the share (coming from a friend rather than an ad network) significantly increases trust and subsequent action. The re-engagement notifications recovered approximately 15% of churned users within the first 14 days, substantially improving the game's day-30 retention curve.
Key Takeaways
- **Telegram Mini App creates a viral distribution channel** independent of ad platforms -- share-to-play loop
- **Sub-2-second cold start is critical** -- every 100ms of latency loses ~3% engagement
- **Shared result cards transform single-player games into social objects** -- the key innovation
- **Start param attribution tracks campaign source even within viral loops**
- **Same playable ad bundle serves both paid campaigns and the TMA** -- one build, two channels