Daily Heroku dyno and add-on inventory digest in Slack

Every weekday morning, get a Slack rundown of every Heroku app, its running dynos, and add-on plans, so you can see what you're running and paying for at a glance.

Deterministic Code
HerokuSlack BotEngineeringOperationsDaily Digests
PromptCreate

Every weekday at 8am, post a Heroku resource inventory digest to Slack so the team can eyeball what we are running and paying for. This is a deterministic workflow: just list, format, and send. No AI reasoning or judgement is required at any step.

Trigger: run on a cron schedule every weekday (Monday through Friday) at 8am. Cron needs no poll support.

Step 1. Call Heroku's List Apps to get every app the connected account can access. If the account has many apps, paginate using Heroku's Range header pattern: when a response comes back partial (HTTP 206) with a Next-Range header, send that exact value as the Range header on the next request and repeat until every app has been collected.

Step 2. For each app, gather its paid resources with two calls. Use Heroku's List App Add-ons to collect the installed add-ons, capturing each add-on's name and its plan name. Use Heroku's List Dynos to collect the running dynos, capturing each dyno's type (for example web or worker), its size (for example Standard-1X, Standard-2X, or Performance-M), and the quantity of dynos of that type and size. Apply the same Range header pagination to these calls if a per-app response is partial.

Step 3. Format the collected data into a per-app inventory grouped by app. For each app, show the app name as a heading, then a dynos section listing type, size, and quantity, and an add-ons section listing add-on name and plan name. Because Slack does not render markdown tables, lay each app's dynos and add-ons inside a preformatted code block (triple backticks) so the columns line up and the sizes and plan names are easy to scan. Keep dyno sizes and add-on plan names as the prominent columns, since those are the paid resources. Note any app with zero dynos or zero add-ons so nothing looks skipped.

Step 4. Post the finished digest to Slack with the Slack Bot Send a Message action, sending it to the ops channel. Use Slack mrkdwn formatting (single asterisks for bold). If the digest is long, split it across multiple messages so nothing is truncated.

Example output

:heroku: *Heroku Resource Inventory: Fri Jul 17* *acme-web-prod* ``` Dynos web Standard-2X x3 worker Standard-1X x2 Add-ons Heroku Postgres standard-0 Heroku Data for Redis premium-0 Papertrail choklad ``` *acme-api-prod* ``` Dynos web Performance-M x2 Add-ons Heroku Postgres standard-2 Heroku Scheduler standard ``` *acme-web-staging* ``` Dynos web Standard-1X x1 Add-ons Heroku Postgres mini ```

Additional information

What does this prompt do?
  • Posts a Slack digest every weekday morning listing every Heroku app the connected account can access.
  • Shows each app's running dynos with their sizes and counts, plus every installed add-on and its plan name.
  • Groups everything by app so the paid resources are easy to scan in one place.
  • Runs automatically on a schedule, with no dashboard hopping and no manual copy-paste.
What do I need to use this?
  • A Heroku account with access to the apps you want to track.
  • A Slack workspace and a channel where the daily digest should be posted.
How can I customize it?
  • Change the timing or days, for example run at 7am or include weekends.
  • Pick which Slack channel receives the digest, or send it as a direct message instead.
  • Narrow it to specific apps or teams if you only want part of your fleet.

Frequently asked questions

When does the digest arrive?
By default it posts every weekday at 8am in your workspace's time zone. You can change the time and the days when you set it up.
Does this show how much I'm paying?
It lists the paid resources behind your bill: each app's dyno sizes and counts and each add-on's plan name. That makes your spend easy to eyeball at a glance, though it does not pull exact dollar amounts.
Will it cover all of my Heroku apps?
Yes. It includes every app the connected Heroku account can access, and it pages through the full list so large fleets are covered too.
Can I send it somewhere other than one channel?
Yes. You can point it at any channel your Slack account can post to, or send it as a direct message.
Does it change anything in Heroku?
No. It only reads your apps, dynos, and add-ons to build the report. It never restarts, scales, or modifies anything.

Stop clicking through Heroku app by app.

Get a daily inventory of every dyno and add-on delivered to Slack, so you always know what you're running and paying for.