Start inputs
Contract approval and e-signature
Passed by the calling system
Operations & Compliance package
Approve a contract internally, send it for signature through DocuSign, wait for the signer and record the signed PDF, with a follow-up task when it is declined or expires.
Connects to DocuSign
About this package
Contract approval and e-signature takes a contract from "ready" to "signed" without anyone opening DocuSign. Your CRM, contract tool or a back-office app posts the contract title, counterparty, value, the signer's name and email and the URL of the contract PDF.
An approver gets a User Task with the title, counterparty and value and a link to the PDF, and approves or rejects it. A rejection is logged and the run ends. An approved contract is sent through the DocuSign connector as an envelope: the signature field is placed on the /sn1/ anchor in the PDF, DocuSign reminds the signer every two days and the envelope expires after 14 days.
The Wait for signature step then pauses the run until DocuSign reports the outcome, through the Connect webhook as soon as it happens or by polling every five minutes without one. When the envelope is completed the signed PDF and the certificate of completion are stored as workflow files, the contract is added to the Signed contracts table with its envelope id, signed PDF and signing time, and the contract owner can be emailed a link. A declined, voided or expired envelope, or one still unsigned after 21 days, goes to a Follow up task for the contract owner.
Headless: your application posts the contract details and the PDF URL to the start API or an inbound webhook.
Another system starts it over REST or an inbound webhook. No UI is needed; people only appear where a decision needs a human.
The flow
Contract received
The calling app posts the title, counterparty, value, signer and the URL of the contract PDF.
Approve
The approver sees the title, counterparty and value with a link to the PDF and approves or rejects it; rejections are logged and the run ends.
Send for signature
An approved contract goes to the signer as a DocuSign envelope, with the signature on the /sn1/ anchor, reminders every 2 days and a 14-day expiry.
Wait for signature
The run pauses until DocuSign reports the envelope completed, declined, voided or expired (Connect webhook or polling), for up to 21 days.
Record
The signed PDF and certificate are stored, the contract is added to Signed contracts and the owner can be emailed a link.
Follow up
A declined, voided, expired or timed-out envelope becomes a Follow up task for the contract owner.
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
Approve contract: {{contract_title}} ({{counterparty}}) · own header and theme
User Task
Follow up: {{contract_title}} was not signed ({{signature.outcome}})
Headless
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":{"contract_title":"Master services agreement 2027","counterparty":"Fourth Coffee Limited","contract_value":120000,"signer_name":"Robin Diaz","signer_email":"robin.diaz@fourthcoffee.example.com","notify_email":"legal@example.com"}}'CLI
usertasks workflows inputs <workflow id> # the start form: keys, types, required
usertasks workflows run <workflow id> --input contract_title="Master services agreement 2027" --input counterparty="Fourth Coffee Limited" --input contract_value=120000 --input signer_name="Robin Diaz" … --waitInbound webhook
usertasks webhooks create <workflow id> # prints the hook slug and secret once
curl -X POST "$USERTASKS_URL/api/webhooks/inbound?hook=<slug>" \
-H "Authorization: Bearer <webhook secret>" -H "Content-Type: application/json" \
-d '{"contract_title":"Master services agreement 2027","counterparty":"Fourth Coffee Limited","contract_value":120000,"signer_name":"Robin Diaz","signer_email":"robin.diaz@fourthcoffee.example.com","notify_email":"legal@example.com"}'What's included
| Type | Name | Details |
|---|---|---|
| Email template | Contract signed | Sent to the contract owner when DocuSign reports the envelope completed, with a link to the signed PDF. |
| Data table | Signed contracts | One row per contract signed through DocuSign: the title, counterparty, value, envelope id, the stored signed PDF and when signing completed. |
| Integration | DocuSign | Your DocuSign account (developer sandbox by default). On install paste an access token, or switch the connection to JWT Grant or OAuth in Connectors → DocuSign and set the base URL of your account (www.docusign.net or your region's host for production). Register the Connect webhook afterwards so signatures arrive at once (see /docs/integrations/e-signature); without it the Wait for signature step polls every 5 minutes. |
| Workflow | Contract approval and e-signature | 14 steps — An application posts a contract PDF and its details; an approver approves or rejects it; approved contracts are sent through DocuSign, the run waits for the signature, records the signed PDF in Signed contracts and notifies the owner. Declined, voided, expired and timed-out envelopes go to a follow-up task. |
Signed contracts · schema only
ContractCounterpartyValueEnvelope IDSigned PDFSigned at
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 “DocuSign”Required
Workflow “Contract approval and e-signature” 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/contract-approval-esign-1.0.0.utpkg
usertasks packages inspect contract-approval-esign-1.0.0.utpkg # offline: checksum, hashes, signature
usertasks packages install contract-approval-esign-1.0.0.utpkg --dry-run
usertasks packages install contract-approval-esign-1.0.0.utpkg # prompts for each requirement
usertasks packages install contract-approval-esign-1.0.0.utpkg --keep-incomplete --yes # in CI; finish with:
usertasks packages complete contract-approval-esign -f values.yamlVerify the download
shasum -a 256 contract-approval-esign-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 Official
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.
Needs:REST APIAssigneesEmail
Operations & Compliance Official
Submit a policy, contract or procedure as a PDF; reviewers read it in a PDF viewer and redline it, legal checks it when needed, and the owner e-signs. Every step is audit-logged.
Nothing to configure: works as soon as it is installed
Operations & Compliance Official
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