Skip to main content

Overview

Documenso supports five distinct recipient roles, each with different permissions and responsibilities. Choosing the right role ensures proper workflow execution and compliance with your signing requirements.

Available Roles

enum RecipientRole {
  SIGNER
  APPROVER
  VIEWER
  CC
  ASSISTANT
}

Role Details

Signer

The primary role for recipients who need to sign or fill fields in the document.Permissions:
  • View the complete document
  • Complete assigned fields (signature, date, text, etc.)
  • Download the document
  • Reject the document with a reason
Characteristics:
  • Required for completion: Document cannot be completed until all signers finish
  • Blocks workflow: In sequential signing, blocks next recipients until they complete
  • Receives notifications: Gets initial email, reminders, and completion notification
  • Tracked in audit log: All actions are logged with authentication details
  • Certificate entry: Appears in signing certificate with signature details
Typical Fields:
  • Signature
  • Initials
  • Name
  • Email
  • Date
  • Text inputs
  • Checkboxes
  • Dropdowns
Use Cases:
  • Employment contracts (employee signs)
  • Sales agreements (client signs)
  • NDAs (parties sign)
  • Service agreements
  • Consent forms
Signing Reason:
“I am signing this document as a party to the agreement”

Role Comparison Matrix

FeatureSIGNERAPPROVERVIEWERCCASSISTANT
View DocumentOnly after completion
Complete Fields
Blocks Completion
Blocks Sequential Flow
Can RejectDepends
Initial Notification
Completion Notification
Appears in Certificate
Signature FieldOptionalOptional
Authentication RequiredConfigurableConfigurableConfigurableConfigurable

Field Assignment by Role

Required Fields

Signers typically need:
  • At least one SIGNATURE or INITIALS field
  • DATE field (signing date)
  • Optionally: NAME, EMAIL fields
Approvers typically need:
  • CHECKBOX or RADIO field (approval selection)
  • DATE field
  • Optionally: TEXT field for comments
Viewers should have:
  • No fields (read-only access)
CC Recipients should have:
  • No fields (receive copy only)
Assistants may have:
  • Any field type depending on delegation
  • Often TEXT or NAME fields

Role Selection Guide

Decision Tree

Does the recipient need to sign?
├─ Yes → Is it a formal signature?
│  ├─ Yes → SIGNER
│  └─ No (just approval) → APPROVER
└─ No → Do they need to see it now?
   ├─ Yes → Can they take any action?
   │  ├─ Yes (on behalf of others) → ASSISTANT
   │  └─ No (just view) → VIEWER
   └─ No (only after completion) → CC

Sequential Signing with Roles

In sequential signing mode, only certain roles block the workflow:
// Blocking roles (must complete before next recipient)
const blockingRoles = [RecipientRole.SIGNER, RecipientRole.APPROVER];

// Non-blocking roles (don't affect sequence)
const nonBlockingRoles = [RecipientRole.VIEWER, RecipientRole.CC, RecipientRole.ASSISTANT];
Example Sequential Workflow:
[
  { email: '[email protected]', role: 'SIGNER', signingOrder: 0 },    // Must sign first
  { email: '[email protected]', role: 'APPROVER', signingOrder: 1 },   // Then approves
  { email: '[email protected]', role: 'VIEWER', signingOrder: null },        // Can view anytime
  { email: '[email protected]', role: 'CC', signingOrder: null }          // Gets copy at end
]

Authentication by Role

Different roles may require different authentication levels:
// High-security signing
{
  role: RecipientRole.SIGNER,
  authOptions: {
    accessAuth: ['ACCOUNT', 'TWO_FACTOR_AUTH'],
    actionAuth: ['PASSKEY']
  }
}

// Standard approval
{
  role: RecipientRole.APPROVER,
  authOptions: {
    accessAuth: ['ACCOUNT'],
    actionAuth: ['PASSWORD']
  }
}

// Open viewing
{
  role: RecipientRole.VIEWER,
  authOptions: {
    accessAuth: [],
    actionAuth: []
  }
}

Best Practices

Role Assignment

  1. Identify required actions
    • Who must sign for legal validity?
    • Who needs to approve for business process?
    • Who needs visibility but no action?
  2. Assign appropriate roles
    • Use SIGNER for legally binding signatures
    • Use APPROVER for internal approvals
    • Use VIEWER for stakeholders
    • Use CC for record recipients
  3. Configure field assignments
    • Ensure signers have signature fields
    • Ensure approvers have approval fields
    • Don’t assign fields to viewers or CC
  4. Set up authentication
    • Higher auth for signers/approvers
    • Lower or no auth for viewers
    • No auth needed for CC

Common Patterns

Employment Contract:
[
  { email: '[email protected]', role: 'SIGNER' },      // Employee
  { email: '[email protected]', role: 'SIGNER' },     // Company rep
  { email: '[email protected]', role: 'CC' }          // HR file
]
Purchase Order Approval:
[
  { email: '[email protected]', role: 'SIGNER', signingOrder: 0 },
  { email: '[email protected]', role: 'APPROVER', signingOrder: 1 },
  { email: '[email protected]', role: 'APPROVER', signingOrder: 2 },
  { email: '[email protected]', role: 'CC' }
]
Board Resolution:
[
  { email: '[email protected]', role: 'SIGNER' },
  { email: '[email protected]', role: 'SIGNER' },
  { email: '[email protected]', role: 'SIGNER' },
  { email: '[email protected]', role: 'VIEWER' },
  { email: '[email protected]', role: 'CC' }
]

API Examples

Create Document with Roles

POST /api/v1/documents
{
  "recipients": [
    {
      "email": "[email protected]",
      "name": "John Doe",
      "role": "SIGNER"
    },
    {
      "email": "[email protected]",
      "name": "Jane Smith",
      "role": "APPROVER"
    },
    {
      "email": "[email protected]",
      "name": "Bob Johnson",
      "role": "VIEWER"
    },
    {
      "email": "[email protected]",
      "name": "Archive System",
      "role": "CC"
    }
  ]
}

Update Recipient Role

PUT /api/v1/documents/:id/recipients/:recipientId
{
  "role": "APPROVER"
}
Recipient roles can only be changed while the document is in DRAFT status. Once sent, roles are locked to maintain audit trail integrity.

Webhook Events by Role

Different roles trigger different webhook events:
// SIGNER completed
{
  "event": "DOCUMENT_SIGNED",
  "data": {
    "recipientRole": "SIGNER",
    "recipientEmail": "[email protected]"
  }
}

// APPROVER completed  
{
  "event": "DOCUMENT_SIGNED",
  "data": {
    "recipientRole": "APPROVER",
    "recipientEmail": "[email protected]"
  }
}

// VIEWER opened
{
  "event": "DOCUMENT_OPENED",
  "data": {
    "recipientRole": "VIEWER",
    "recipientEmail": "[email protected]"
  }
}
CC recipients do not receive the document during the signing process. They only receive a copy after all required signers and approvers have completed their actions.

Build docs developers (and LLMs) love