Skip to content

Monthly

Get a monthly report of Heroku add-on costs

On the 1st you receive every add-on across your apps with its plan and monthly price, with new ones highlighted.

Runs
Monthly
Apps
Heroku
AI
Not needed
Access
read

Send this to your assistant

Create a ClickRuntime automation: on the 1st of each month email me all add-ons across my Heroku apps with plan name and monthly price, the total, and which add-ons are new since last month.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

Heroku add-ons are the line items nobody remembers buying. A Postgres plan upgraded during a traffic spike and never downgraded, a Redis instance for a prototype that was shelved, a logging add-on attached to an app that now has no users. Across a dozen apps these add up to a few hundred dollars a month, and the invoice arrives as one number with no breakdown a founder or engineering lead can easily act on.

On the first of each month, every Heroku app is listed, the add-ons on each are read with their plan and billed price, and the prices are totalled. The result is compared with last month's stored list, so the email shows what is new, what was removed and what changed in cost.

It is meant for engineering leads, CTOs and finance partners who want to keep infrastructure spend from creeping upward unnoticed.

What you get out of it

  • Forgotten add-ons stop costing money

    An idle Redis or a staging database attached to a dead app is easy to cancel once you can see it. One cancelled add-on pays for months of attention to the report.

  • Cost changes are explained, not just shown

    Comparing with last month turns a bigger invoice into a short list of reasons, such as a plan upgrade on one app. Finance gets an answer without asking engineering. The email then answers the finance question about why the bill grew, which saves an engineer from digging.

  • Budgets are easier to forecast

    A line-by-line view of add-on spend lets you project next quarter's costs with fewer surprises, which matters when infrastructure is a meaningful share of the budget. That reduces the risk of overspending a quarter's infrastructure budget without anyone noticing.

  • Plan upgrades made in a hurry get revisited

    The database plan raised during an incident rarely goes back down on its own. A monthly mention is the reminder to reconsider it when traffic has settled. Reviewing it monthly keeps those emergency decisions from becoming permanent costs nobody chose on purpose.

  • Ownership conversations start

    Seeing which app carries which add-on makes it natural to ask the owning team whether it is still needed, and to retire projects cleanly. Retiring unused add-ons also reduces the number of things your team has to patch, monitor and secure.

How it works

What happens, step by step

  1. On the 1st of each month ClickRuntime goes through all your Heroku apps.

  2. It lists every add-on with its plan and monthly price, and adds up the total.

  3. It compares the list with last month's and marks any add-on that is new.

  4. The report arrives in your inbox.

Before it runs live

  • Connect Heroku

What you get

RunsMonthly
Get a monthly report of Heroku add-on coststoday, 9:00Succeeded
Email · Heroku add-onsshop-api-prod: heroku-postgresql:standard-0 $50.00/mo shop-api-prod: papertrail:choklad $0.00/mo (new)

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Run it at a different time, more or less often, or only on weekdays
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other Heroku steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
get_a_monthly_add_on_cost_report.pyexample
from clickruntime import on_trigger, credentials, http, notify, state

HEROKU = "https://api.heroku.com"

def heroku(path, **headers):
    resp = http.get(f"{HEROKU}{path}", headers={"Accept": "application/vnd.heroku+json; version=3",
                    "Authorization": f"Bearer {credentials.secret('HEROKU_API_KEY')}", **headers})
    resp.raise_for_status()
    return resp.json()

@on_trigger
def run(event):
    previous = set(state.get("addon_ids") or [])
    lines, total, ids = [], 0, []
    for app in heroku("/apps"):
        for a in heroku(f"/apps/{app['id']}/addons"):
            cents = (a.get("billed_price") or {}).get("cents", 0)
            total += cents
            ids.append(a["id"])
            new = " (new)" if previous and a["id"] not in previous else ""
            lines.append(f"{app['name']}: {a['plan']['name']} ${cents / 100:,.2f}/mo{new}")
    notify.email_me(f"Heroku add-ons: ${total / 100:,.2f}/month", "\n".join(lines))
    state.set("addon_ids", ids)
    return {"addons": len(ids), "total": total / 100}

FAQ

Common questions

Does it include dyno costs?
No. It covers add-ons only, using each add-on's billed price. Dyno sizes are covered by a separate weekly inventory, and both can be combined into one monthly message if you would like. A combined report is easy to request.
How accurate are the prices?
They come from the billed price Heroku reports for each add-on, in cents, so the total matches your plan prices. Usage-based add-ons can bill differently from the listed plan, so the invoice may still vary slightly. Treat the email as a close estimate and the Heroku invoice as final.
What if I have apps in several Heroku teams?
Apps visible to the token you connect are included, so give it access to each team you want covered. The email can group costs by team if you want a separate view for each. Giving it a token with access to each is the only requirement.
What permissions does it need?
read. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it runs (monthly). Checks that find nothing to do and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Get a monthly report of Heroku add-on costs” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.