HR & People package

Training sign-off

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.

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

About this package

What it does

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

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

Step by step

  1. 1

    Record the completion

    The trainee looks up the course, adds the date, hours, score, an evidence link and a reflection, and picks their trainer.

  2. 2

    Training record

    A row is added to Training records as awaiting sign-off, with the expiry date worked out from the course validity.

  3. 3

    Trainer signs off

    The trainer checks the evidence, records the assessment and presses Sign off or Needs more work.

  4. 4

    More work when needed

    Needs more work sends the trainee a task to add evidence and resubmit; it goes back to the trainer.

  5. 5

    Confirmation

    Sign off records the decision and expiry on the record and emails the trainee.

Training sign-off — 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. 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>

Training completion

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

Your name * trainee_name · text
Your email * trainee_email · emailname@company.com
Course * course · lookup
Course title course_title · text
Valid for (months) validity_months · number0
Evidence the trainer expects evidence_expected · text
Completed on * completed_on · dateYYYY-MM-DD
Hours spent hours · number0
Score (%) score · number0
Evidence link * evidence_link · urlhttps://…
What did you learn, and how will you use it? * reflection · textarea
Trainer / assessor * trainer · user
Send for sign-off

User Task

Trainer sign-off

Sign off {{form.trainee_name}}: {{course_title}} ({{form.course}}) · 2-column grid · own header and theme

I have checked the evidence * evidence_checked · boolean
Assessment * assessment · choice
CompetentCompetent with follow-upNot yet competent
Comments for the trainee * trainer_comments · textarea
Sign offNeeds more work

User Task

Add more evidence

More evidence needed: {{course_title}} · 2-column grid · own header and theme

Evidence link * evidence_link · urlPrefilled: {{evidence_link}}
What you added or changed * response · textarea
ResubmitWithdraw

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":{"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

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

What's included

6 assets, ready to adapt

TypeNameDetails
Email templateTraining signed offSent to the trainee when the trainer signs off their training.
Data tableCoursesThe training catalogue: what each course is, how it is delivered, what evidence the trainer expects and how long the qualification stays valid.
Data tableTraining recordsOne row per completion: who, which course, the evidence, the trainer's decision and when it expires.
Retention policyTraining records: 7 yearsKeep completion evidence for audits, then purge rows seven years after they were created. Apply it to the Training records table after install.
formsTraining completionA trainee records a completed course with evidence and picks the trainer who signs it off.
WorkflowTraining sign-off19 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

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 Courses with your catalogue: code, title, expected evidence and validity in months (0 = no expiry). Untick Active to hide a course.
  2. Share the Training completion form link (/f/<id>) with staff, or add it to your intranet.
  3. Optional: apply the "Training records: 7 years" retention policy to the Training records table, and set EMAIL_PROVIDER so sign-off emails are delivered.

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 training-sign-off-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/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.yaml

Verify the download

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

shasum -a 256 training-sign-off-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