Linkzly

Gaming Intelligence

---

22 min read

sidebar_label: Gaming Intelligence sidebar_category: Core

Gaming Intelligence

Gaming Intelligence is Linkzly's purpose-built analytics and attribution platform for game developers and publishers. It gives you real-time visibility into how players engage with your game, who is driving revenue, and whether your marketing spend is working — all from a single dashboard. It also includes fraud detection to protect your attribution data and SKAdNetwork (SKAN) support for iOS privacy-preserving attribution.

Feature flag: Gaming Intelligence is controlled by the NEXT_PUBLIC_FEATURE_GAMING_INTELLIGENCE_ENABLED environment variable (gamingIntelligenceEnabled). Contact your administrator if the section does not appear in your sidebar.


What Gaming Intelligence Covers

Module What It Does
Gaming Analytics Track DAU, revenue, session duration, cohort retention, player segments, and geographic performance
Fraud Detection Detect and block bots, click injection, device farms, emulators, and rate-limit abuse automatically
SKAdNetwork (SKAN) Manage iOS attribution campaigns with Apple's privacy-preserving framework (SKAN v4.0)
GDPR Compliance Submit player data deletion requests that cascade across all storage layers

Getting Started: Register Your Game

Before tracking events, register your game in Linkzly. The five-step setup wizard walks you through everything.

In the left sidebar under Core, click Gaming Intelligence, then click + Add Game (or + Add Your First Game if you have no games yet).


Step 1 — Create Game

Field Description Required
Game Name The display name for your game in the Linkzly dashboard. 2–120 characters. Required
Game ID A unique identifier for your game. If you leave this blank, one is generated automatically from your game name. 2–64 characters; letters, numbers, hyphens, and underscores only. Optional
Platform The platform your game runs on. Select one from the dropdown. Required

Available platforms:

Platform
iOS Android
Web Steam
PlayStation Xbox
Switch Epic Games
Discord Unity

Click Create & Continue.


Step 2 — Configure Modules

Enable the features your game needs. You can change these settings at any time from the game's Settings page.

Module What Enabling It Does
Gaming Analytics Tracks DAU, retention, revenue, cohort analysis, and player segmentation
Fraud Detection Activates the fraud rule engine — bot detection, click injection prevention, device farm blocking, and rate limiting
SKAdNetwork Enables iOS SKAN v4.0 attribution, campaign mapping, and postback processing

Data Retention Settings:

Setting Description Range
Raw Data Retention (days) How long individual events are stored at full resolution 1–3,650 days
Compacted Data Retention (months) How long aggregated analytics data is kept after raw data expires 1–120 months

Click Save & Continue.


Step 3 — Integrate Your SDK

This step gives you your SDK Key and quickstart code snippets.

Your SDK Key is a unique credential that authenticates your game with the Linkzly event ingestion service. Copy it and store it securely. You can view or regenerate it at any time from the game's Settings page.

Required headers for every request:

Header Value
Authorization Bearer {your_sdk_key}
X-Game-ID Your game ID
X-Organization-ID Your Linkzly organization ID
Content-Type application/json

Quickstart code snippets provided:

  • cURL — Quick test from the terminal
  • JavaScript / TypeScript — For web and Node.js games
  • Unity C# — Shown automatically when your platform is iOS, Android, or Unity

Detailed SDK setup guides for each platform are available in the separate Gaming SDK Integration Guide documents.

Click Continue to Test.


Step 4 — Verify Integration

Send a test event using the code snippet from Step 3, then click Verify Integration. Linkzly checks whether any events have been received from your game.

  • If events are found, the status changes to Integration verified with a green indicator.
  • If no events are found, check that your SDK Key, Game ID, and Organization ID are all correct in your request headers.

Click Skip for now if you want to finish setup first and verify later.


Step 5 — Setup Complete

Your game is now registered. The completion screen summarises:

Info Details
Game ID Your game's unique identifier (required in all API requests)
Platform The platform you selected
Modules Badges showing which modules are enabled (Analytics, Fraud, SKAN)
Status Active

