Skip to content

On a schedule

Know when a project nears its time estimate

You get one email when a project passes 80% of its estimate and another if it goes past 100%.

Runs
On a schedule
Apps
Clockify
AI
Not needed
Access
read (admin or project manager to see all projects)

Send this to your assistant

Create a ClickRuntime automation: every morning at 8am, check my Clockify projects and email me any that have newly used more than 80% or 100% of their time estimate.

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

Project estimates only help if somebody notices when they are used up. A fixed-fee website build is estimated at 120 hours, the team quietly logs 95, and by the time anyone checks, the budget is blown and the client conversation about scope has become a conversation about money. The warning signs were in Clockify the whole time.

On its schedule, this lists your active Clockify projects with their estimates and tracked time, works out the percentage used, and alerts you when a project newly crosses 80% or 100%. It remembers which thresholds it already reported, so you hear once about each crossing.

Project managers and agency owners running fixed-fee or capped-hours work use it to start budget conversations early. The percentage is calculated from the estimate and tracked time that Clockify holds for each project, so the alert follows the same figures your team already uses to plan and bill.

What you get out of it

  • Raise scope talks at 80%, not 100%

    An 80% warning leaves room to renegotiate, reduce scope or reassign work. A 100% warning arrives after the budget is gone, when every conversation is about who pays for the overrun. Still having 20% of the budget left means you can reduce scope, reassign people or agree on extra funding with the client in good time.

  • Protect margin on fixed-fee work

    On a fixed price, hours beyond the estimate come straight out of profit. Spotting the trend early gives you a chance to change course before the project loses money. When hours run past the estimate on fixed-fee work, the cost comes from your own margin, so seeing it coming is worth real money.

  • Avoid repeated nagging

    Because it remembers thresholds already sent, you receive one alert per crossing instead of the same message every day. That keeps the alert meaningful and prevents it being filtered out. Remembering past alerts means an overrun is announced once, and you spend your attention on the project and not on silencing messages.

  • Compare estimates with reality

    Repeated alerts show which kinds of project reliably run over. That feedback improves your next quote, making future estimates more accurate and less dependent on gut feel. Over time, the projects that cross 80% early show where your quotes are too optimistic, and your next estimates improve as a result.

  • Keep clients informed before surprises

    With early warning, you can tell a client that their retainer is nearly consumed. That reads as transparency, while a surprise invoice for extra hours reads as a problem. Clients appreciate hearing that a retainer is nearly used up before it happens, and that transparency often makes extra work easier to approve.

How it works

What happens, step by step

  1. Every morning at 8, ClickRuntime checks your active Clockify projects that have a time estimate.

  2. For each one it works out how much of the estimate has already been tracked.

  3. When a project newly passes 80% or 100% of its estimate, you get an email listing it with the percentage used.

  4. It remembers which warnings it has sent, so each project is flagged once per level.

Before it runs live

  • Connect Clockify

What you get

RunsOn a schedule
Know when a project nears its time estimatetoday, 9:00Succeeded
Email · Project estimates- Northwind redesign: 84% of 120 h used - Acme audit: 103% of 40 h used

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 Clockify 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.
project_estimate_threshold_alert.pyexample
import re
from clickruntime import on_trigger, credentials, http, state, notify

WORKSPACE_ID = "your-workspace-id"

def hours(iso):
    h, m = re.match(r"PT(?:(\d+)H)?(?:(\d+)M)?", iso or "PT0M").groups()
    return int(h or 0) + int(m or 0) / 60

@on_trigger
def run(event):
    projects = http.get(
        f"https://api.clockify.me/api/v1/workspaces/{WORKSPACE_ID}/projects",
        headers={"X-Api-Key": credentials.secret("CLOCKIFY_API_KEY")},
        params={"archived": "false", "hydrated": "true", "page-size": 200},
    ).json()
    sent = state.get("sent") or {}
    lines = []
    for p in projects:
        estimate = hours((p.get("timeEstimate") or {}).get("estimate"))
        if not estimate:
            continue
        used = hours(p.get("duration")) / estimate * 100
        level = 100 if used >= 100 else 80 if used >= 80 else 0
        if level > sent.get(p["id"], 0):
            lines.append(f"- {p['name']}: {used:.0f}% of {estimate:.0f} h used")
        sent[p["id"]] = level
    state.set("sent", sent)
    if lines:
        notify.email_me(f"{len(lines)} Clockify projects crossed an estimate line", "\n".join(lines))
    return {"alerts": len(lines)}

FAQ

Common questions

Which projects does it check?
It checks active Clockify projects that have an estimate set. Projects without an estimate cannot be measured against a budget, so they are skipped rather than reported with misleading percentages. Projects without an estimate cannot be compared with a budget, so they are left out and nothing misleading is reported for them.
Can I use different thresholds such as 50% or 90%?
Yes. The 80% and 100% levels are defaults. Tell your AI assistant the percentages you prefer, and it waits for your yes. Other levels, such as 50% or 90%, can be set to fit how your team works, with the new levels shown to you first.
What if the estimate is raised after an alert?
The thresholds it remembers are based on the percentage used. If you increase the estimate, the percentage drops, and the project can alert again when it later crosses a threshold under the new budget. The alert remembers percentages, so after you raise an estimate the project can warn again as it approaches each level of the larger budget.
What permissions does it need?
read (admin or project manager to see all projects). 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 (on a schedule). 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 “Know when a project nears its time estimate” from your assistant

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