Every 30 minutes
Get warned about a timer left on too long
If a timer has been running more than four hours you get one email naming the entry, project and start time.
- Runs
- Every 30 minutes
- Apps
- Toggl Track
- AI
- Not needed
- Access
- read
Send this to your assistant
Create a ClickRuntime automation: every 30 minutes, check my running Toggl Track timer and email me if it has been going for more than 4 hours.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A Toggl timer left running overnight is one of the most common mistakes in time tracking. You start the clock for a client call, get pulled into something else, close the laptop and open it the next morning to find an entry of 19 hours. Now you have to guess when you actually stopped, edit the entry and hope the client was not billed from a report that went out already.
Every 30 minutes, this checks the timer currently running on your Toggl Track account. If its duration is beyond the limit you set, it emails you the description, project and start time so you can stop or correct it. Each entry triggers only one alert, however long it keeps running.
Hourly workers and agencies who bill from Toggl get the most from it.
What you get out of it
Overbilling avoided before it happens
A 14-hour entry that slips into an invoice can mean a client dispute or a credit note. An alert after a few hours lets you cut the entry down while the real stop time is still easy to recall.
One email per forgotten timer
The alert remembers which entry it already flagged, so you do not get a message every half hour. You hear about the problem once, with the details you need to fix it.
Context in the message itself
The email includes the description, project and start time, so you know straight away which task the timer belongs to. You can act from your phone without opening Toggl to investigate.
Cleaner reports for the whole team
Runaway entries distort project totals and budgets for everyone. Catching them the same day keeps utilization reports realistic, so managers do not make staffing decisions based on phantom hours. Reports then show hours people really worked.
Fewer awkward corrections later
Editing an entry three days after the fact means guessing. A prompt the same afternoon turns a vague correction into a precise one and avoids a note to the client explaining a mistake.
How it works
What happens, step by step
Every 30 minutes, ClickRuntime checks whether a Toggl Track timer is running and how long it has been on.
If it has passed your limit, it emails you the entry's description, project and start time.
It remembers which timer it already warned you about, so you get one email per forgotten timer, not one every half hour.
Before it runs live
- Connect Toggl Track
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 Toggl Track steps into one automation
Under the hood
The code that runs this automation
from datetime import datetime, timezone
from clickruntime import on_trigger, credentials, http, state, notify
LIMIT_HOURS = 4
@on_trigger
def run(event):
auth = (credentials.secret("TOGGL_API_TOKEN"), "api_token")
entry = http.get("https://api.track.toggl.com/api/v9/me/time_entries/current", auth=auth).json()
if not entry:
return {"running": False}
started = datetime.fromisoformat(entry["start"].replace("Z", "+00:00"))
hours = (datetime.now(timezone.utc) - started).total_seconds() / 3600
if hours < LIMIT_HOURS or state.get("alerted_id") == entry["id"]:
return {"running": True, "hours": round(hours, 1)}
project = "No project"
if entry.get("project_id"):
project = http.get(f"https://api.track.toggl.com/api/v9/workspaces/{entry['workspace_id']}"
f"/projects/{entry['project_id']}", auth=auth).json()["name"]
notify.email_me("Toggl timer running over 4 hours",
f"{entry.get('description') or '(no description)'} · {project}\n"
f"Started {started:%H:%M} UTC, {hours:.1f} h ago")
state.set("alerted_id", entry["id"])
return {"alerted": entry["id"]}FAQ
Common questions
How long counts as too long?
Will it alert me again if I keep ignoring it?
Does it stop the timer for me?
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 your week's hours by client and project
Every Friday afternoon you see where your week went, broken down by client and project in hours.
See how it worksReceive an evening list of what you tracked
Each evening you get today's entries with a total, handy for checking nothing is missing before you log off.
See how it worksGet last month's client hours for invoicing
On the first of each month your billable hours per client are in your inbox, ready to turn into invoices.
See how it worksKeep exploring
Set up “Get warned about a timer left on too long” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.