On a schedule
Hear when a project uses 80% of its budget
You get one email for each project that crosses 80% of its budget, early enough to talk to the client.
- Runs
- On a schedule
- Apps
- Harvest
- AI
- Not needed
- Access
- read (admin)
Send this to your assistant
Create a ClickRuntime automation: every morning at 8am, check my Harvest project budgets and email me any project that has gone over 80% for the first time.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Fixed-fee and capped projects have a budget in Harvest, and the dangerous moment is not when it is spent but when it is two-thirds spent and the work is only half done. A project manager running six projects cannot watch six budget bars daily, so the first warning is often the invoice showing the project is 110% over. At that point the conversation with the client is about an overrun that has already happened.
On a schedule, the project budget report is read, projects over 80% of their budget are identified and, if they have not been flagged before, an email lists them with hours or dollars used, the budget and the percentage. Each project is flagged once, so the email is a signal and not a nag.
It suits agencies, consultants and in-house teams that deliver against fixed budgets and need time to renegotiate scope.
What you get out of it
Overruns are discussed before they happen
At 80% you can still agree a scope change, a change order or a reprioritization with the client. At 110% you can only explain what went wrong. Early talks about scope are usually friendlier than late ones about overruns.
Margins are protected
Unbilled overrun hours come straight out of profit on a fixed-fee job. An early warning gives you the chance to cut scope or add budget before the loss is locked in.
Project managers stay in control of many projects
Instead of checking every budget bar daily, the manager is told about the ones that need attention, which makes a long project list manageable. With a list of risky projects each cycle, attention goes where it is needed most.
Clients hear it from you first
A proactive message about budget status builds trust. Clients who are surprised by an overrun on the invoice rarely respond well, however good the work was. Proactive updates tend to be received as professionalism, not as bad news.
Estimates improve over time
Seeing which projects hit 80% early, and why, gives you data to improve estimates on the next proposal, so the same mistakes do not recur. Over a year that history makes proposals more realistic and reduces repeat overruns.
Agreed scope changes get documented
An early warning is the natural moment to write a change order. When it is sent at 80% and not after the budget is gone, clients are more willing to approve it and you have a paper trail for the extra work.
How it works
What happens, step by step
Every morning at 8, ClickRuntime pulls the budget report for your Harvest projects.
It picks out projects that have used 80% or more of their budget and that you have not already been warned about.
You get one email listing each project with the share of budget used and how much is left, for example "Acme / Website relaunch: 83% used".
Before it runs live
- Connect Harvest
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 Harvest steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, state, notify, http, credentials
@on_trigger
def run(event):
headers = {"Authorization": "Bearer " + credentials.secret("HARVEST_TOKEN"),
"Harvest-Account-Id": credentials.secret("HARVEST_ACCOUNT_ID"), "User-Agent": "ClickRuntime"}
results = http.get("https://api.harvestapp.com/v2/reports/project_budget", headers=headers, params={"is_active": "true"}).json()["results"]
alerted = set(state.get("alerted") or [])
over = [p for p in results if p.get("budget") and p["budget_spent"] / p["budget"] >= 0.8 and p["project_id"] not in alerted]
if over:
lines = [f"{p['client_name']} / {p['project_name']}: {p['budget_spent'] / p['budget']:.0%} used ({p['budget_remaining']:,.1f} left)" for p in over]
notify.email_me(f"{len(over)} Harvest projects over 80% of budget", "\n".join(lines))
state.set("alerted", list(alerted | {p["project_id"] for p in over}))
return {"over": len(over)}FAQ
Common questions
Can I change the 80% threshold?
Does it cover both hours-based and fee-based budgets?
Will it keep alerting while the project stays above 80%?
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
Find out who didn't log their hours yesterday
Each weekday morning your channel lists the people whose tracked time for the previous day fell short.
See how it worksGet Friday's hours by project and person
At the end of each week you receive the hours your team logged, split by project and by person.
See how it worksCatch Harvest timers left running in the evening
At 7pm you get a list of any timers still going, with the person, project and hours so far, and no email when there are none.
See how it worksKeep exploring
Set up “Hear when a project uses 80% of its budget” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.
