← Use Cases
🚀 Indie SaaS Founders

Know your MRR before
your investors do.

You built your SaaS to solve problems, not to wrestle with Datadog dashboards or decipher GA4's funnel reports. Umlogger gives you a clean pulse on the numbers that actually move your business.

One HTTP call per event. No agents to configure. No tiered pricing to decode. Wake up to a daily email showing yesterday's signups, MRR, and churn — then get back to shipping.

Morning digest · TodayAll good
New signups
+18
+3 vs yesterday
MRR
$931
+$129 this week
Churn events
1
= same as avg
Trial → Paid
7
+2 vs last week

Metrics every indie SaaS should track

Each one is a single HTTP call — or one line in your webhook handler.

count
New signups

Log one count event when a user completes signup.

value
MRR (cents)

Push your current MRR in cents whenever a subscription changes.

count
Churn events

One count when a subscription is cancelled — alert if it spikes.

count
Trial conversions

Log when a trial converts to paid — compare against new signups.

Live in 5 minutes

No agents, no YAML, no infrastructure. Just an HTTP call.

1
Create a metric in the console
Name it, pick a type (count or value), and copy the per-metric public key shown on its detail page.
2
Fire an HTTP call when the event happens
Drop this in your Stripe webhook handler, your signup route, or wherever the event fires:
// Node.js — after a successful Stripe checkout.session.completed
await fetch(
  `https://data.umlogger.com/api/m?key=pmk_YOUR_KEY&value=1`
);
3
Enable the daily digest
Go to Settings, turn on the daily summary email, and tick “Include in daily email” on each metric. The digest lands in your inbox each morning at your chosen time.
4
Set an alert on churn
On the churn metric's detail page, add a threshold alert: “email me if count exceeds 3 in the last 24 hours.” You'll know before you open your laptop.

Track MRR as a value, not a guess

Unlike event-count tools, Umlogger's value type stores the current state of a number. Push your MRR in cents after every Stripe webhook and the chart reflects reality — no aggregation math required.

// Recompute MRR after every Stripe event and push the new total
const mrrCents = await computeMrr(stripe);

await fetch(
  `https://data.umlogger.com/api/m?key=pmk_MRR_METRIC_KEY&value=${mrrCents}`
);

Common questions

How many metrics can I have?
Unlimited metrics are included in the $1/month plan. No per-metric charges, ever.
Can I overlay two metrics — like signups vs. churn?
Yes. Any metric detail page lets you overlay a second metric on the same chart, so you can visually compare signup rate against churn rate at a glance.
What if I push bad data by accident?
Individual data points can be removed from the metric detail page. You can also add samples manually if a webhook was missed.
Is my data private?
Your org's data is isolated by tenant. Queries are scoped to your org_id; a missing clause returns zero rows rather than leaking data. You're on your own database partition.

Stop guessing.
Start tracking.

42-day free trial. No credit card required. Cancel any time — though at $1/month, you probably won't bother.

Get started free →