From here, navigate to your Game Dashboard, View Analytics, or Settings.


Games List

The Gaming Intelligence home page shows all your registered games.

Page title: "Gaming Intelligence" Subtitle: "Manage your games, analytics, fraud controls, and attribution tracking."

Toolbar controls:

Control Description
Search Filter by name ("Search games...")
Platform filter All Platforms Ā· iOS Ā· Android Ā· Web Ā· Steam Ā· PlayStation Ā· Xbox Ā· Switch Ā· Epic Games Ā· Discord Ā· Unity
Status filter All Status Ā· Active Ā· Paused Ā· Archived
View toggle Cards view or Table view
Refresh Reload the games list
+ Add Game Open the setup wizard

Cards view fields: Game icon, game name, game ID (monospace), status badge, platform, creation date, module badges (Analytics, Fraud, SKAN)

Table view columns: Name | Platform | Status | Modules | Created | Actions

Table row actions: Analytics icon (opens /analytics), Settings icon (opens /settings), Shield icon (opens /fraud)

Click any game card or row to open its dashboard.


Game Overview Dashboard

The game dashboard shows a snapshot of your game's key performance indicators.

Key Metrics

Metric Description
DAU Daily Active Users — unique players active in the last day
Revenue Total in-app purchase, ad, and subscription revenue
ARPU Average Revenue Per User
Avg Session Average session duration

Player Retention Summary

Metric What It Means
Day 1 (D1) Percentage of players who returned the day after their first session
Day 7 (D7) Percentage returning within 7 days
Day 30 (D30) Percentage returning within 30 days

Quick Links

The overview page also provides quick links to Analytics, Settings, Fraud, and Geographic views.


Analytics Dashboard

The Analytics dashboard has seven tabs. Use the date range picker at the top to set the analysis period (default: last 30 days).

Tabs: Overview | Retention | Revenue | Attribution | Players & Leaderboard | Geographic | Event Distribution


Overview Tab

Shows the top-level summary: DAU, MAU, ARPU, ARPPU, average session duration, and the D1/D7/D30 retention benchmarks for the selected period.


Retention Tab

The cohort table shows what percentage of players return on each day after their first session.

Column Description
Cohort The install date of the cohort
Size How many players were in that cohort
Day Which day is being measured (D0, D1, D3, D7, D14, D30)
Retained The retention percentage for that day
Retention A color-coded progress bar (green ≄50%, yellow ≄30%, amber ≄15%, red >0%)

Revenue Tab

View revenue broken down by time period or dimension.

Group By options: Day Ā· Week Ā· Month Ā· Platform Ā· Source

Metrics shown:

  • Total revenue per period
  • Revenue by type: IAP (in-app purchases), Ad revenue, Subscription
  • Number of transactions
  • Number of paying users
  • ARPPU (Average Revenue Per Paying User)

Attribution Tab

See which channels are driving installs and revenue.

Group By options: Affiliate Ā· Campaign Ā· Source Ā· Medium

Summary metrics:

Metric Description
Total Installs Total attributed installs in the period
Conversions Total conversion events attributed
Revenue Total revenue attributed through this channel
Commission Total affiliate commission earned
Avg CPA Average Cost Per Acquisition
Avg ROAS Average Return On Ad Spend

Players & Leaderboard Tab

Explore individual players and understand your player segments.

Player Segments:

Segment Description
Whale High-revenue players
Dolphin Mid-tier spenders
Minnow Low spenders
Free Non-spending players

Player Explorer — Search and filter the full player list:

  • Search by Player ID
  • Filter by platform, country, segment, and minimum revenue

Player table columns: Player ID Ā· Sessions Ā· Revenue Ā· Segment Ā· Last Active

Player Profile — Click any player row to open their full profile, including session count, total revenue, platform, country, event history, and revenue breakdown.

Leaderboard — Shows top players ranked by revenue.


Geographic Tab

