Operations & Compliance package

Contract review & approval

Contract owners submit a draft on a stepped form; legal checks it against a clause playbook, redlines revisions, the right people approve it and a register tracks renewals.

OfficialNo integrations neededStarts from a formIntermediate~15 min setupv1.0.0

About this package

What it does

Contract review & approval takes a contract from draft to an approved entry in your contract register, with no e-signature or integration needed. The contract owner fills in the Contract review request, four numbered steps: the contract and counterparty, the term and value (the notice period appears only for contracts that renew automatically, and a board approval reference only for NZD 1,000,000 or more), the draft itself, and who approves the spend. The form is in Application mode with its own Next, Back and Send for review buttons, and its rules check that the contract ends after it starts, that an auto-renewing contract has a notice period and that large contracts carry the board reference.

Submitting adds the contract to the Contract register with its renewal decision date (the end date less the notice period) and gives legal a tabbed review task: the contract on one tab, and on the other a Clause checklist, a Data table of the Clause playbook (our position, the fallback we accept, must-have clauses and the risk) where legal ticks every clause the draft departs from, then sets the overall risk. Ticking a must-have clause shows a note.

Legal approves, rejects or asks for changes. Changes go back to the owner with legal's notes and the list of deviations; when the owner uploads the revised contract, a Compare Documents step diffs it against the previous version, makes a PDF redline and tells legal how similar it is before the review starts again. The Contract approval route decision table then decides who else approves, from legal's risk rating, the value and the number of deviations: finance (the person the owner named, or your default), the general counsel, or both.

The Contract register page lists every contract in Data tables: Renewals due shows active contracts whose renewal decision falls in the next 90 days, soonest first, and All contracts has value, end date, check marks and risk and status badges, filters and sorting, with an editable status. A click on any row opens the contract's details.

Starts from a form

Starts from a form page: share the Contract review request page (/f/<id>) with contract owners; each submission starts the workflow through its Form submitted trigger.

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.

How forms work

The flow

Step by step

  1. 1

    Request a review

    The owner completes four numbered steps and attaches the draft; rules check the dates, the notice period and the board reference.

  2. 2

    Register it

    The contract is added to the Contract register with its renewal decision date.

  3. 3

    Legal review

    A tabbed task: the contract, and a Clause checklist Data table of the playbook where legal ticks the deviations and sets the risk.

  4. 4

    Changes and redline

    Requested changes go to the owner; their revision is compared with the previous version (similarity and a PDF redline) and goes back to legal.

  5. 5

    Approval chain

    The approval route decides whether finance and the general counsel approve, from the risk, value and deviations.

  6. 6

    Approved and tracked

    The register row is approved and the owner is emailed; the Contract register page shows renewals due in 90 days.

Contract review — A contract owner submits the Contract review request; the contract is added to the Contract register, legal checks it against the clause playbook and approves, asks for changes (the owner uploads a revision and legal gets a redline against the previous version) or rejects; the approval route sends it to finance and the general counsel when needed, and the register follows every step. 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>

Contract register

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

UsesTabsApplication modeIn-form buttonsData tableForm rules

Renewals due in 90 days renewals · data_table
TitleCounterpartyValueDecide byAuto-renewsRisk
All contracts contracts · data_table
TitleCounterpartyValueEndsRiskStatus
Contract d_ref · text
Status and risk d_status · text
Title d_title · text
Counterparty and type d_counterparty · text
Owner d_owner · text
Total value d_value · currency
Term d_term · text
Renewal d_renewal · text
Document and version d_document · text
Playbook deviations d_deviations · textarea
Approval d_approval · text
Save changesBack to renewals

Form page · /f/<id>

Contract review request

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

UsesStepsApplication modeIn-form buttonsForm rules

Contract title * title · text
Counterparty * counterparty · text
Contract type * contract_type · choice
Customer agreementSupplier agreementPartnershipLicenceServices agreementLease
Business unit * business_unit · choice
SalesProcurementOperationsTechnologyPeopleFinance+1
Total contract value * value · currency
Board approval reference board_approval_ref · text
Start date * start_date · dateYYYY-MM-DD
End date * end_date · dateYYYY-MM-DD
Renews automatically unless notice is given auto_renew · boolean
Notice period (days) notice_days · number0
The contract * contract_document · attachments
Version label version_label · text
Whose paper? * paper · choice
Our templateTheir template
Anything you already know differs from our standard terms known_deviations · textarea
Finance approver budget_approver · user
The commercial terms are agreed in principle and the budget is available * confirm · boolean
NextBackSend for review

User Task

Legal review

Legal review: {{form.title}} v{{version}} ({{contract_ref}}) · 2-column grid · own header and theme

UsesTabsData tableForm rules

Contract t_contract · textPrefilled: {{form.title}} with {{form.counterparty}} ({{form.contract_type}})
Value and term t_value · textPrefilled: NZD {{form.value}} · {{form.start_date}} to {{form.end_date}} · auto-renews: {{form.auto_renew}}
Document t_document · textPrefilled: {{=FILE_NAMES(current_document)}} (version {{version}}, {{form.paper}})
Changes since the last version t_changes · textareaPrefilled: {{changes_note}}
What the owner already knows differs t_known · textareaPrefilled: {{form.known_deviations}}
Clauses that depart from the playbook deviations · data_table
ClauseOur positionFallback we acceptMust haveRisk
Overall risk * risk_level · choice
LowMediumHigh
Redline notes for the owner redline_notes · textarea
ApproveRequest changesReject

