Skip to content
Tolinku
Tolinku
Sign In Start Free
Analytics & Attribution · · 5 min read

Attribution for Mobile Gaming Apps

By Tolinku Staff
|
Tolinku analytics measurement dashboard screenshot for analytics blog posts

Mobile gaming has the most complex attribution requirements of any app category. Revenue comes from two sources (in-app purchases and ad monetization), user behavior varies wildly between casual and hardcore players, and marketing spend can reach millions per month. Getting attribution right determines whether you scale profitably or burn through budget on low-quality users.

This guide covers attribution strategies specific to mobile games. For subscription app attribution, see attribution for subscription apps. For attribution fraud, see attribution fraud: detection and prevention guide.

Gaming Revenue Models

Mobile games monetize differently from other apps, and attribution must account for both revenue streams:

In-App Purchases (IAP)

Direct purchases of virtual goods, currency, battle passes, and premium content:

Event Example Attribution Impact
First purchase $4.99 gem pack Conversion event
Whale purchase $99.99 mega bundle High-value event
Recurring purchase $9.99 monthly battle pass Subscription-like
Impulse purchase $0.99 extra life Low-value but frequent

Ad Revenue

Revenue from ads shown to players (interstitials, rewarded video, banners):

// Track ad revenue per user for attribution
function trackAdRevenue(userId: string, adEvent: AdEvent) {
  analytics.track('ad_revenue', {
    userId,
    adNetwork: adEvent.network,
    adType: adEvent.type, // 'rewarded', 'interstitial', 'banner'
    revenue: adEvent.revenue,
    currency: 'USD',
    placement: adEvent.placement
  });
}

Blended Revenue

For ROAS calculations, combine IAP and ad revenue:

Total User Revenue = IAP Revenue + Ad Revenue
Blended ROAS = Total User Revenue / Ad Spend

A user who never makes an in-app purchase but watches 50 rewarded video ads per day can still be profitable.

Key Attribution Events for Games

Install and Early Engagement

Event When to Track Why It Matters
Install First app open Base attribution event
Tutorial complete After tutorial Engagement quality signal
Level 5 reached Early gameplay Retention predictor
First session > 10 min During first session Engaged user signal

Monetization Events

Event When to Track Why It Matters
First IAP Any purchase Conversion to payer
IAP amount tiers $1-5, $5-20, $20-50, $50+ Revenue quality segmentation
Ad impression Each ad view Ad revenue tracking
Rewarded video complete Player opts into ad Engaged ad viewer
Subscription start Battle pass / VIP purchase Recurring revenue

Retention Events

Event When to Track Why It Matters
Day 1 return 24 hours after install D1 retention
Day 7 return 7 days after install D7 retention
Day 30 return 30 days after install D30 retention
Daily active Each day the user plays DAU tracking

ROAS Calculation

Time-Windowed ROAS

Gaming ROAS is calculated at multiple time windows because revenue accumulates over time:

Channel D0 ROAS D7 ROAS D30 ROAS D90 ROAS D365 ROAS
Facebook 5% 25% 55% 85% 120%
Google UAC 8% 30% 60% 90% 130%
TikTok 3% 18% 40% 65% 90%
Unity Ads 10% 35% 65% 95% 140%

A channel is profitable when ROAS exceeds 100%. In this example, Facebook and Google UAC reach profitability between D30 and D90, while TikTok never reaches 100% (unprofitable for this game).

Predictive ROAS (pROAS)

Since it takes months to know actual ROAS, predictive models estimate future revenue based on early behavior:

def predict_ltv(user_features):
    """
    Predict 365-day LTV from early user behavior.
    Features: D1 retention, D3 sessions, first_purchase_day, tutorial_time
    """
    features = [
        user_features['d1_retained'],       # 0 or 1
        user_features['d3_sessions'],        # count
        user_features['first_purchase_day'], # day number or -1
        user_features['tutorial_time_sec'],  # seconds
        user_features['d7_levels_completed'],# count
        user_features['d7_ad_views']         # count
    ]

    predicted_ltv = model.predict([features])[0]
    return predicted_ltv

