See what actually drives revenue.

Revenue analytics for AI-native SaaS. The board-ready numbers your whole team reads — and the only dashboard that already counts your agent traffic as a channel.

Scroll
A dashboard for humans. tga for your agents.

Know which channels — human and agent — actually make you money.

No card, no admin in the loop — your agent can bootstrap its own tenant.

# No account yet? Create a tenant and its first key
$ npm install -g analyga
$ tga signup --slug acme --name "Acme" --username you --password ********
$ tga login --key tga_...
# Five numbers, not a dashboard
$ tga stats <websiteId> --from 7d --json

Works with: Claude Code · Cursor · Cline · Windsurf · Aider · Codex · any MCP client

Why this exists

Every analytics tool was built for an analyst — not for the person who owns the number.

If you own revenue at an AI-native SaaS, GA4 and umami hand you a wall of data and leave you to defend a number to your board on your own. analyga shows you what pays — in language your board reads — organised around the growth funnel you already think in. And it's the only one that counts agent traffic: the MCP and AI calls hitting your product that are already a channel of their own. Your engineers get a CLI and MCP server they love; you get a dashboard you can screenshot straight into the deck.

Features

Organised around your funnel — not an analyst's data model.

Every question a growth leader actually asks, in plain language. And when finance needs the receipts, the raw evidence is one click away.

◐

Ready for agent traffic

MCP and AI agents are already a channel. analyga is the only analytics that counts them alongside your human traffic — tick the box your board will ask about next year.

⟿

Where they come from

Campaigns, top pages and sources in one view. See which channels — human and agent — bring the visitors that convert.

▤

What they do & what pays

Goals, funnels and journeys show activation; revenue and attribution show what actually drives sales. The number you defend to the board, ready to screenshot.

⚑

The evidence, on tap

Every action and every visit sits under the funnel as receipts — so when someone questions a number, you show them the underlying events, not a hand-wave.

↥

Your engineers will love it too

Server-side ingest with scoped per-website keys, and a dropped-as-bot event that fails loudly instead of faking a 200. Clean data you can trust.

◈

Built agent-first, end to end

tga agent-schema --json emits every command, flag and error code, and every failure carries a stable code. If it's not in the schema, it doesn't exist.

See it in action

Real terminal sessions. Real JSON back.

No mockups — every clip is a live tga session against a seeded tenant. Pick a scenario.

One agent, one terminal, 60 seconds
How it works

One install. Query to funnel in three commands.

01

Point at a tenant

Sign up keyless, or log in with an existing key. tga whoami tells you which tenant you're about to write to.

tga signup --slug acme --name "Acme" tga login --key tga_...
02

Query anything

Stats, events, funnels and network rollups — all read-only, all --json. The machine surface is a first-class citizen.

tga stats <id> --from 7d tga funnel run <funnelId> --from 30d
03

Send events server-side

Mint a scoped ingest key, then send with a stable --id so agents never collapse into one visitor.

tga ingest-key create <id> tga send <id> --name signup --id u_42
MCP server

Prefer tools over a CLI? 13 native tools.

Point Claude Code, Cursor, Cline, Windsurf — any MCP client — at analyga and your agent gets tools covering stats, events, funnels, websites, identity, server-side ingest and billing checkout. A tool result and --json output are the same bytes.

# Local, for Claude Code / Cursor / Cline / Windsurf
$ tga mcp-serve

# Remote — zero install, Bearer your API key
URL:  https://mcp.analyga.com/sse
Auth: Authorization: Bearer tga_...
Pricing

Start free. No card to bootstrap.

Metered only on event volume. Sign up keyless, then hand a human a Stripe Checkout URL when you're ready to upgrade.

Free

$0
Everything an agent needs to start — no card, no admin in the loop.
  • 3 websites
  • 100k events / month
  • 30-day retention
  • 1 seat · full CLI + MCP
Start free

Pro

Metered · by volume
Scale sites and events; billed by event volume.
  • 50 websites
  • 10M events / month
  • 365-day retention
  • 10 seats
Get Pro

An agent authenticates with its tenant key and gets back a checkout URL: tga billing checkout --plan pro

Cost check

Storing events is cheap anywhere. Getting analytics out isn’t.

Pipe the same 10M events / month into CloudWatch Logs and the ingest is pennies — but every dashboard and every agent query is billed again on the bytes it scans, and you still build the funnels yourself.

analyga Pro
$69 / mo flat
  • ✓ 10M events ingested
  • ✓ Unlimited queries — never metered
  • ✓ Funnels, retention, attribution built in
  • ✓ Dashboards + MCP included
CloudWatch Logs, same volume
$5 ingest… then it climbs
  • ~$5 to ingest 10GB · $0.03/GB to store
  • + $0.005/GB scanned on every query
  • + $0.30 / metric · $3 / dashboard
  • + you build every funnel yourself

CloudWatch Logs list pricing (us-east-1): $0.50/GB ingest, $0.005/GB scanned by Logs Insights; ~1KB/event assumed. analyga bundles ingest, storage, querying and the analytics layer into one flat number.

Built for agents

Stable error codes agents branch on.

Failures carry a stable code and a distinct exit code. Once published, codes are never reworded.

ExitMeaningWhat to do
2usagefix the call, do not retry
3authfix the credential
4permissiondo not retry, escalate
5not foundcheck the id
6validationfix the payload
7rate limitedback off and retry
8networkretry is reasonable
9serverretry once, then report
FAQ

Questions

Can my agent sign itself up?

Yes. tga signup is keyless — it works before you have a credential — and creates a tenant plus its first API key with no card and no admin in the loop. The one step an agent can't do is pay: a human opens the Stripe Checkout URL once to upgrade.

How is this different from a normal analytics dashboard?

The dashboard is for humans. analyga's primary interface is the tga CLI and the MCP server — the agent that fired the events queries the numbers itself, as structured JSON, and branches on them. Same product covers web traffic and agent/MCP traffic.

Why do I need to pass --id?

Anonymous identity is derived from IP and user-agent. Agents share both — one CLI version is one user-agent, and agents often share an egress IP — so without a stable --id every agent behind that IP collapses into a single visitor. It cannot be backfilled.

What happens to a dropped event?

A discarded event still answers HTTP 200 — the ingest endpoint returns {"beep":"boop"} when it drops an event as a bot. The CLI treats that as a hard failure with a hint, so an agent never believes a dropped event succeeded.

How do I know I won't guess a flag wrong?

Run tga agent-schema --json. It returns every command, argument, flag, type and the full list of error codes — generated from the same table that drives the parser, help text and MCP tools, so it cannot drift. If it's not in the schema, it doesn't exist.

Give your agents their analytics.

One install, and it queries stats and funnels across web and MCP, sends server-side events, and reads its own schema.

$ npm install -g analyga
$ tga stats <websiteId> --from 7d --json
Get analyga on npm

A full dashboard your whole team can read.

Agents run the instrumentation — but everything they capture lands in a complete, real-time dashboard. Live visitors, funnels, retention, revenue and journeys, all in one place. No terminal required.