Hubstaff automation · runs weekly
Approve Hubstaff timesheets with AI
The pay period ended on Sunday night, and on Monday every submitted timesheet sits in Timesheets > Approvals waiting for a manager to open it, check the hours and click approve before payroll can run.
Cotlet does it in your own Hubstaff account with list_timesheets, list_manual_time_requests, get_daily_activity, approve_timesheet and deny_timesheet, called by your AI agent, an n8n workflow or a script.
Hosted · nothing to install or maintain
Can Hubstaff do this on its own?
Hubstaff has timesheet approvals in the app and a PUT /v2/timesheets/{id} endpoint, and its MCP server is read-only (checked 17 Oct 2026). The setup guide describes approving one timesheet at a time with Actions > Approve and describes no rule-based approval. No Hubstaff setting approves a timesheet because its activity is high or its manual time is clean, which is the gap this job fills.
How you do it in Hubstaff today
- An owner turns on timesheet approvals under Settings > All settings > Enable/disable features, and adds a pay period for each member who needs approval.
- Hubstaff creates the timesheets from those pay periods, and members submit theirs after the period ends from Timesheets > Approvals > Actions > Submit.
- A manager opens Timesheets > Approvals, which starts on the Open tab, and switches to the Submitted tab to see what waits.
- The manager opens each timesheet with Actions > View to read total hours, manual time, activity percentages, overtime, PTO, holidays and the amount owed.
- The manager then clicks Actions > Approve, or Actions > Deny, next to that timesheet, one at a time.
- With the Require approval setting on, a member whose timesheet is not approved is left out of the next payroll and has to be paid by hand, so nobody can skip this step.
How to approve Hubstaff timesheets with AI
It is the first day after the pay period. Go through the Hubstaff timesheets that are submitted. Approve the ones with no pending manual time or time off and with activity above 40 percent, and deny any with a clear problem and a reason. List the rest for me. - 01
Collect the submitted ones
list_timesheets runs with status submitted and your pay period dates, and pages through the cursor until the list ends, so a big team is judged as one batch.
- 02
Check for pending manual time
list_manual_time_requests runs with status submitted for the same dates. A member with a pending request is not approved automatically, because approving the timesheet would deny that request.
- 03
Read the activity
get_daily_activity returns tracked time and activity levels for each member, so a timesheet with 40 hours and 5 percent activity is separated from one with 40 hours and 70 percent.
- 04
Approve the clean ones
approve_timesheet runs for timesheets that pass your rule. If Hubstaff answers that time off is still pending, the agent stops on that timesheet and tells you instead of acknowledging it. Every call asks for your OK until you switch confirmation off.
- 05
Deny with a reason
deny_timesheet runs only for the clear problems you named, such as hours far above the member's usual week. It always sends a reason, because Hubstaff requires one.
- 06
Report the rest
Everything else stays submitted, with one line each on what held it back, so you open only those in Hubstaff.
What you get back
Submitted timesheets for 6 to 12 Oct: 9
Approved 6 (no pending requests, activity 52 to 71 percent)
Denied 1: Dana Whitfield, reason "Overlaps a manual entry for 12 Oct, please resubmit"
Left for you 2:
- Tom Becker has 2 pending manual time requests
- Maria Silva has 1 pending time off request Other ways to ask
- Every Monday at 9, list the submitted timesheets with total hours, activity and anything pending, and approve nothing.
- Approve every submitted timesheet for contractors on the Website relaunch project whose hours match what they reported in Slack.
- Show which members have not submitted their timesheet for last week, so I can remind them.
- Deny any timesheet with more than 50 tracked hours in the period and ask the member to check it.
What Hubstaff allows, and what to know first
- Hubstaff timesheet statuses are open, submitted, approved and denied, and a denial needs a reason.
- Pay periods are weekly, bi-weekly, twice per month or monthly, and Hubstaff creates the timesheets from them automatically.
- A member who is approved before the pay period ends can no longer track time in that period until a manager denies the timesheet and reopens it.
- A timesheet that is not approved after the pay period ends leaves the member out of the next payroll schedule, so the payment has to be made by hand.
- Approving a timesheet with pending manual time requests or pending time off requests in the same period needs an explicit confirmation in the API, because the pending manual time would be denied.
approve_timesheet and deny_timesheet ask for your OK by default. To run it weekly without you, switch confirmation off for those tools in your dashboard.
Sources: Hubstaff Support: Setting up Timesheet Approvals · Hubstaff Support: Team Member's Guide to Timesheet Approvals · Hubstaff Support: Optimizing Payroll with Timesheet Approvals · Hubstaff developers: Timesheets
Call approve_timesheet from a script
curl -X POST https://cotlet.dev/api/v1/hubstaff/timesheets/8841201/approve \
-H "Authorization: Bearer $COTLET_API_KEY" {
"timesheet_id": 8841201,
"user_id": 3011,
"status": "approved",
"tracked": 144000,
"approved_on": "2026-10-13"
} MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is hubstaff_write → approve_timesheet. Example data.
Schedule it in n8n, Make, Zapier or cronHubstaff tools this automation uses
| Tool | Parameters |
|---|---|
| list_timesheets | organization_id, status, start_date, stop_date, limit, cursor |
| list_manual_time_requests | organization_id, status, start_date, stop_date, limit, cursor |
| get_daily_activity | organization_id, start_date, stop_date, user_ids, project_ids, task_ids, cursor |
| approve_timesheet | timesheet_id, confirm_pending_manual_time_request_denial, acknowledge_pending_time_off_requests |
| deny_timesheet | timesheet_id, denial_reason |
Frequently asked questions
Will the agent approve a timesheet before the pay period ends?
Only if you ask it to. Approving early locks the member out of tracking more time in that period until the timesheet is denied and reopened, so the prompt should say to approve after the period ends.
Is it safe to connect Hubstaff to Cotlet?
Yes. You sign in to Hubstaff yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Hubstaff once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.
Give your agent access to Hubstaff.
Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Hubstaff.