Form page · /f/<id>
Training completion
3-column grid · own header and theme · Its own page: share the link or open it on a tablet
HR & People package
Trainees submit course completion evidence on a form; their trainer signs it off or asks for more, and the training record and expiry date are kept.
About this package
Training sign-off turns course completions into a clear, auditable record. The Courses table is your catalogue: code, title, category, delivery, duration, the evidence the trainer expects and how many months the qualification stays valid. Sample courses include first aid, forklift operation, working at height, privacy and anti-bribery training.
A trainee opens the Training completion form page, looks up the course (its title, validity and expected evidence fill in), enters the completion date, hours and score, links the certificate or checklist, writes a short reflection and picks their trainer as a Person. Submitting shows a success screen and starts the workflow.
The workflow adds a row to the Training records table, works out the expiry date from the course validity and gives the trainer a sign-off task with Sign off and Needs more work buttons. Signing off records the assessment and expiry and emails the trainee; Needs more work sends the trainee a task to add evidence and resubmit, which goes back to the trainer. A seven-year retention policy is included for the records. No integrations needed.
Starts from a form page: share the Training completion form (/f/<id>) with staff; each submission starts a sign-off.
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
Record the completion
The trainee looks up the course, adds the date, hours, score, an evidence link and a reflection, and picks their trainer.
Training record
A row is added to Training records as awaiting sign-off, with the expiry date worked out from the course validity.
Trainer signs off
The trainer checks the evidence, records the assessment and presses Sign off or Needs more work.
More work when needed
Needs more work sends the trainee a task to add evidence and resubmit; it goes back to the trainer.
Confirmation
Sign off records the decision and expiry on the record and emails the trainee.
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>
3-column grid · own header and theme · Its own page: share the link or open it on a tablet
User Task
Sign off {{form.trainee_name}}: {{course_title}} ({{form.course}}) · 2-column grid · own header and theme
User Task
More evidence needed: {{course_title}} · 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":{"trainee_name":"Jordan Lee","trainee_email":"jordan.lee@example.com","course":"HS-101","completed_on":"2026-10-24","hours":8,"score":88,"evidence_link":"https://lms.example.com/certificates/HS101-90412","reflection":"Practised CPR and AED use on the mannequins and learned the recovery position; I will refresh the first aid kit checklist on our floor.","trainer":"$owner"}}'CLI
usertasks workflows inputs <workflow id> # the start form: keys, types, required
usertasks workflows run <workflow id> --input trainee_name="Jordan Lee" --input trainee_email=jordan.lee@example.com --input course=HS-101 --input completed_on=2026-10-24 … --waitWhat's included
| Type | Name | Details |
|---|---|---|
| Email template | Training signed off | Sent to the trainee when the trainer signs off their training. |
| Data table | Courses | The training catalogue: what each course is, how it is delivered, what evidence the trainer expects and how long the qualification stays valid. |
| Data table | Training records | One row per completion: who, which course, the evidence, the trainer's decision and when it expires. |
| Retention policy | Training records: 7 years | Keep completion evidence for audits, then purge rows seven years after they were created. Apply it to the Training records table after install. |
| forms | Training completion | A trainee records a completed course with evidence and picks the trainer who signs it off. |
| Workflow | Training sign-off | 19 steps — A trainee submits completion evidence; their trainer signs it off or asks for more work; the Training records table keeps the result and the expiry date. |
Courses · 7 sample rows
Course codeCourseCategoryDeliveryDuration (hours)Valid for (months, 0 = no expiry)Evidence expectedMandatoryActive
Training records · 2 sample rows
Record referenceTraineeTrainee emailCourse codeCourseCompletedEvidence linkScore (%)HoursStatusAssessmentTrainer commentsSigned offExpires
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/training-sign-off-1.0.0.utpkg
usertasks packages inspect training-sign-off-1.0.0.utpkg # offline: checksum, hashes, signature
usertasks packages install training-sign-off-1.0.0.utpkg --dry-run
usertasks packages install training-sign-off-1.0.0.utpkg # prompts for each requirement
usertasks packages install training-sign-off-1.0.0.utpkg --keep-incomplete --yes # in CI; finish with:
usertasks packages complete training-sign-off -f values.yamlVerify the download
shasum -a 256 training-sign-off-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