Unity · React Native · Capacitor · your backend

Analytics for your game that you just ask questions of.

Give your agent the skill, it integrates the SDK. Then ask it where players quit, who comes back, what they pay for, and whether the last patch broke the economy. No taxonomy to design, no dashboard to build, no BI hire.

Free plan: 1 million events a month, every feature, no credit card.

ah — Dungeon Dash (ios · android)
$ ah funnel tutorial_start level_1_complete first_purchase --by props.platformFUNNEL 3 steps — by props.platform (18,402 entered)s1 tutorial_start · s2 level_1_complete · s3 first_purchase props.platform      s1       s2      s3   conv%ios              9,614    7,210     418    4.3%android          8,788    5,102     161    1.8% TIME TO CONVERT (within-session, all dims)transition          n    median      p90s1 → s2        12,312    3m 40s   11m 05ss2 → s3           579    6m 12s   19m 30s $ ah changes add "Android: skip tutorial step 3" --kind experimentlogged — tomorrow's digest shows it against the funnel 
unitylevel_complete{ level: 12, stars: 3 }iosgems_purchased{ sku: "starter_pack", amount: 500 }autocapturedpageview: /shopscene loadandroidboss_defeated{ boss: "Crypt Lord", tries: 4 }serversubscription_started{ tier: "plus" } · RevenueCatautocapturedclick: ContinueuGUI tapunitydaily_login{ streak: 7 }ioscontinue_used{ cost: 50, currency: "gems" }androidad_watched{ placement: "revive" }androidtutorial_start{ platform: "android" }unityupgrade_hero{ hero: "ranger", cost: 1200 }serverrefund{ sku: "gems_1200" } · App Store

Just ask

Questions, not dashboards

Every answer is a terminal table, or --json for a script. You ask from a shell; your coding agent asks exactly the same way.

ah
$ ah funnel tutorial_start tutorial_step_3 level_1_complete --since 7dFUNNEL tutorial_start → tutorial_step_3 → level_1_complete — 18,402 sessions entered #  step               sessions  %entered   drop1  tutorial_start       18,402      100%      —2  tutorial_step_3      11,930       65%   -35%3  level_1_complete      9,874       54%   -17% TIME TO CONVERT (within-session)transition                 n   median      p901 → 2                 11,930   1m 12s   4m 05s2 → 3                  9,874     48s    2m 30s

SDKs

Drop it into the engine you already ship

One project key across every platform and your backend — every player lands in the same place, and a question about iOS vs Android is one flag.

Unity

A UPM package. Scene loads and uGUI taps are captured for you; gameplay events are one call with any props you like.

AgentHog.Init(new AgentHogConfig {
  Host = "http://agenthog.io",
  ProjectKey = "ah_xxxxxxxx",
});
AgentHog.Capture("level_complete",
  new Dictionary<string, object> { ["level"] = 12 });
Unity guide

React Native / Expo

A provider at the root. Screen views and taps autocaptured, persistent ids via AsyncStorage.

<AgentHogProvider config={{
  host: 'http://agenthog.io',
  projectKey: 'ah_xxxxxxxx',
  appName: 'dungeon-dash',
}}>
  {children}
</AgentHogProvider>
React Native / Expo guide

Capacitor

One init call for a hybrid game. DOM autocapture like the web tracker, native transport underneath.

import { AgentHog } from '@brightmotion/agenthog-capacitor'

await AgentHog.init({
  host: 'http://agenthog.io',
  projectKey: 'ah_xxxxxxxx',
})
Capacitor guide

Server-side ingest

Relay App Store, Play, RevenueCat, or Stripe webhooks and backend events with a write token — the purchases a client never sees.

curl -s http://agenthog.io/ingest \
  -H "Authorization: Bearer $AGENTHOG_INGEST_TOKEN" \
  -d '{"project":"ah_xxxxxxxx","anonId":"server:42",
       "events":[{"name":"subscription_started",
         "props":{"tier":"plus","price_usd":9.99}}]}'
Server-side ingest guide

What you get

Everything a studio asks about — nothing to design first

Send events with the names you already use. Funnels, cohorts, revenue, and economy meaning are applied afterwards, and apply retroactively to everything you already sent.

Funnels & retention

Any sequence of events is a funnel, split by platform, version, country, or any prop. Cohorts by day, week, or month.

cohortsizep0p1p2p3p4Jul 274,120100%41%28%22%19%Aug 34,875100%44%31%24%Aug 105,310100%39%27%Aug 176,102100%46%

Aug 17's cohort is holding at 46% in week one — up from 39% two weeks ago.

$ ah retention --cohort week --periods 4

Revenue — real money

Map the amount prop on the purchase event you already send, relay store webhooks server-side, and get net revenue, ARPPU, and LTV by SKU, platform, or variant. Retroactive, refund-aware, never summed across currencies.

net (30d)

