Daily
Get your DigitalOcean spend by email each morning
A short email each day with your month-to-date usage and an estimate of yesterday's spend.
- Runs
- Daily
- Apps
- DigitalOcean
- AI
- Not needed
- Access
- billing:read
Send this to your assistant
Create a ClickRuntime automation: every day at 7:30am, email me my DigitalOcean month-to-date usage and the estimated spend for yesterday.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A small SaaS team runs a handful of Droplets, a managed database and a load balancer on DigitalOcean. The invoice arrives on the first of the month and sometimes it is double what everyone expected, because a forgotten test cluster or a snapshot habit ran for three weeks. By the time anyone sees the number, the money is spent and the only option left is to explain it to finance.
Every morning the automation reads your account balance, pulls the previous day's usage insight and emails you the month-to-date bill and yesterday's spend. It is a one-glance check, short enough to read in a few seconds, and it shows the trend building long before the invoice does.
Founders, freelancers hosting client projects and engineers who own a cloud budget get the most from it.
What you get out of it
Cost creep spotted within a day
If yesterday's spend jumps because someone resized a Droplet, the next morning's email shows it. You can resize back after one day of extra cost rather than thirty, which is much cheaper than catching the mistake once it is a month old.
No end-of-month invoice shock
Seeing month-to-date numbers build up each morning means the final bill matches what you were already expecting. It also gives you a talking point ready whenever someone asks why the bill rose, which makes budget conversations quiet ones.
Agency work billed accurately
If you host client projects on one account, daily totals help you match infrastructure cost to the invoices you send. That lets you quote hosting with real numbers, so it is never a silent loss on a fixed-price job.
A habit of looking at cost
The email arrives whether or not anyone remembered to open the billing page, which turns cost review from an occasional chore into a normal part of the day. The habit of glancing at cost is what stops small leaks becoming large ones.
History without a spreadsheet
Because each day's numbers arrive by email, you have a running record to search when someone asks what the bill looked like in the middle of last month. It is a plain log that needs no export, no formulas and no upkeep.
How it works
What happens, step by step
Every morning ClickRuntime checks your DigitalOcean account.
It reads your usage so far this month and an estimate of what you spent yesterday.
Both figures arrive in your inbox as a short email.
Before it runs live
- Connect DigitalOcean
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 DigitalOcean steps into one automation
Under the hood
The code that runs this automation
from datetime import date, timedelta
from clickruntime import on_trigger, credentials, http, notify
DO = "https://api.digitalocean.com/v2"
def do(method, path, **kwargs):
resp = http.request(method, f"{DO}{path}", headers={"Authorization": f"Bearer {credentials.secret('DIGITALOCEAN_TOKEN')}"}, **kwargs)
resp.raise_for_status()
return resp.json() if resp.content else {}
@on_trigger
def run(event):
balance = do("GET", "/customers/my/balance")
team = do("GET", "/account")["account"]["team"]["uuid"]
day = date.today() - timedelta(days=1)
insights = do("GET", f"/billing/do:team:{team}/insights/{day}/{day}")
yesterday = sum(float(p["total_amount"]) for p in insights.get("data_points", []))
notify.email_me(f"DigitalOcean: ${float(balance['month_to_date_usage']):,.2f} this month",
f"Month-to-date usage: ${float(balance['month_to_date_usage']):,.2f}\nEstimated spend {day}: ${yesterday:,.2f}")
return {"mtd": balance["month_to_date_usage"], "yesterday": yesterday}FAQ
Common questions
Does the report include the current balance or only usage?
Which DigitalOcean token scope is required?
Can I get the report only on weekdays?
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
Snapshot your Droplets every night
Each Droplet gets a fresh snapshot overnight, snapshots older than your retention window are cleared, and you get an email listing what happened.
See how it worksGet warned when your bill goes over budget
One message the first time this month's usage passes the amount you set, and no repeats until next month.
See how it worksSee which Droplets are running hot each week
A Monday email with average CPU, memory and disk use for every Droplet, with anything above your limit flagged.
See how it worksKeep exploring
Set up “Get your DigitalOcean spend by email each morning” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.