Geographic distribution of your player base.

Data per country:

  • Players (unique player count)
  • Sessions
  • Revenue
  • Average revenue per player

Event Distribution Tab

See which event types are most common in your game.

Table columns:

  • Event type
  • Total count
  • Unique players who triggered the event
  • Percentage of all events
  • Visual distribution bar

Export

Export raw event data for your own analysis.

Field Options
Format JSON or CSV
Limit Default: 10,000 rows

Click Export to download the file.


Fraud Detection

Fraud Detection automatically analyzes every incoming event and flags or blocks suspicious activity. Access it from your game's navigation.

Fraud Dashboard

The top of the Fraud Detection page shows four KPI cards:

Card Description
Events Analyzed Total events processed through the fraud engine
Threats Detected Count of events flagged or blocked (shown in red)
Fraud Rate Percentage of events identified as fraudulent (color-coded by severity)
Blocklist Active Number of currently active IP and device blocks (shown as "X IPs, Y devices")

Additional metrics available via the dashboard API include: false positive rate, blocked IPs count, blocked devices count, and average detection latency.


Fraud Events Tab

Column Description
Time When the event was received
Player The player associated with the event
Threat Type The fraud type detected (click_injection, bot_detection, device_farm, rate_limit, emulator, pattern_anomaly, revenue_anomaly)
Risk Score Composite fraud score from 0–1
Status Blocked (red) — rejected; Detected (amber) — flagged for review
Triggered Rules Which rules matched this event

Events are paginated. The API returns up to 200 events per page.


Rules Tab

Linkzly includes six pre-built rule templates that activate as soon as Fraud Detection is enabled. You can also create custom rules.

Pre-built rule templates:

Rule Action Recommended
Block Bot Traffic Block Yes
Block Click Injection Block Yes
Flag Device Farms Flag Yes
Rate Limit Abuse Block —
Block Emulators Block —
Flag Revenue Anomalies Flag —

Each rule can be toggled on or off individually without deleting it.

Creating a custom rule:

Field Description
Rule Name A descriptive name for this rule
Action What happens when the rule triggers: Block (reject the event), Flag (mark for review), or Log (record only)
Field The event attribute to evaluate
Operator eq, ne, gt, lt, gte, lte, contains, or in
Value The threshold value

Rules support priorities (1–1,000; higher priority rules are evaluated first; default: 100) and optional cooldown periods (0–1,440 minutes).


Blocklist Tab

Add IP addresses or device fingerprints to a blocklist to immediately reject all future events from them.

Field Description
Block Type IP Address or Device Fingerprint
Value The IP address or device fingerprint hash
Reason Why this entry is being blocked

Blocklist entries expire automatically after 30 days.


SKAdNetwork (SKAN)

SKAdNetwork is Apple's privacy-preserving mobile attribution framework. It lets you measure the effectiveness of iOS ad campaigns without accessing individual user data. Linkzly supports SKAN v4.0.

Page title: "SKAN Campaign Management"

What SKAN Does

When a user taps an iOS ad and installs your app, Apple sends a postback to your ad network. The postback includes a conversion value (a 6-bit number from 0–63) that encodes what the user did after installing — without revealing who the user is.

Linkzly manages:

  1. The conversion value schema — which events map to which values
  2. Postback processing — receiving and decoding postbacks from Apple
  3. Campaign optimization — automatically suggesting the best schema based on your data

Creating a SKAN Campaign

Field Description
Campaign Name A display name for this campaign
Ad Network ID Your ad network's SKAN identifier (e.g., example.skadnetwork)
Affiliate ID Link this campaign to an affiliate for attribution (optional)
Lock Window (hours) How long Apple waits before sending the postback. Range: 1–72 hours.
Conversion Schema A JSON definition mapping your game events to conversion values (0–63), edited directly in the schema editor

Example conversion value schema:

