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

nametyperequireddescription
namestringyesA human-friendly name for this signing package.
typestringyesdynamic (generated from workflow data) or static (from a fixed asset).
signingOrderstringyessequential (one signer at a time) or simultaneous (all signers notified at once).
deliveryobjectyesEmail and SMS delivery settings. See Delivery below.
templatesarrayyesOne or more document templates with signing fields. See Templates below.
participantsarrayyesPeople who will sign or fill fields. See Participants below.
shouldNotCollectSignerNamebooleannoWhen true, skips collecting the signer's name during the signing process.

Delivery

The delivery object configures how signers are notified.

nametyperequireddescription
fromNamestringyesSender name shown in notification emails.
replyTostringnoReply-to email address.
subjectstringyesEmail subject line.
smsMessagestringnoOptional SMS body for notifying signers.
buttonLabelstringyesText 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.

nametyperequireddescription
namestringyesParticipant display name.
emailstringnoContact email for delivery and identity.
signingOrderintegeryesPosition in the signing sequence when signingOrder is sequential.
inPersonSigningbooleanyesWhether the signer completes the process in person. Default: false.
phoneNumberstringnoPhone 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.

nametyperequireddescription
idstringyesUnique identifier for this field.
fieldTypestringyesLogical field type: text, signature, date, checkbox, initials, full_name, radio_button, or date_signed.
fieldSubTypestringyesVisual control type: text, checkbox, or radio.
participantstringyesName or identifier matching one of the defined participants.
wrapTextbooleanyesWhether text wraps within the bounding box. Default: false.
requiredbooleanyesWhether the signer must complete this field. Default: false.
pageNumbernumberyesPage index to place the field on.
xPositionnumbernoHorizontal position on the page.
yPositionnumbernoVertical position on the page.
widthnumbernoControl width.
heightnumbernoControl height.
fontSizenumbernoFont size for text and date fields.
optionValuestringnoValue associated with a specific option (for checkbox and radio fields).
valuestringnoPre-filled value for text or date fields.
radioGroupIdstringnoGroup 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
    }
  ]
}