Gaming Intelligence
---
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_ENABLEDenvironment 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:
- The conversion value schema ā which events map to which values
- Postback processing ā receiving and decoding postbacks from Apple
- 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