Operations & Compliance package

Contract approval and e-signature

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

OfficialHeadless / APIIntermediate~20 min setupv1.0.0

About this package

What it does

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 / API

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

Step by step

  1. 1

    Contract received

    The calling app posts the title, counterparty, value, signer and the URL of the contract PDF.

  2. 2

    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.

  3. 3

    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.

  4. 4

    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.

  5. 5

    Record

    The signed PDF and certificate are stored, the contract is added to Signed contracts and the owner can be emailed a link.

  6. 6

    Follow up

    A declined, voided, expired or timed-out envelope becomes a Follow up task for the contract owner.

Contract approval and e-signature — 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. The same canvas you get in the designer after installing.

Forms

Inputs and task forms

The inputs a caller passes when it starts a run, and the forms people complete when the process needs a decision.

Start inputs

Contract approval and e-signature

Passed by the calling system

Contract title * contract_title · textContract title as it should appear in the approval task and the DocuSign email
Counterparty * counterparty · textLegal name of the other party
Contract value * contract_value · number0Total contract value
Signer name * signer_name · textName of the person signing for the counterparty
Signer email * signer_email · emailname@company.comEmail of the signer: DocuSign sends the signing request here
Contract PDF URL * contract_pdf · urlhttps://…URL of the contract PDF to sign. It must contain the anchor text /sn1/ where the signature goes (white text works); remove the anchor on Send for signature to let the signer place it
Notify email notify_email · emailname@company.comOptional: email of the contract owner, who gets a link to the signed PDF

User Task

Approve contract

Approve contract: {{contract_title}} ({{counterparty}}) · own header and theme

Comment comment · textarea
ApproveReject

User Task

Follow up

Follow up: {{contract_title}} was not signed ({{signature.outcome}})

What happened notes · textarea
Done

Headless

Call it from your systems

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

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

Inbound webhook

shell
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

4 assets, ready to adapt

TypeNameDetails
Email templateContract signedSent to the contract owner when DocuSign reports the envelope completed, with a link to the signed PDF.
Data tableSigned contractsOne row per contract signed through DocuSign: the title, counterparty, value, envelope id, the stored signed PDF and when signing completed.
IntegrationDocuSignYour 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.
WorkflowContract approval and e-signature14 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

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

  • REST API — A REST API integration: set its base URL and credentials on install.
  • Assignees — People in your workspace to receive the User Tasks (picked on install).
  • Inbound webhook — An inbound webhook created for the workflow, so other systems can start it.
  • Email (optional) — Email delivery configured for the instance (EMAIL_PROVIDER), used for notifications.

After installing

  1. DocuSign account: create a free developer account at developers.docusign.com (or use your production account) and, under Apps and Keys, add an app to get an integration key.
  2. Connection: paste an access token on install, or open Connectors → DocuSign and switch the connection to JWT Grant (integration key, user id and RSA private key) or OAuth so tokens renew. For production set the base URL to your account's host (for example https://www.docusign.net/restapi or your region's).
  3. Assignees: pick who approves contracts and who follows up on contracts that were not signed.
  4. Webhook (recommended): in DocuSign Connect add a configuration that posts envelope events to https://<your UserTasks host>/api/webhooks/esign/docusign/<DocuSign integration id> with HMAC enabled, then paste the HMAC key as the Webhook secret in Connectors → DocuSign. Without it the Wait for signature step polls every 5 minutes. See /docs/integrations/e-signature.
  5. Contract PDFs: put the anchor text /sn1/ where the signature goes (white text keeps it invisible), and pass the PDF's URL as contract_pdf.
  6. Email (optional): configure EMAIL_PROVIDER and pass notify_email so the contract owner gets a link to the signed PDF.

Asked for on install

  • Integration “DocuSign”Required

    • Tokenconfig.auth_config.token
    • Base urlconfig.base_urldefault https://demo.docusign.net/restapi· optional
  • Workflow “Contract approval and e-signature” assigneesRequired

    • User for step “Approve contract”nodes.2.config.assignee_id
    • User for step “Follow up”nodes.11.config.assignee_id

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-approval-esign-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-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.yaml

Verify the download

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

shasum -a 256 contract-approval-esign-1.0.0.utpkg should print the file SHA-256. How gallery packages are signed.

Versions

Version 1.0.0

  1. v1.0.02026-12-06First 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