Weekly
Get a weekly Neon usage report
Each Monday you see compute hours and storage for every Neon project in one email.
- Runs
- Weekly
- Apps
- Neon
- AI
- Not needed
- Access
- org/project API key (read)
Send this to your assistant
Create a ClickRuntime automation: every Monday at 9am, email me the compute hours and storage used by each of my Neon projects over the last week.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Neon bills on compute hours and storage, and both can grow without anyone deciding to grow them. A staging database left on autoscaling, a branch that holds a large import, or a project whose endpoint never suspends can double the monthly bill. Usually the first sign is the invoice, and by then the cause is a month old and nobody remembers which project it was.
Every week ClickRuntime lists your Neon projects, reads their consumption metrics for compute time and storage, and emails a table with one row per project. The comparison with earlier weeks makes changes stand out, so you see which database is driving usage while the details are still fresh.
Founders and engineering managers who pay the Neon bill themselves find it especially handy. Some teams also forward it to the person who approves software spend.
What you get out of it
Cost growth is spotted early
A project using twice last week's compute hours is visible within seven days. You can investigate an endpoint that never suspends before it costs a full billing month. You can then investigate an endpoint that never suspends before it costs a full billing month.
Each project is accountable
With usage listed per project, you can tell whether the growth is in the production database or in a side experiment. Owners can then be asked about their own numbers.
Capacity planning uses real figures
Storage trends across several weeks show when you will need a larger plan. You upgrade deliberately instead of being surprised by a limit. You upgrade deliberately, with figures in hand, rather than learning of a limit from an error.
Finance gets numbers without logins
A founder or bookkeeper receives the report without needing a Neon seat. Questions about why the database costs more get answered from the email. A founder or bookkeeper can answer why the database costs more from the email alone.
Idle projects are found
A project with near-zero compute and some storage is a candidate for deletion. Weekly reports make abandoned prototypes visible instead of letting them linger for a year. Weekly figures make abandoned prototypes visible rather than letting them linger for a year.
How it works
What happens, step by step
Every Monday ClickRuntime lists your Neon projects.
It reads each project's compute hours and storage.
The figures arrive in your inbox, one line per project.
Before it runs live
- Connect Neon
What you get
Build your own
Need it to work differently?
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 Neon steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, notify, state
NEON = "https://console.neon.tech/api/v2"
def neon(method, path, **kwargs):
resp = http.request(method, f"{NEON}{path}", headers={"Authorization": f"Bearer {credentials.secret('NEON_API_KEY')}"}, **kwargs)
resp.raise_for_status()
return resp.json()
@on_trigger
def run(event):
last = state.get("compute") or {}
now, lines = {}, []
for p in neon("GET", "/projects")["projects"]:
now[p["id"]] = p.get("compute_time_seconds", 0)
week = now[p["id"]] - last.get(p["id"], 0) if now[p["id"]] >= last.get(p["id"], 0) else now[p["id"]]
lines.append(f"{p['name']}: {week / 3600:,.1f} compute hours, {p.get('synthetic_storage_size', 0) / 1e6:,.0f} MB storage")
notify.email_me("Neon usage last week", "\n".join(lines))
state.set("compute", now)
return {"projects": len(lines)}FAQ
Common questions
Which metrics are included?
Can I report only one project or organization?
Does it need an API key with write access?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Get a warning before storage runs out
You get one alert when a project's storage passes the size you set, not a repeat every check.
See how it worksDelete old preview branches nightly
Preview branches past a set age are removed each night, and you get the list of what went.
See how it worksCreate a dated backup branch every night
Your main branch is copied to a dated branch each night, and only the last seven are kept.
See how it worksKeep exploring
Set up “Get a weekly Neon usage report” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.