With predicted LTV, you can estimate ROAS within the first 7 days instead of waiting 365 days.

SKAdNetwork for Games

Conversion Value Scheme

Games need to encode both engagement and revenue signals in SKAdNetwork conversion values:

func updateSKANForGaming(event: GameEvent) {
    var fineValue: Int

    switch event {
    case .tutorialComplete:
        fineValue = 5
    case .level5Reached:
        fineValue = 10
    case .firstIAP(let amount):
        if amount < 5 { fineValue = 20 }
        else if amount < 20 { fineValue = 30 }
        else if amount < 50 { fineValue = 40 }
        else { fineValue = 50 }
    case .day3Retained:
        fineValue = 15
    case .revenueThreshold(let total):
        if total < 10 { fineValue = 25 }
        else if total < 50 { fineValue = 35 }
        else if total < 100 { fineValue = 45 }
        else { fineValue = 55 }
    }

    // Only update if higher than current value
    if fineValue > currentSKANValue {
        SKAdNetwork.updatePostbackConversionValue(fineValue, coarseValue: .high) { _ in }
        currentSKANValue = fineValue
    }
}

SKAN Limitations for Games

  • Delayed reporting. SKAN postbacks arrive 24-48 hours after the conversion window closes. Real-time campaign optimization is not possible.
  • Limited conversion values. 64 fine-grained values (0-63) must encode both engagement and revenue.
  • No user-level data. Campaign-level attribution only, making per-user LTV tracking impossible through SKAN alone.

Creative-Level Attribution

Gaming ads heavily depend on creative performance. The same campaign with different creatives can have 5x variance in CPI and ROAS:

Creative CPI D7 Retention D30 ROAS
Gameplay video (actual) $1.20 35% 65%
Gameplay video (enhanced) $0.80 22% 40%
Fail compilation $0.60 18% 30%
Story ad $1.50 40% 80%

The cheapest creative (fail compilation) has the worst retention and ROAS. The most expensive (story ad) has the best quality. Attribution data at the creative level is essential for optimizing ad spend.

Fraud in Gaming Attribution

Gaming apps are disproportionately targeted by attribution fraud because:

  • High CPIs ($1-5+) make fraud profitable.
  • Large budgets mean more money to steal.
  • Many ad networks serve gaming ads, increasing the attack surface.

Common Gaming Fraud Patterns

Fraud Type How It Works Detection
Click flooding Millions of fake clicks to claim organic installs Abnormally low click-to-install rate
Click injection Fake click fired at install time CTIT under 10 seconds
Device farms Real devices playing the game briefly No engagement after D1
SDK spoofing Fake install events sent without real devices Invalid device signatures
Incentivized installs Users paid to install (against ToS) Abnormal uninstall rate (D1 > 50%)

Deep links in games open specific content:

/game/level/15                → Open game at level 15
/game/event/halloween-2026    → Open seasonal event
/game/clan/CLAN-123           → Open clan page
/game/challenge/CHALLENGE-456 → Open challenge invite
/game/store/BUNDLE-789        → Open store with specific bundle

These deep links are used in re-engagement campaigns, social sharing, and cross-promotion:

{
  "title": "Your clan needs you!",
  "body": "Clan Wars start in 2 hours. Your clan is ranked #3.",
  "deep_link": "https://links.game.com/game/clan/CLAN-123",
  "category": "re_engagement"
}

Tolinku for Gaming Attribution

Tolinku's analytics track deep link clicks and attribute conversions for gaming campaigns. Deep links for cross-promotion, social sharing, and re-engagement campaigns are tracked and attributed. Configure gaming-specific routes in the Tolinku dashboard.

For mobile attribution, see mobile attribution: a developer's guide. For subscription attribution, see attribution for subscription apps.

Get deep linking tips in your inbox

One email per week. No spam.

Ready to add deep linking to your app?

Set up Universal Links, App Links, deferred deep linking, and analytics in minutes. Free to start.