User Task

Finance approval

Finance: approve {{form.title}} (NZD {{form.value}}) · own header and theme

Budget code * budget_code · text
Notes finance_notes · textarea
ApproveReject

User Task

General counsel approval

General counsel: approve {{form.title}} ({{risk_level}} risk) · own header and theme

Notes gc_notes · textarea
ApproveReject

User Task

Upload the revised contract

Revise {{contract_ref}}: {{form.title}} · own header and theme

Revised contract * revised_document · attachments
What changed revision_summary · textarea
Upload revisionWithdraw

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":{"title":"Cleaning and facilities services","counterparty":"CleanCo Services Ltd","contract_type":"Services agreement","business_unit":"Operations","value":210000,"start_date":"2027-02-01","end_date":"2029-01-31","auto_renew":true,"notice_days":90,"version_label":"Their draft v1","paper":"Their template","known_deviations":"They want termination for convenience on 30 days notice.","confirm":true}}'

CLI

shell
usertasks workflows inputs <workflow id>          # the start form: keys, types, required
usertasks workflows run <workflow id> --input title="Cleaning and facilities services" --input counterparty="CleanCo Services Ltd" --input contract_type="Services agreement" --input business_unit=Operations … --wait

What's included

9 assets, ready to adapt

TypeNameDetails
Email templateContract approvedSent to the contract owner when every approval is in.
Email templateContract changes requestedSent to the contract owner when legal asks for a revised version.
Email templateContract not approvedSent to the contract owner when legal, finance or the general counsel rejects the contract.
Data tableClause playbookOur standard position on the clauses legal checks in every contract, the fallback we accept and the risk when a draft departs from it. Legal ticks the deviations on the review step.
Data tableContract registerEvery contract with its owner, value, term, renewal decision date, risk, status and the playbook deviations legal found. The Contract review workflow adds a row per request and keeps it up to date; the Contract register page lists them and the renewals due in the next 90 days.
Decision tableContract approval route6 rules — Who approves a contract after legal review, by the risk legal found, the total value and the number of playbook deviations. First matching rule wins.
FormContract registerThe contract register as Data tables: Renewals due (base filter: Active or Approved contracts whose renewal decision falls in the next 90 days) and All contracts (editable status saved back for each changed row), with NZD values, dates, check marks and risk / status badges, search, filters and sorting on the server. Click a row to open the contract details tab.
FormContract review requestThe request a contract owner fills in: The contract → Term & value → Document → Approvals & submit, with a numbered stepper and in-form Next / Back / Send for review buttons (Application mode). The notice period appears only for auto-renewing contracts and the board approval reference only for NZD 1,000,000 or more; rules check the dates, the notice period and the board reference. Submitting starts the Contract review workflow through its Form submitted trigger.
WorkflowContract review38 steps — A contract owner submits the Contract review request; the contract is added to the Contract register, legal checks it against the clause playbook and approves, asks for changes (the owner uploads a revision and legal gets a redline against the previous version) or rejects; the approval route sends it to finance and the general counsel when needed, and the register follows every step.

Clause playbook · 12 sample rows

ClauseOur standard positionAcceptable fallbackMust haveRisk if it deviates

Contract register · 10 sample rows

ContractTitleCounterpartyTypeBusiness unitOwnerOwner emailTotal valueStartEndAuto-renewsNotice (days)Renewal decision byRiskStatusVersionDocumentPlaybook deviationsApproval pathApproved byApproved

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. Share Forms → Contract review request (/f/<id>) with contract owners, and Forms → Contract register with legal and finance (they need View data, and Manage rows to change a status).
  2. Edit the Clause playbook to your standard positions, fallbacks and must-have clauses.
  3. Tasks go to the person who installed the package; point Legal review and General counsel approval at your legal team. Finance approval goes to the approver named on the form, or the installer.
  4. Edit the Contract approval route thresholds for finance and general counsel approval.
  5. Email: configure EMAIL_PROVIDER so owners hear about approvals, rejections and requested changes (the steps continue on error).

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 contract-review-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/contract-review-approval-1.0.0.utpkg
usertasks packages inspect contract-review-approval-1.0.0.utpkg       # offline: checksum, hashes, signature
usertasks packages install contract-review-approval-1.0.0.utpkg --dry-run
usertasks packages install contract-review-approval-1.0.0.utpkg       # prompts for each requirement
usertasks packages install contract-review-approval-1.0.0.utpkg --keep-incomplete --yes   # in CI; finish with:
usertasks packages complete contract-review-approval -f values.yaml

Verify the download

File SHA-256
0ef6dd027a972be62ad7ba4bc8eb08bca4b2f5bb08a6a9b422bde692017d738e
Package checksum (what is signed)
sha256:33f1fe1cc2b17aa03af05d867ab56f9e3874f5fe118543723ca0a30c4b3bcb6d
Signer
UserTasks Gallery · 49:f3:04:90:47:02:4d:07:28:61:3d:dc:bb:aa:db:11

shasum -a 256 contract-review-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-11-01First 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