One API.
Every app's numbers.

Add one line of code and see revenue, MRR, signups, and active users for all your apps in one place, then read the same numbers back over HTTP.

$curl -X POST in.datagauge.dev/v1/events -d '{"name":"user_signup"}'
anywhere_in_your_stack.sh
POST /v1/events {"name":"purchase","amount":4900}
DataGauge core
App
postcard
Deduplication
counted once
Revenue · 30d
+$49.00
Portfolio MRR
updated
Dashboard
Read API
Agents
Infrastructure

A metrics pipeline,
not another dashboard tab.

Send a number in with one call from any language. Pull it back out the same way. Nothing to install.

Write from anywhere

One POST per event, from any stack. An app appears the moment its first event arrives.

the write side
$ curl -X POST https://in.datagauge.dev/v1/events \
  -H "Authorization: Bearer sk_live_..." \
  -d '{"name":"user_signup","user":"usr_8813"}'

Read your numbers back

The same numbers the dashboard shows, served over HTTP for your pricing page, your scripts, or your Friday investor update.

the read side
$ curl https://api.datagauge.dev/v1/metrics/mrr

{ "ok": true, "metric": "mrr",
  "data": [ { "currency": "usd", "mrr": 4900 } ] }

Numbers you can trust

Ingest is idempotent. A webhook that fires twice can't double your revenue; a retried event can't inflate your user count.

Ingest ledger
evt_8f31 · charge.succeeded · $49counted
evt_8f31 · webhook fired twicedropped
evt_9a02 · user_signupcounted
revenue unchanged by the retry

Readable by machines

Your docs and API schema are published in the formats agents already look for. Your numbers aren't locked in a UI.

Agent surfaces
GET /llms.txttext/plain200
GET /llms-full.txttext/plain200
GET /openapi.jsonapplication/json200
the docs an agent can actually read
Deliberately not analytics

The problem with
a dashboard per app.

You want to check your numbers. Instead, you're collecting tabs.

Fragmented dashboards

Stripe for money, one analytics tab per app, a spreadsheet for the rollup.

Vanity noise

Funnels, heatmaps, session replay: everything except the four numbers you actually check.

Double counting

Retried webhooks and replayed events quietly inflate revenue and user counts.

Locked in a UI

Your own numbers, unreadable by your scripts, your status page, or your agents.

app.datagauge.dev/dashboard
Net new MRR · July
+$1,2408%

Portfolio MRR is now $14,800/mo across 4 apps.

Your apps4 apps · 1 excluded
SculptSaaS

3,190 users · 212 signups

$9,900
Ferry CLILibrary

88 signups

4,006
PostcardDesktop

1,216 users · 41 signups

$4,900
AcmeSaaS

Client · excluded from portfolio

$2,300
Portfolio

Mission control
for everything you run.

See the totals across every app you own, then open any one for the detail. New apps appear the moment their first event arrives, and client work stays out of your numbers.

The contract

Accuracy, handled.

The boring guarantees that keep your numbers worth checking. A webhook that fires twice can't double your revenue, and keys that live in client code can't touch money.

Guarantees
Ingest
idempotent · retries counted once
Money events
server keys only
Read API
same numbers as the dashboard
Formats
llms.txt · openapi.json
Pricing

30 days to try it.
From $12/year after that.

Nothing is charged until the free days are up, and cancelling before then costs you nothing, so wire up your first app and see a real number before you decide. One flat price covers your whole portfolio, with no per-seat math.

Questions, answered.