Form page · /f/<id>
Weekly timesheet
5-column grid · own header and theme · Its own page: share the link or open it on a tablet
HR & People package
A weekly timesheet form with Mon–Fri hours and a project lookup; totals and overtime are calculated, approvers approve or reject, and long weeks get a second check.
About this package
Timesheet approval replaces emailed spreadsheets with one tidy form. Employees open the Weekly timesheet form page, pick the project from the Projects table (client and billable fill in by themselves), enter hours for Monday to Friday in a single row, describe the work, give a reason for any overtime and pick their approver as a Person. Submit shows a success screen.
The Form submitted trigger starts the workflow: it adds up the week, works out overtime above 40 hours and the billable value at the project rate, records everything in the Timesheets table and checks the week with the Timesheet checks decision table.
The approver gets a task with the hours laid out per day, the project budget used so far and Approve and Reject buttons with a comment. Weeks over 40 hours go on to an overtime check by payroll or a second manager. Approved hours are added to the project's hours, and the employee is emailed the decision with the comments. No integrations needed.
Starts from a form page: share the Weekly timesheet form (/f/<id>); each submission (one per project per week) starts an approval.
Someone fills in a form to start it: the workflow start form (Run dialog in the app, or your own portal posting to the API) or a standalone form page (/f/<id>) whose Form submitted trigger starts the workflow. People complete User Task forms along the way.
The flow
Fill in the week
The employee picks the project (client and billable fill in), enters Mon–Fri hours and picks their approver.
Totals
The workflow adds up the hours, works out overtime above 40 and the billable value, and records the timesheet.
Checks
The Timesheet checks decision table decides whether the week needs a second, overtime check.
Approve or reject
The approver sees the hours per day and the project budget and presses Approve or Reject with a comment.
Overtime check
Weeks over 40 hours go to the overtime checker (or back to the approver) before they count as approved.
Tell the employee
Approved hours are added to the project, and the employee is emailed the decision and comments.
Forms
People start it from a form page (/f/<id>) with its own header, theme and buttons; submitting it starts the workflow. User Tasks show their fields and outcome buttons to the assignee.
Form page · /f/<id>
5-column grid · own header and theme · Its own page: share the link or open it on a tablet
User Task
Approve timesheet: {{form.employee_name}}, {{total_hours}} h, week ending {{form.week_ending}} · 2-column grid · own header and theme
User Task
Overtime check: {{form.employee_name}}, {{total_hours}} h ({{overtime_hours}} h overtime) · 2-column grid · own header and theme
From your code
Every workflow can be started over REST, MCP or the CLI, whatever its trigger, with the sample input below. Runs start straight away on the published version; replace <workflow id> with the id the install created.
REST
curl -X POST "$USERTASKS_URL/api/v1/workflows/start" \
-H "Authorization: Bearer $USERTASKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"workflow_id":"<workflow id>","variables":{"employee_name":"Jordan Lee","employee_email":"jordan.lee@example.com","week_ending":"2026-10-30","project":"PRJ-1057","mon":9,"tue":9.5,"wed":8,"thu":10,"fri":7.5,"work_summary":"Mapped the customer master fields and ran two trial loads of open sales orders.","overtime_reason":"Trial load had to finish before the cut-over rehearsal on Friday.","approver":"$owner","overtime_checker":"$owner"}}'CLI
usertasks workflows inputs <workflow id> # the start form: keys, types, required
usertasks workflows run <workflow id> --input employee_name="Jordan Lee" --input employee_email=jordan.lee@example.com --input week_ending=2026-10-30 --input project=PRJ-1057 … --waitWhat's included
| Type | Name | Details |
|---|---|---|
| Email template | Timesheet decision | Sent to the employee when their timesheet is approved or rejected. |
| Data table | Projects | Projects people can book time to: client, whether the time is billable and the hours budget. The timesheet form looks projects up here. |
| Data table | Timesheets | Every weekly timesheet: hours per day, totals, overtime, billable value and the approval decision. |
| Decision table | Timesheet checks | 4 rules — Whether a timesheet needs a second (overtime) check after the approver. First matching rule wins; weeks over 40 hours need a second check. |
| forms | Weekly timesheet | Employees record their hours per day against a project for the week and pick who approves them. |
| Workflow | Timesheet approval | 26 steps — A weekly timesheet is submitted on the form: totals and overtime are calculated, the approver approves or rejects with comments, weeks over 40 hours get a second check, and the employee is emailed the decision. |
Projects · 7 sample rows
Project codeProjectClientBillableHourly rateBudget (hours)Hours approved so farProject managerActive
Timesheets · 1 sample rows
ReferenceEmployeeEmployee emailWeek endingProjectClientBillableMonTueWedThuFriTotal hoursOvertime hoursBillable valueStatusApprover commentDecided
Requirements
Credentials never travel in a package. The install wizard asks for what your environment must provide, or installs it incomplete until you finish setup.
Nothing: it installs complete.
Install
Works on UserTasks cloud and on any self-hosted instance. Installing creates the assets above; nothing runs until you complete setup and start it.
curl -fLO https://usertasks.com/gallery/timesheet-approval-1.0.0.utpkg
usertasks packages inspect timesheet-approval-1.0.0.utpkg # offline: checksum, hashes, signature
usertasks packages install timesheet-approval-1.0.0.utpkg --dry-run
usertasks packages install timesheet-approval-1.0.0.utpkg # prompts for each requirement
usertasks packages install timesheet-approval-1.0.0.utpkg --keep-incomplete --yes # in CI; finish with:
usertasks packages complete timesheet-approval -f values.yamlVerify the download
shasum -a 256 timesheet-approval-1.0.0.utpkg should print the file SHA-256. How gallery packages are signed.
Versions
Installing a newer version upgrades in place: local credentials and requirement values are kept, and changes you made are flagged first. How packages work
More packages
HR & People Official
A manager submits a leaver; access is revoked on the right day, equipment recovered, final pay scheduled, the exit interview held and the termination recorded.
Needs:REST APIAssigneesEmail
HR & People Official
HR enters a new hire; the HR record, laptop, accounts, buddy and first-week plan are all arranged before day one, with a 30-day check-in.
Needs:REST APIAssigneesEmail
HR & People Official
Employees request kit from an equipment catalogue; a cost and role policy routes approval, IT fulfils the request and the asset is registered.
Needs:REST APIAssigneesEmail