Game analytics that answers your questions
Reports for balance, retention, and revenue, plus an AI assistant that answers questions about your players. Send events from any engine with a simple HTTP API, free up to 1,000 tracked records a month.
AI assistant
Ask your game anything
Ask which character is overpowered, where players quit, or what changed since the last patch. The assistant reads your reports, answers with real numbers, and can save a new report for you.
-
In the app
The built-in assistant is included with every paid plan, right next to your reports and dashboards.
See plans -
In Claude or ChatGPT
Connect our MCP server and ask from the AI assistant you already use. Included with every plan.
Set up the MCP connector -
In Discord
Type
/askin your Discord server and the answer is posted right in the channel, using your plan's assistant questions.
Reports
The reports your game needs
Every plan includes every report type. Build one in a few clicks, or ask the assistant to build it for you.
Find what is overpowered
Compare win rates by character, weapon, or map, and see how each patch moved them.
How to balance a game with data
See who comes back
See how many new players return 1, 7, and 30 days after they first play, plus daily, weekly, and monthly active players.
How to measure game retention
Know what your players spend
Track daily revenue, ARPDAU, payer conversion, and ARPPU from your purchase events.
ARPDAU, ARPPU, and ARPU explained
See how long players stay
Track sessions per day, average session length, sessions per player, and daily playtime from your session events.
Mobile game KPIs: which metrics to track and why
Find where players get stuck
See how long each level takes and how often players fail it, so you know which ones to fix first.
Find which levels players get stuck on
See where the action happens
Plot any two numeric event attributes, like x and y positions, as a density heatmap to see where players spend their time.
Quick start
From first event to first report in minutes
Send an event from your game or your server with one HTTP request. Event names, players, and versions are created the first time you send them, so there is nothing to set up first.
curl https://gamestats.ai/api/v1/accounts/$ACCOUNT_ID/events \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"event_name": "level_completed",
"player_username": "player_123",
"version_name": "1.0",
"occurred_at": "2026-10-15T18:30:00Z",
"event_attributes": { "level": 3, "seconds": 94.5, "deaths": 2 }
}'
[Serializable] class LevelStats { public int level; public float seconds; public int deaths; }
[Serializable] class GameEvent
{
public string event_name;
public string player_username;
public string version_name;
public string occurred_at;
public LevelStats event_attributes;
}
IEnumerator SendLevelCompleted(int level, float seconds, int deaths)
{
var gameEvent = new GameEvent
{
event_name = "level_completed",
player_username = playerUsername,
version_name = Application.version,
occurred_at = DateTime.UtcNow.ToString("o"),
event_attributes = new LevelStats { level = level, seconds = seconds, deaths = deaths },
};
var url = $"https://gamestats.ai/api/v1/accounts/{accountId}/events";
using var request = UnityWebRequest.Post(url, JsonUtility.ToJson(gameEvent), "application/json");
request.SetRequestHeader("Authorization", $"Bearer {apiToken}");
yield return request.SendWebRequest();
}
func send_level_completed(level: int, seconds: float, deaths: int) -> void:
var url := "https://gamestats.ai/api/v1/accounts/%s/events" % account_id
var headers := PackedStringArray([
"Authorization: Bearer %s" % api_token,
"Content-Type: application/json",
])
var body := JSON.stringify({
"event_name": "level_completed",
"player_username": player_username,
"version_name": ProjectSettings.get_setting("application/config/version"),
"occurred_at": Time.get_datetime_string_from_system(true) + "Z",
"event_attributes": {"level": level, "seconds": seconds, "deaths": deaths},
})
http_request.request(url, headers, HTTPClient.METHOD_POST, body)
Already have your own data format? On Studio plans and above, we build custom endpoints that ingest exactly what your systems send. Contact us
Read the API docsPricing
Free to start, paid plans from $19 a month
Every plan includes every report type, the REST API, and the MCP server. Paid plans add the in-app AI assistant, higher limits, and unlimited team members.
- Free
- $0 / month
- 1,000 tracked records a month
- Indie
- $19 / month
- 100,000 tracked records a month
- Studio
- $49 / month
- 1,000,000 tracked records a month
- Pro
- $149 / month
- 5,000,000 tracked records a month
Start tracking your game today
Free up to 1,000 tracked records a month. Upgrade when your game grows.
Start freeWe care about the protection of your data. Read our privacy policy.