{
  "events": {
    "purchase": 32,
    "level_complete": 16,
    "tutorial_complete": 8,
    "session_start": 4
  },
  "coarseValues": {
    "low":    { "min": 0,  "max": 10 },
    "medium": { "min": 11, "max": 40 },
    "high":   { "min": 41, "max": 63 }
  },
  "lockWindow": 24
}

Each value is a power of 2 (4, 8, 16, 32…) so that combinations of events can be encoded together in a single 6-bit number. Coarse values (SKAN v4.0) provide a lower-precision fallback: low (0–10), medium (11–40), and high (41–63).

Optimize

Click Optimize (sparkle icon) on any campaign to have Linkzly automatically suggest the best conversion value schema based on your historical revenue and event data.


GDPR — Player Data Deletion

If a player requests deletion of their data under GDPR or another privacy regulation, submit a deletion request from the GDPR section of your game.

Page title: "GDPR Player Deletion"

Field Description
Player ID The player's unique identifier in your system
Reason Why the deletion is being requested (e.g., gdpr_request, user_request, age_restriction)
Confirmation You must type DELETE (in capital letters) to enable the Request Deletion button

Click Request Deletion. The deletion is queued and processed asynchronously. All data for that player is purged across every storage layer — events, sessions, profile data, device fingerprints, attribution data, and fraud scores (D1, KV, ClickHouse, and R2).

This action is irreversible. Once submitted, the deletion cannot be cancelled. A deletion record is retained for compliance purposes for 365 days.


Game Settings

Access your game's settings from the game dashboard navigation.

1. General Settings

Setting Description
Game Name Update the display name for this game
Platform Read-only after creation
Status Change between Active, Paused, and Archived
Game ID / Slug Read-only identifiers

2. SDK Configuration

Setting Description
SDK Key Masked by default. Use the show/hide toggle to reveal it, or the copy button to copy it to the clipboard.
Regenerate SDK Key Creates a new key and immediately invalidates the old one. Any builds using the old key will return authentication errors until updated. Confirmation is required before regenerating.

3. Security Settings

Setting Description Default
HMAC Signing Required When enabled, every event batch must include a valid HMAC-SHA256 signature. Recommended for production. Off
Replay Window (seconds) Events with timestamps outside this window are rejected. Range: 60–600 seconds. 300 seconds

4. Data & Retention

Setting Range Default
Raw Data Retention (days) 1–3,650 30
Compacted Data Retention (months) 1–120 12

5. Feature Modules

Toggle Gaming Analytics, Fraud Detection, and SKAdNetwork (iOS) on or off at any time.

Save UX: Any unsaved changes show a "You have unsaved changes" warning banner at the top of the page. Click Save Changes or Save All Settings to apply, or Discard to revert.


SDK Integration (Overview)

This section provides a quick reference for integrating the Gaming Intelligence SDK. Detailed setup guides for each platform are available in the separate Gaming SDK Integration Guide documents.

Required Headers

Every request to the event ingestion endpoint requires these headers:

Authorization: Bearer {your_sdk_key}
X-Game-ID: {your_game_id}
X-Organization-ID: {your_org_id}
Content-Type: application/json

Ingestion Endpoint

Endpoint: POST /api/v1/gaming/events Response: 202 Accepted

Limits:

Limit Value
Max events per batch 1,000
Max batch size 1 MB
Max size per event 10 KB
Max event age 24 hours old
Max event timestamp in future 5 minutes
Rate limit 1,000 requests/minute

Each batch must include a batch_id and batch_timestamp.

Supported Event Types (21 + custom)

Core (5):

Event Type When to Send
session_start Player starts a play session
session_end Player ends a play session
app_install App installed for the first time
app_open App launched
app_close App closed

Gaming (10):

Event Type When to Send
level_start Player starts a level
level_complete Player completes a level
achievement_unlocked Player earns an achievement
tutorial_complete Player finishes the tutorial
currency_spent In-game currency spent
currency_earned In-game currency earned
item_purchased Item purchased (in-game)
battle_won Player wins a battle
tournament_join Player joins a tournament
friend_invited Player invites a friend

