Sign Step
Collect eSignatures from one or more participants with configurable signing order, delivery settings, and positioned signing fields.
The Sign step orchestrates an eSignature flow as part of a workflow. You define who needs to sign, in what order, how to notify them, and where their signature fields appear on the document. Once all participants have signed, the workflow continues.
Configuration
| name | type | required | description |
|---|---|---|---|
name | string | yes | A human-friendly name for this signing package. |
type | string | yes | dynamic (generated from workflow data) or static (from a fixed asset). |
signingOrder | string | yes | sequential (one signer at a time) or simultaneous (all signers notified at once). |
delivery | object | yes | Email and SMS delivery settings. See Delivery below. |
templates | array | yes | One or more document templates with signing fields. See Templates below. |
participants | array | yes | People who will sign or fill fields. See Participants below. |
shouldNotCollectSignerName | boolean | no | When true, skips collecting the signer's name during the signing process. |
Delivery
The delivery object configures how signers are notified.
| name | type | required | description |
|---|---|---|---|
fromName | string | yes | Sender name shown in notification emails. |
replyTo | string | no | Reply-to email address. |
subject | string | yes | Email subject line. |
smsMessage | string | no | Optional SMS body for notifying signers. |
buttonLabel | string | yes | Text shown on the call-to-action button in the email. |
Participants
Each participant is a person who will sign or complete fields on the document.
| name | type | required | description |
|---|---|---|---|
name | string | yes | Participant display name. |
email | string | no | Contact email for delivery and identity. |
signingOrder | integer | yes | Position in the signing sequence when signingOrder is sequential. |
inPersonSigning | boolean | yes | Whether the signer completes the process in person. Default: false. |
phoneNumber | string | no | Phone number used for SMS or identity verification. |
Templates
Templates follow the same shape as the Document step (name, fileId, fields). Each field must additionally specify a participant.
| name | type | required | description |
|---|---|---|---|
id | string | yes | Unique identifier for this field. |
fieldType | string | yes | Logical field type: text, signature, date, checkbox, initials, full_name, radio_button, or date_signed. |
fieldSubType | string | yes | Visual control type: text, checkbox, or radio. |
participant | string | yes | Name or identifier matching one of the defined participants. |
wrapText | boolean | yes | Whether text wraps within the bounding box. Default: false. |
required | boolean | yes | Whether the signer must complete this field. Default: false. |
pageNumber | number | yes | Page index to place the field on. |
xPosition | number | no | Horizontal position on the page. |
yPosition | number | no | Vertical position on the page. |
width | number | no | Control width. |
height | number | no | Control height. |
fontSize | number | no | Font size for text and date fields. |
optionValue | string | no | Value associated with a specific option (for checkbox and radio fields). |
value | string | no | Pre-filled value for text or date fields. |
radioGroupId | string | no | Group identifier for radio buttons. |
Examples
Let's look at a complete signing flow with two sequential signers, multiple field types, and email delivery.
{
"name": "NDA Signing",
"type": "dynamic",
"signingOrder": "sequential",
"delivery": {
"fromName": "Legal Team",
"replyTo": "[email protected]",
"subject": "Please review and sign the NDA",
"smsMessage": "You have a document to sign.",
"buttonLabel": "Review & Sign"
},
"templates": [
{
"name": "NDA",
"fileId": "file_abc",
"fields": [
{
"id": "sig-001",
"fieldSubType": "text",
"wrapText": false,
"required": true,
"xPosition": 100,
"yPosition": 200,
"pageNumber": 1,
"width": 250,
"height": 24,
"fontSize": 12,
"optionValue": "",
"value": "",
"radioGroupId": "",
"fieldType": "text",
"participant": "Signer 1"
},
{
"id": "sig-002",
"fieldSubType": "checkbox",
"wrapText": false,
"required": false,
"xPosition": 100,
"yPosition": 240,
"pageNumber": 1,
"width": 12,
"height": 12,
"fontSize": 10,
"optionValue": "agree",
"value": "agree",
"radioGroupId": "",
"fieldType": "checkbox",
"participant": "Signer 1"
},
{
"id": "sig-003",
"fieldSubType": "radio",
"wrapText": false,
"required": false,
"xPosition": 100,
"yPosition": 280,
"pageNumber": 2,
"width": 12,
"height": 12,
"fontSize": 10,
"optionValue": "A",
"value": "A",
"radioGroupId": "grp-choice",
"fieldType": "radio_button",
"participant": "Signer 2"
},
{
"id": "sig-004",
"fieldSubType": "text",
"wrapText": false,
"required": true,
"xPosition": 100,
"yPosition": 320,
"pageNumber": 2,
"width": 250,
"height": 24,
"fontSize": 12,
"optionValue": "",
"value": "",
"radioGroupId": "",
"fieldType": "signature",
"participant": "Signer 2"
},
{
"id": "sig-005",
"fieldSubType": "text",
"wrapText": false,
"required": false,
"xPosition": 100,
"yPosition": 360,
"pageNumber": 2,
"width": 150,
"height": 24,
"fontSize": 12,
"optionValue": "",
"value": "",
"radioGroupId": "",
"fieldType": "date_signed",
"participant": "Signer 2"
}
]
}
],
"participants": [
{
"name": "Signer 1",
"email": "[email protected]",
"signingOrder": 1,
"inPersonSigning": false,
"phoneNumber": "+15551234567"
},
{
"name": "Signer 2",
"email": "[email protected]",
"signingOrder": 2,
"inPersonSigning": false
}
]
}Updated 20 days ago
