Start inputs
Scheduled evidence collection
Passed by the calling system
Operations & Compliance package
Monthly SOC 2 / ISO 27001 evidence run: automated controls are pulled from your systems, owners of manual controls are asked for a link, all logged for the auditor.
About this package
Audit evidence collection keeps your evidence folder current without a scramble before the audit. Each month it reads the Controls data table (framework, reference, evidence type, owner, frequency) and works through the controls that are due: monthly controls every month, quarterly ones in January, April, July and October.
Automated controls are fetched from the Evidence API with the control id and period (access reviews, backups, vulnerability scans, change tickets) and logged as collected with the export link, record and exception counts and a checksum; failed calls are logged as failed. Manual controls get a "requested" row and a Provide audit evidence run, in which the control owner submits a link or marks the control not applicable, which the compliance lead must accept. Reminders and escalation keep requests moving. At the end the compliance lead gets a summary with the counts.
Adapt the Controls rows to your control set, point the Evidence API reference at your evidence service (or one reference per system), and change the schedule and quarter months to your audit calendar.
Monthly on day 2 at 06:00 (UTC). You can also start it any time from the Run dialog, the API or the CLI.
Runs on a schedule (daily, weekly, monthly) in your time zone.
The flow
Monthly run
On the 2nd the workflow works out the period (YYYY-MM) and lists the active controls.
Pick the due controls
Monthly controls run every month; quarterly controls run in the first month of each quarter. The rest are counted as not due.
Collect automated evidence
Get control evidence returns the export link, record count, exceptions and checksum; the row is logged as collected, or as failed if the call fails.
Ask owners for manual evidence
A "requested" row is logged and the Provide audit evidence run asks the control owner for a link, with reminders and escalation.
Agree not applicable
If the owner marks a control not applicable, the compliance lead accepts it or sends it back for evidence.
Summarise
The compliance lead gets the counts of collected, requested and failed evidence for the period.
Forms
The inputs a caller passes when it starts a run, and the forms people complete when the process needs a decision.
Start inputs
Passed by the calling system
User Task · Provide audit evidence
Evidence for {{control.control_id}} {{control.title}} ({{period}})
User Task · Provide audit evidence
Agree {{control.control_id}} is not applicable for {{period}}?
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":{"as_of":"2026-10-02","compliance_lead_email":"compliance@example.com"}}'CLI
usertasks workflows inputs <workflow id> # the start form: keys, types, required
usertasks workflows run <workflow id> --input as_of=2026-10-02 --input compliance_lead_email=compliance@example.com --waitWhat's included
| Type | Name | Details |
|---|---|---|
| Email template | Evidence collection summary | Sent to the compliance lead after the monthly collection run. |
| Data table | Controls | Your control set: framework, reference, evidence type and owner. Automated controls are collected from the Evidence API; manual controls ask the owner for a link. |
| Data table | Evidence log | One row per control and period: what was collected or requested, the evidence link and its status. This is what you hand the auditor. |
| Integration | Evidence API | |
| API reference | Get control evidence | GET /evidence/{{evidence_source}} — Generates or fetches the evidence export for one control and period from the system that runs the control (access reviews, backups, vulnerability scans, change tickets). |
| Workflow | Provide audit evidence | 9 steps — Asks a control owner for the evidence of a manual control for one period; "not applicable" needs the compliance lead's agreement. Updates the Evidence log row. |
| Workflow | Scheduled evidence collection | 25 steps — Monthly: collects evidence for every automated control from the Evidence API, asks owners of manual controls for theirs, records everything in the Evidence log and emails the compliance lead a summary. |
Controls · 8 sample rows
Control IDFrameworkFramework referenceControlEvidence typeSystemEvidence feed (automated)Owner roleOwner emailOwner user id (optional)FrequencyActive
Evidence log · schema only
PeriodControl IDFrameworkControlEvidence typeStatusEvidence linkRecordsExceptionsChecksumCollected atOwner emailNotes
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.
Integration “Evidence API”Required
Workflow “Provide audit evidence” assigneesRequired
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/audit-evidence-collection-1.0.0.utpkg
usertasks packages inspect audit-evidence-collection-1.0.0.utpkg # offline: checksum, hashes, signature
usertasks packages install audit-evidence-collection-1.0.0.utpkg --dry-run
usertasks packages install audit-evidence-collection-1.0.0.utpkg # prompts for each requirement
usertasks packages install audit-evidence-collection-1.0.0.utpkg --keep-incomplete --yes # in CI; finish with:
usertasks packages complete audit-evidence-collection -f values.yamlVerify the download
shasum -a 256 audit-evidence-collection-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
Operations & Compliance
A daily check of your contract register: owners are reminded 60, 30 and 7 days before each notice deadline and asked to renew, renegotiate or terminate.
Needs:AssigneesEmail
Operations & Compliance
A monthly campaign: employees confirm they have read the policies due for them, with reminders, escalation to compliance and an audit trail of attestations.
Needs:Directory / HR systemREST APIAssigneesEmail
Operations & Compliance
Handle access, erasure and other privacy requests: statutory deadline, identity check, search of CRM, billing and support, erasure, and a DPO-approved reply.
Needs:REST APIAssigneesEmail