Monetization (5):

Event Type When to Send
purchase In-app purchase completed
subscription_start Subscription begins
subscription_renew Subscription renewal
subscription_cancel Subscription cancelled
ad_watched Ad view completed

Custom: Send any additional event type as a custom string using the custom event type.

Supported Platforms (API values)

ios Ā· android Ā· web Ā· steam Ā· playstation Ā· xbox Ā· switch Ā· epic Ā· discord Ā· unity

JavaScript / TypeScript Example

await fetch('https://gaming.linkzly.com/api/v1/gaming/events', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': `Bearer ${SDK_KEY}`,
    'X-Game-ID': GAME_ID,
    'X-Organization-ID': ORG_ID,
  },
  body: JSON.stringify({
    batch_id: crypto.randomUUID(),
    batch_timestamp: new Date().toISOString(),
    events: [{
      event_id: crypto.randomUUID(),
      event_type: 'purchase',
      timestamp: new Date().toISOString(),
      player_id: 'player-001',
      session_id: 'session-uuid',
      platform: 'web',
      data: { item: 'sword', amount: 4.99, currency: 'USD' },
    }],
  }),
});

Unity C# Example

IEnumerator SendEvent() {
    var payload = JsonUtility.ToJson(eventData);
    var request = new UnityWebRequest(BASE_URL + "/api/v1/gaming/events", "POST");
    request.SetRequestHeader("Authorization", "Bearer " + SDK_KEY);
    request.SetRequestHeader("X-Game-ID", GAME_ID);
    request.SetRequestHeader("X-Organization-ID", ORG_ID);
    request.SetRequestHeader("Content-Type", "application/json");
    request.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(payload));
    request.downloadHandler = new DownloadHandlerBuffer();
    yield return request.SendWebRequest();
}

For complete SDK documentation covering Android (Kotlin), iOS (Swift), Unity, Unreal Engine, and other platforms — including HMAC signing, auto-session tracking, and advanced configuration — see the Gaming SDK Integration Guide documents.


API Reference (Summary)

Gaming Intelligence exposes 35 API endpoints across six categories:

Category Count Prefix
Game Admin 5 /api/v1/admin/games
Analytics 11 /api/v1/analytics
Fraud Detection 9 /api/v1/admin/fraud
SKAN 5 /api/v1/skan
GDPR / Ingestion 2 /api/v1/gaming
Health 3 —

Full API reference documentation is available in the Gaming Intelligence API Reference.


Tips

  • Start with the recommended fraud rules. Block Bot Traffic, Block Click Injection, and Flag Device Farms are pre-configured and cover the most common attack vectors. Enable them first, then tune thresholds as you see your real traffic patterns.

  • Use a meaningful Game ID. Once set, the Game ID cannot be changed. Choose something descriptive and slug-friendly (e.g., my-awesome-game), since it appears in every API request and dashboard URL.

  • Set retention before you launch. Raw data retention defaults to 30 days. If you need longer event-level history for cohort analysis or audits, increase this in the Configure step or in Settings before your first events arrive — you cannot retroactively extend retention for already-expired data.

  • Unity C# snippets only appear for relevant platforms. The setup wizard shows Unity C# code only when your game's platform is iOS, Android, or Unity. For other platforms, use the cURL or JavaScript snippets as a reference for the HTTP request format.

  • GDPR deletions are irreversible. Once you submit a deletion request and type "DELETE" to confirm, the process cannot be stopped. Always verify the Player ID before submitting.

  • SKAN lock windows affect postback timing. Shorter lock windows (1–4 hours) send postbacks sooner but with less conversion data. Longer windows (24–72 hours) capture more events before the postback fires but delay reporting. Use the Optimize function to find the best trade-off for your campaign.

  • SDK key regeneration is immediate. If you regenerate an SDK key in Settings, the old key is invalidated the moment the new one is issued. Update all running game builds before regenerating, or expect a brief period of dropped events.

Was this helpful?

Help us improve our documentation