Everything Erdi puts on the timeline
When a number moves, you see what you shipped, what broke, what you spent and what your users wrote — in the same fortnight, on the same chart.
Aug 25
- deployv1.4.0 — paywall rewrite09:12
- ticket3 reports: sign-in fails on iOS 1814:40
- externalPrice raised to EUR 916:05
Know where your product stands
A percentage move means little without your own baseline. Typical range shows how much this metric usually swings week to week.
Drag the slider to change this week's number.
−9% · inside your typical range (±14%)
Based on how much this metric varied over the last 90 days. Your own history, not someone else's.
See what happened around a change
Markers
A day where you shipped three things reads as one marker with a three on it. You open it and see all three, in order.
Releases
You find the release on the day it went live, not buried in a trail of commits. A published GitHub release is one marker; tag pushes that belong to it point at the same place.
Support spikes
When users flood the inbox, you see it next to the deploys from that day. Point your existing support address at the project — critical tickets become markers, the rest only count.
The good weeks too
A jump is as hard to explain as a drop, and worth more. When paying customers spike, the same fortnight is right there — the release, the post, the price you changed. You find out what to do again.
The board
The price change, the copy fix, the thing you did in a dashboard — they do not touch GitHub, and in three months you are unlikely to remember when they happened. Tick them off here and they are on the chart.
Quick Add
Press E from anywhere in the app and the price change, the tweet, or the thing that did not come through a webhook is on the timeline the same day. You capture it while you still remember why it mattered.
Sentry
A new error sits next to the deploy from that day, so you see whether it appeared after the release. Fatal and error issues appear once; repeats of the same issue do not pile up.
What a customer costs you
Revenue, ad spend and operating cost meet on one timeline. The funnel shows where a change started — stage by stage, not one blended conversion rate.
Drag the Activation slider to see downstream stages move.
Attention
12,400
Arrival
840
Signup
96
Activation
71
Paying
14
Stage ratios compare daily totals, not the same people over time. Good for spotting change, not for exact conversion rates.
Read the numbers without leaving
Second series
You can watch revenue next to users on the same chart. The second metric plots dashed, so both stay readable. Turn it on from the project when two numbers belong together.
Compare projects
You see which product moved first when two share a role. The all-projects view indexes them to 100; absolute scale stays on each project's own chart.
Delayed sources
A Tuesday that looks like zero is less alarming when you know the report is still pending. App Store Connect and Play Console report one to two days late, and those days are drawn as pending, not as a drop.
Timeline
You read the number and the fortnight around it without leaving the chart. The metric curve sits on the same line as the days.
Breakdown
You open the split when you need the sources, countries, or a group you named — still under the primary line, not as a second dashboard.
Export
You take the visible chart as CSV from the project, or a full copy of the account from Settings → Your data.
Get your history in without doing work
Cursor, Claude Code, Codex
Cursor, Claude Code, Codex can post deploy markers with a title better than a commit hash. On Vercel Hobby, this is the main route — webhooks need Pro.
The agent posts when it runs the deploy. If you push yourself, run the script by hand — or push a tag, which the GitHub hook picks up.
{ "kind": "deploy",
"title": "v1.4.0 — paywall",
"source": "agent" }Generic endpoint
Operating cost from your ledger, sign-up counts from a script, or anything else you measure daily — one POST per day per metric through the same HTTP endpoint as events. The request shape is documented at /docs/api.
{ "metric": "operating_cost",
"day": "2026-08-01",
"value": 840 }Email forwarding
Critical mail becomes a marker on the day it arrived; the rest only counts. Each project has a forwarding address every mail provider and support tool can point at.
p-a7f3k2@in.erdiknows.com
Webhooks
Deploys, errors and purchases land on the timeline as they happen — no polling. Receivers cover GitHub, Netlify, Sentry, RevenueCat and Paddle; Vercel webhooks need the Pro plan, so on Hobby you post from the agent or your build instead.
Pull connectors
Installs, spend and traffic show up on a schedule without you copying numbers by hand. Pull connectors cover Stripe, App Store Connect, Apple Ads, Play Console, Plausible, Umami and Your own endpoint. Erdi fetches; you connect once.
Revenue
Anything
Get told instead of checking
Drag the sliders to see when a mail would have been sent.
This setting would have written to you 3 times in 30 days.
Days a source hasn't reported yet are skipped — a pending App Store day is not a drop.
Five conditions
You set the thresholds that matter — below, above, drops by %, rises by %, and no data — and Erdi checks them once a day on the same cron as the daily mail. New paying users up 40% — with the fortnight before it in the mail.
Context in the alert
You read the mail on your phone and already know whether it was something you did. The fortnight before the change is in the mail — including the case where nothing shipped.
revenue down 27%
- deploy · v1.4.0 — paywall rewrite
- ticket · sign-in fails on iOS 18
- external · Price raised to EUR 9
Hysteresis
You decide how many days in a row before Erdi writes, so a one-day dip stays quiet. It stays quiet until the condition clears.
Lag days
A pending App Store day should not trigger a "no data" alert. Alerts skip the days a source has not reported yet.
Daily and weekly recap
You get what shipped and how the numbers moved when the day is over, and a weekly mail that puts the week's events next to the change.
It stays yours
No SDK
Erdi reads what your own tools already know. No code runs inside your apps, and your end customers are not observed — no session recording, no usage profiles. Security and hosting.
EU hosting
Your data stays in the EU. The database and authentication run in Frankfurt, on Supabase.
Encrypted keys
Webhook secrets and connector keys stay encrypted at rest with AES-256-GCM — not in config and not in the browser.
DPA
A data processing agreement under Art. 28 GDPR is published at /dpa.
No cookie banner
The public marketing site sets no cookies. After sign-in, only what is needed for your session — session cookies from our auth provider and a device cookie for security notices. No analytics cookies, no optional tracking.
No AI training
Erdi does not use your events, metrics or mail to train models. Nothing you send is used to improve a third-party system.
Export
You leave with a copy — CSV from the project, a full archive from Settings → Your data.
Public ship log
You publish a public page with the metric curve and event markers when you want one. Off by default — you choose every metric and every event. The URL is random, not guessable from the project name. Index is the default so absolute numbers stay private. When the reader is the client paying for the build — not the developer — that case is described on for clients.
Share the story, not just the number
From the project you download a recap image for a week or a release — a picture of what shipped, ready for a post.
Built for watching products, not managing teams. No assignments, no time tracking.
Erdi records what happened around your products.
Questions before signing up are on the FAQ. How to send data is in the docs.
Connect a project and put your events next to the numbers.
14-day trial. No card required.