$18,340

payers

811

ARPPU

$22.61

starter_pack
$7,910 · 781
gems_1200
$5,220 · 203
season_pass
$4,180 · 209
remove_ads
$1,030 · 344

$ ah revenue --by props.sku --since 30d

Economy monitoring

Declare which events are sources and sinks of which currency — after the fact, no SDK change. See supply drift, paid vs earned, the faucets and drains that dominate, and whether a patch broke any of it.

level_reward612kgems_purchased371kdaily_login301kgems+7.1%continue402kupgrade_hero388kcosmetic319k
sourced
38% paid · 62% earned
net +175k · drift vs reported balances 0.3%

$ ah economy map --event gems_purchased --source && ah economy

Feature flags & experiments

Deterministic variants evaluated in the SDK, exposure tracked for you, Bayesian results. Difficulty curves, shop layouts, tutorial length — tested on real players.

tutorial_skip_v2running · 9dmetric: level_1_complete
control · 6,410 exposed56.0%
skip · 6,388 exposed62.5%

98.7% chance to beat control+11.6% lift — ship it, then retire the flag.

$ ah experiments results tutorial_skip_v2

Every patch, lined up with the metric it moved

Log builds, live-ops beats, and balance changes to the changelog — backdatable — then read D1 retention or ARPPU against them. When a number moves, there's a suspect.

D1 retention / dayPatch 1.4.2 — easier level 346%39%

$ ah changes add "Patch 1.4.2 — easier level 3" --kind deploy --at 2026-08-12

Bot & test-device filtering

Every session is scored human, bot, or crawler, and your own QA devices read as test. Store review bots and your build farm never inflate D1.

Raw SQL and export — own your data

Read-only SQL over your own events, on every plan. Pull everything out as JSON whenever you like; nothing is locked behind a tier.

Built for your coding agent

The ah CLI is the whole read surface — no MCP server, no plugin. Hand an agent a read-scoped token and it can answer the questions above itself.

Why not the usual tools

Built for the studio without a BI person

Game analytics suites hand you dashboards if your game fits their taxonomy. Product-analytics tools hand you a blank canvas and a tracking plan to write. Neither is a question you can just ask.

Game analytics suitesWeb product analyticsAgentHog
Before you can ask anythingFit your game into a fixed taxonomy — design, progression, resource, business events.Write a tracking plan up front, then build the dashboards that answer each question.Send events with whatever names you already use. Meaning is applied later — and retroactively.
Getting an answerOpen the prebuilt dashboard, if there is one for the question.Find the dashboard someone built, or build a new one.One command from a shell or your coding agent. --json for scripts.
Game-shaped readsProgression and economy dashboards, out of the box.Product analytics shaped for web and SaaS; games are a stretch.Funnels by platform, retention cohorts, revenue by SKU, experiments, and virtual-currency economy monitoring.
Your raw eventsRaw export is a paid add-on.Available, gated by tier or self-hosting.Read-only SQL and JSON export on every plan, including free.
Free planFree tier with feature and export limits.Usage-based; the useful features climb the tiers.1M events a month, every feature, no credit card.

Think GameAnalytics on the left and PostHog or Mixpanel in the middle. Our reading of their public docs as of August 2026 — check theirs; they change.

How it works

Ship the SDK tonight, ask your first question tomorrow

Three steps, and none of them is a taxonomy workshop.

1

Create a free account

Sign up, create a project, and you get one key that every platform and your backend share.

# one project, every platform
ah_xxxxxxxx
2

Add the SDK

One init call. Scenes, screens, and taps are captured for you; gameplay and shop events are one line each, named however you like.

AgentHog.Init(new AgentHogConfig {
  Host = "http://agenthog.io", ProjectKey = "ah_xxxxxxxx" });
AgentHog.Capture("boss_defeated",
  new Dictionary<string, object> { ["boss"] = "Crypt Lord" });
3

Ask

Install the CLI, log in, and ask. Your coding agent uses the same commands — every one takes --json.

npm i -g @brightmotion/agenthog
ah login && ah digest
ah funnel tutorial_start level_1_complete

Or hand the whole thing to your coding agent

One command installs the AgentHog skill into Claude Code. Then ask it to instrument your Unity project — it knows where the init call goes, how to name events so the CLI can read them, and how to verify events actually arrived.

Install the agent skill

Free for your first million events a month.

Every feature — funnels, retention, revenue, experiments, every SDK, raw SQL — is in the free plan. Pro is $49 a month when you want 12 months of history and more projects.

No credit card. Your events are yours to export, on any plan.

  • Up to 3 teammates

    On the free plan; 20 on Pro. Never per seat.

  • 30 days of history

    12 months on Pro — same features either way.

  • Full CLI & API

    For you and your agent, on every plan.

  • Retroactive by design

    Map revenue or economy later; it applies to everything you already sent.