Daily KPI Digest: all your numbers, one message, zero dashboards
An n8n workflow that pulls your key metrics every evening — revenue from Stripe, orders from Shopify, traffic from your analytics sheet — has Claude write a three-line summary highlighting what changed and why it matters, and sends it to Telegram at 21:00.
- 1
Fetch each metric in parallel
A
Schedule Trigger(21:00) fans out to three branches: aStripenode summing today's charges, aShopifynode counting today's orders, and aGoogle Sheetsread of today's traffic row (or an HTTP call to your analytics API). Each branch also fetches the last 7 days for comparison. - 2
Merge and normalize
A
Mergenode combines the branches and aCodenode shapes them into a compact JSON: each metric with today's value, the 7-day average, and the percent delta. Keeping this step dumb and numeric makes the whole flow easy to extend. - 3
Claude writes the story
One
HTTP Requestto Claude: 'Here are today's metrics vs 7-day averages. Write max 4 lines: what happened, the most likely driver, and one thing to watch. No pleasantries, no emojis except a single leading one.' Numbers in, judgment out. - 4
Send it
A
Telegramnode delivers the digest to your private chat or a founders' group. Three weeks in, you'll notice you've stopped logging into dashboards — the digest became the interface.
Frequently asked questions
What makes this better than a metrics dashboard?
Dashboards show everything and tell you nothing — you still do the interpreting, so you stop looking. Claude's summary does the comparing for you: 'Revenue $1.4k, +22% vs 7-day avg, driven by 9 orders of the new bundle. Traffic flat. Watch: refund rate ticked up to 4%.' Signal, delivered, in the app you already check.
My metrics live in different tools than these three.
The pattern is source-agnostic: each metric is one node fetching one number. Swap Stripe for PayPal, Shopify for WooCommerce, the analytics sheet for a Plausible or Umami API call. As long as each branch outputs {metric, today, avg7d}, the Claude step and the digest work unchanged.
Why evening instead of morning?
A 21:00 digest covers the actual day and lets you sleep on decisions instead of reacting at breakfast. If you prefer mornings, change one field in the Schedule node — the digest then covers yesterday. Some founders run both; the workflow is cheap enough that it doesn't matter.