HR & People package

Timesheet approval

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.

OfficialNo integrations neededStarts from a formStarter~10 min setupv1.0.0

About this package

What it does

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

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

Step by step

  1. 1

    Fill in the week

    The employee picks the project (client and billable fill in), enters Mon–Fri hours and picks their approver.

  2. 2

    Totals

    The workflow adds up the hours, works out overtime above 40 and the billable value, and records the timesheet.

  3. 3

    Checks

    The Timesheet checks decision table decides whether the week needs a second, overtime check.

  4. 4

    Approve or reject

    The approver sees the hours per day and the project budget and presses Approve or Reject with a comment.

  5. 5

    Overtime check

    Weeks over 40 hours go to the overtime checker (or back to the approver) before they count as approved.

  6. 6

    Tell the employee

    Approved hours are added to the project, and the employee is emailed the decision and comments.

Timesheet approval — 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. The same canvas you get in the designer after installing.

Forms

The start form and the task 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>

Weekly timesheet

5-column grid · own header and theme · Its own page: share the link or open it on a tablet

Your name * employee_name · text
Your email * employee_email · emailname@company.com
Week ending (Friday) * week_ending · dateYYYY-MM-DD
Project * project · lookup
Project name project_name · text
Client client · text
Billable billable · boolean
Mon * mon · numberPrefilled: 0
Tue * tue · numberPrefilled: 0
Wed * wed · numberPrefilled: 0
Thu * thu · numberPrefilled: 0
Fri * fri · numberPrefilled: 0
What you worked on * work_summary · textarea
Reason for overtime overtime_reason · textarea
Approver * approver · user
Overtime checker overtime_checker · user
Submit timesheet

User Task

Approver review

Approve timesheet: {{form.employee_name}}, {{total_hours}} h, week ending {{form.week_ending}} · 2-column grid · own header and theme

Hours match the work described hours_match · boolean
Booked to the right project right_project · boolean
Comments comment · textarea
ApproveReject

User Task

Overtime check

Overtime check: {{form.employee_name}}, {{total_hours}} h ({{overtime_hours}} h overtime) · 2-column grid · own header and theme

Hours match the work described hours_match · boolean
Booked to the right project right_project · boolean
Comments comment · textarea
ApproveReject

From your code

Start a run over the API

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

shell
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

shell
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 … --wait

What's included

6 assets, ready to adapt

TypeNameDetails
Email templateTimesheet decisionSent to the employee when their timesheet is approved or rejected.
Data tableProjectsProjects people can book time to: client, whether the time is billable and the hours budget. The timesheet form looks projects up here.
Data tableTimesheetsEvery weekly timesheet: hours per day, totals, overtime, billable value and the approval decision.
Decision tableTimesheet checks4 rules — Whether a timesheet needs a second (overtime) check after the approver. First matching rule wins; weeks over 40 hours need a second check.
formsWeekly timesheetEmployees record their hours per day against a project for the week and pick who approves them.
WorkflowTimesheet approval26 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

What you connect it to

Credentials never travel in a package. The install wizard asks for what your environment must provide, or installs it incomplete until you finish setup.

Needs

  • Email (optional) — Email delivery configured for the instance (EMAIL_PROVIDER), used for notifications.

After installing

  1. Replace the sample rows in Projects with your projects: code, client, billable, hourly rate and hours budget. Untick Active for closed projects.
  2. Share the Weekly timesheet form link (/f/<id>) with staff.
  3. Adjust the Timesheet checks decision table if your overtime threshold is not 40 hours.
  4. Optional: set EMAIL_PROVIDER so decisions are emailed (the console provider logs them).

Asked for on install

Nothing: it installs complete.

Install

Install it in your workspace

Works on UserTasks cloud and on any self-hosted instance. Installing creates the assets above; nothing runs until you complete setup and start it.

In the app

  1. Download timesheet-approval-1.0.0.utpkg.
  2. Open Automations → Packages and drag the file onto the page (or choose Import package). Browse gallery there lists every gallery package without downloading by hand.
  3. Pick the file. The wizard verifies the checksum, every file hash and the signature, and shows the readme.
  4. Review the changes (what is created) and the data rows.
  5. Fill in the requirements, or tick Keep incomplete and finish later with Complete setup.
  6. Done: the workflow is published and active once setup is complete.

With the CLI

shell
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.yaml

Verify the download

File SHA-256
6989873b1b6ca6d8406cd818c576ad0d20fec1974c2ec23e155c9474926c24aa
Package checksum (what is signed)
sha256:cec40b54be78904d98c24782628c23ca25db483d4e2f1f01dd154719cd6e4a70
Signer
Unsigned preview build — compare the SHA-256 above

shasum -a 256 timesheet-approval-1.0.0.utpkg should print the file SHA-256. How gallery packages are signed.

Versions

Version 1.0.0

  1. v1.0.02026-10-28First release.

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

Related

Browse the whole gallery