# Weekly Heroku deploy-frequency report posted to Slack

> Every Monday, get a clear rundown of how often each Heroku app shipped last week, which ones stalled, and which look unstable, posted straight to Slack.

- Workflow type: agent
- Services: Heroku, Slack Bot
- Categories: Engineering
- Published: 2026-07-17

## What it does

- Checks every Heroku app your account can access and counts how many times each one deployed in the past week.
- Ranks your apps by deploy frequency and calls out the least active and least stable ones.
- Flags any app that has not shipped in more than two weeks as stale, so nothing quietly falls behind.
- Posts the finished report to your engineering team's Slack channel every Monday morning.

## What you'll need

- A Heroku account with access to the apps you want to track.
- A Slack workspace where the report can be posted.
- A channel for your engineering team to receive the weekly update.

## Prompt

Every Monday at 9am, put together a weekly deploy-health report for our Heroku apps and post it to our engineering team's Slack channel. Run this on a cron schedule, weekly on Monday morning.

Start by calling Heroku's List Apps operation to enumerate every app the connected account can access. For each app, call Heroku's List Releases operation to pull its recent deploy history, and keep the releases from the past seven days, plus enough earlier history to tell when each app last shipped.

For each app, compute its deploy frequency for the week, meaning how many releases went out. Treat rollbacks as an instability signal. A rollback shows up in the release history as a new release whose description indicates it rolled back to an earlier version, so count those separately per app. Flag any app that has not had a new deploy in more than two weeks as stale.

Write it up as a concise, DORA-style deploy-frequency report. Deploy frequency is one of the four DORA metrics, so frame the numbers that way. Rank the apps by deploy count, most active first, and include a short callout of the least active apps and the least stable apps, meaning those with the most rollbacks. Keep it skimmable: a ranked list showing per-app deploy counts and rollback counts plus the stale flags, with a one or two line summary at the top.

Post the finished report to Slack using Slack Bot's Send a Message operation, sending it to our engineering channel. Format it with Slack mrkdwn, for example *bold* section headers, so it reads cleanly in the channel.

## How to customize

- Change the schedule to send it daily, biweekly, or on a different day and time.
- Pick which Slack channel the report is posted to.
- Adjust the thresholds, like how many days without a deploy counts as stale.

## Example output

*Weekly Heroku Deploy Health (Jul 6 to Jul 13)*
12 deploys across 6 apps this week. 1 rollback. 2 apps flagged stale.

*Ranked by deploy frequency*
1. api-gateway: 5 deploys, 0 rollbacks
2. web-dashboard: 4 deploys, 1 rollback
3. billing-service: 2 deploys, 0 rollbacks
4. notifications: 1 deploy, 0 rollbacks
5. legacy-importer: 0 deploys (stale, last shipped 19 days ago)
6. reporting-cron: 0 deploys (stale, last shipped 23 days ago)

*Least active:* legacy-importer and reporting-cron have not shipped in over two weeks.
*Least stable:* web-dashboard had 1 rollback this week, worth a look before the next release.

## FAQ

### What is deploy frequency and why does it matter?

Deploy frequency is how often you ship changes to production. It is one of the four DORA metrics that engineering teams use to gauge how quickly and safely they deliver. Shipping more often, in smaller batches, usually points to a healthier delivery process.

### Do I have to count deploys by hand?

No. The report gathers each app's recent release history automatically and does the counting and ranking for you, so you get the numbers without opening the Heroku dashboard.

### What makes an app show up as stale?

Any app that has not had a new deploy in more than two weeks is flagged as stale. You can change that window to match your team's release cadence.

### How does it decide an app is unstable?

It looks for rollbacks in each app's recent history. Frequent rollbacks are treated as a sign of instability and get called out in the report.

### Can I run this on a different schedule?

Yes. It runs every Monday morning by default, but you can change it to any day and time, or run it more or less often.

Use this prompt in General Input: https://www.generalinput.com/prompts/weekly-heroku-deploy-frequency-report-posted-to-slack