Skip to content

On a schedule

See who is short on hours before the week ends

Each Friday afternoon you get the names of people who tracked fewer hours than your target, while there is still time to fix it.

Runs
On a schedule
Apps
Clockify
AI
Not needed
Access
read (admin to see all users)

Send this to your assistant

Create a ClickRuntime automation: every Friday at 3pm, email me which Clockify users have logged under 35 hours this week and how many hours each one has.

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

Timesheets are only useful when they are complete, and they rarely are. By Friday afternoon someone has logged twelve hours against a forty-hour week, a contractor has logged nothing, and the project manager is about to send a client report built on numbers they know are short. Chasing people individually takes more time than the gap itself.

Every Friday, this runs a Clockify summary report grouped by user, compares each person's tracked hours with the target you set, and emails you the list of people who fell short. You know whom to nudge before the week closes, and no one has to open a spreadsheet.

It suits team leads and operations managers who run weekly payroll or client billing from Clockify data. The comparison is made against a target that you choose, so the list reflects your own expectations for part-timers, contractors and full-time staff, not a generic rule.

What you get out of it

  • Close the week with complete timesheets

    A Friday list lets people fix their entries before the weekend. Waiting until Monday means reconstructing days from memory, and some hours are never recovered. A Friday list gives people the chance to fix entries while the week is still fresh in their heads and the details are easy to recall.

  • Avoid billing clients for less than you worked

    If a consultant's hours are missing, the client invoice is simply too low. Catching the gap while the week is still open protects revenue that would otherwise vanish quietly. Billing a client for the hours actually worked, instead of the hours someone remembered to log, can change the margin on a project.

  • Make payroll runs more reliable

    For hourly staff and contractors, missing entries become pay disputes. A targeted reminder means payroll starts from complete numbers and fewer corrections are needed afterwards. Hourly staff and contractors are paid for what they log, so complete entries mean fewer corrections and arguments after payroll closes.

  • Spare managers the manual chase

    Instead of scanning each person's report, you get a short list of who is under target. A task that took thirty minutes becomes a two-minute email followed by a few messages. You spend a couple of minutes reading one list, rather than half an hour opening each person's timesheet to check it.

  • Be fair with a consistent threshold

    The same target applies to everyone each week, so reminders feel neutral. People are less likely to feel singled out when the rule is visible and applied the same way. A rule applied the same way to everyone feels fair, and reminders stop being taken as a personal criticism from the manager.

How it works

What happens, step by step

  1. Every Friday at 3 pm, ClickRuntime pulls this week's hours for each person in your Clockify workspace.

  2. It compares each person's total with your weekly target, such as 35 hours.

  3. You get an email listing who is under the target and by how much, so they can fill in their time before the week closes.

Before it runs live

  • Connect Clockify

What you get

RunsOn a schedule
See who is short on hours before the week endstoday, 9:00Succeeded
Email · Under 35 hours2 people under 35 h this week - Jordan Lee: 28.5 h - Priya Shah: 31.0 h

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.
missing_time_entry_reminder.pyexample
from datetime import date, datetime, time, timedelta
from clickruntime import on_trigger, credentials, http, notify

WORKSPACE_ID = "your-workspace-id"
TARGET_HOURS = 35

@on_trigger
def run(event):
    monday = date.today() - timedelta(days=date.today().weekday())
    resp = http.post(
        f"https://reports.api.clockify.me/v1/workspaces/{WORKSPACE_ID}/reports/summary",
        headers={"X-Api-Key": credentials.secret("CLOCKIFY_API_KEY")},
        json={"dateRangeStart": f"{datetime.combine(monday, time.min).isoformat()}Z",
              "dateRangeEnd": f"{datetime.combine(date.today(), time.max).isoformat()}Z",
              "summaryFilter": {"groups": ["USER"]}},
    )
    resp.raise_for_status()
    users = [(g["name"], g["duration"] / 3600) for g in resp.json().get("groupOne", [])]
    short = sorted((u for u in users if u[1] < TARGET_HOURS), key=lambda u: u[1])
    if not short:
        return {"under_target": 0}
    notify.email_me(f"{len(short)} people under {TARGET_HOURS} h this week",
                    "\n".join(f"- {name}: {h:.1f} h" for name, h in short))
    return {"under_target": len(short)}

FAQ

Common questions

How is the expected number of hours set?
You choose a target, for example 32 or 40 hours a week, and anyone below it is listed. Part-time staff can have a different target if you tell your AI assistant, and nothing changes until you accept.
Does it account for holidays and time off?
It compares tracked hours with the target you set, so a holiday week would flag everyone unless the target is lowered. Ask for an adjusted target for short weeks, or have the reminder skip a given date.
Does it message the people directly?
By default the email goes to you as the manager. Sending a reminder straight to each person is possible if their email addresses are available from Clockify, and would be shown for your approval first. Reminders could go straight to each person from the list, but only if you want that, and it is added as a separate reviewed step.
What permissions does it need?
read (admin to see all users). 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 “See who is short on hours before the week ends” from your assistant

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