10 E-Signature Workflow Templates for Common Business Processes
Back to BlogTutorials

10 E-Signature Workflow Templates for Common Business Processes

Ready-to-use workflow templates for HR onboarding, sales contracts, vendor agreements, and more. Automate repetitive signing tasks in minutes.

Lisa Morgan

Business Process Consultant

Dec 18, 202515 min read

10 E-Signature Workflow Templates for Common Business Processes

Stop recreating the same signature workflows from scratch. These proven templates handle 80% of business signing scenarios and can be customized in minutes.

Template 1: Employee Onboarding

Use Case: New hire paperwork (offer letter, I-9, W-4, handbook, benefits enrollment)

Workflow:

```

Step 1: HR uploads offer letter

β”œβ”€> Sent to: Candidate

β”œβ”€> Due: 48 hours

└─> Actions: Sign + Date

Step 2: On acceptance

β”œβ”€> Auto-send: W-4, I-9, Direct Deposit

β”œβ”€> Sent to: New hire

β”œβ”€> Due: 3 business days

└─> Actions: Fill + Sign

Step 3: On completion

β”œβ”€> Auto-send: Employee handbook acknowledgment

β”œβ”€> CC: Manager

└─> Trigger: Payroll system update

Step 4: First day

β”œβ”€> Auto-send: Equipment agreement, NDA, Code of conduct

β”œβ”€> Sent to: New hire + Manager

└─> Require: Both signatures

```

Implementation:

```javascript

const onboardingWorkflow = {

name: 'Employee Onboarding',

trigger: 'manual', // HR initiates

steps: [

{

id: 'offer',

template: 'offer_letter',

recipients: [{ role: 'candidate', order: 1 }],

fields: ['signature', 'date', 'start_date'],

deadline: { hours: 48 },

reminders: [{ hours: 24 }, { hours: 4 }],

onComplete: 'next_step'

},

{

id: 'tax_forms',

condition: 'offer.status === "signed"',

documents: ['w4_form', 'i9_form', 'direct_deposit'],

recipients: [{ role: 'new_hire', order: 1 }],

fields: ['fillable_form', 'signature'],

deadline: { days: 3 },

onComplete: 'next_step'

},

{

id: 'policies',

condition: 'tax_forms.status === "completed"',

documents: ['employee_handbook', 'code_of_conduct', 'nda'],

recipients: [

{ role: 'new_hire', order: 1 },

{ role: 'manager', order: 2 }

],

onComplete: 'update_hrms'

}

],

integrations: {

onComplete: {

action: 'webhook',

url: 'https://yourcompany.com/api/onboarding-complete',

payload: {

employeeId: '{{new_hire.id}}',

documents: '{{all_signed_docs}}',

startDate: '{{offer.start_date}}'

}

}

}

};

```

Time Saved: 6 hours per new hire (90% reduction)

Template 2: Sales Contract Approval

Use Case: Quote approval requiring multiple internal signatures before customer signing

Workflow:

```

Step 1: Sales rep creates quote

β”œβ”€> Auto-route to: Sales manager

β”œβ”€> If > $50k: Route to VP Sales

└─> If > $200k: Route to CEO

Step 2: Internal approval

β”œβ”€> Sequential signing: Manager β†’ VP β†’ CEO

β”œβ”€> Each approver can: Approve | Reject | Request Changes

└─> Rejection: Return to sales rep with comments

Step 3: Customer signing

β”œβ”€> Condition: All internal approvals complete

β”œβ”€> Send to: Customer contact

β”œβ”€> CC: Account executive, Sales manager

└─> Include: Final approved quote

Step 4: Countersignature

β”œβ”€> After customer signs

β”œβ”€> Send to: Authorized company signatory

└─> Trigger: Contract effective, update CRM

```

Implementation:

```javascript

const salesWorkflow = {

name: 'Sales Contract Approval',

steps: [

{

id: 'approval_routing',

condition: {

if: 'deal_value > 200000',

route: ['sales_manager', 'vp_sales', 'ceo'],

elseIf: 'deal_value > 50000',

route: ['sales_manager', 'vp_sales'],

else: ['sales_manager']

},

signing: 'sequential',

allowReject: true,

allowAmend: true

},

{

id: 'customer_signature',

condition: 'approval_routing.status === "approved"',

recipients: [{ email: '{{customer.email}}' }],

cc: ['{{sales_rep.email}}', '{{sales_manager.email}}'],

reminders: [

{ days: 3 },

{ days: 7, escalate: 'sales_manager' }

]

},

{

id: 'countersignature',

condition: 'customer_signature.status === "signed"',

recipients: [{ role: 'authorized_signatory' }],

onComplete: [

{ action: 'update_crm', status: 'closed_won' },

{ action: 'notify_team', template: 'deal_won' },

{ action: 'trigger_onboarding' }

]

}

]

};

```

Time Saved: 4.5 days average (from 7 days to 2.5 days)

Template 3: NDA (Mutual or One-Way)

Use Case: Quick NDA for prospect meetings, vendor discussions, partnership talks

Workflow:

```

Step 1: Select NDA type

β”œβ”€> Mutual NDA (both parties protect info)

└─> One-way NDA (we disclose, they protect)

Step 2: Auto-populate

β”œβ”€> Our company info (from profile)

β”œβ”€> Counterparty info (from form)

└─> Effective date, term length

Step 3: Parallel signing

β”œβ”€> Send to both parties simultaneously

β”œβ”€> Order doesn't matter

└─> Complete when both sign

Step 4: Auto-distribute

β”œβ”€> Email fully executed NDA to both parties

β”œβ”€> Store in: Legal repository

└─> Calendar: Add expiration reminder

```

Implementation:

```javascript

const ndaWorkflow = {

name: 'Quick NDA',

steps: [

{

id: 'nda_setup',

template: '{{ nda_type }}', // mutual_nda or oneway_nda

autoPopulate: {

our_company: '{{company.legal_name}}',

our_address: '{{company.hq_address}}',

our_signatory: '{{company.authorized_signer}}',

effective_date: '{{ today }}',

term: '{{ nda_term }}', // Default: 2 years

}

},

{

id: 'signing',

recipients: [

{ role: 'our_signatory', order: 'any' },

{ role: 'counterparty', order: 'any' }

],

signing: 'parallel', // Order doesn't matter

deadline: { days: 7 }

},

{

id: 'distribution',

condition: 'signing.status === "completed"',

actions: [

{

action: 'email',

to: ['{{our_signatory}}', '{{counterparty}}'],

template: 'nda_executed',

attach: '{{signed_document}}'

},

{

action: 'calendar_event',

date: '{{effective_date + term}}',

title: 'NDA Expiration: {{counterparty.company}}',

attendees: ['{{our_signatory}}']

},

{

action: 'store',

location: 'legal/ndas/{{year}}/{{counterparty.company}}.pdf'

}

]

}

]

};

```

Time Saved: 2 hours per NDA (from 3+ hours to <30 minutes)

Template 4: Vendor/Supplier Agreement

Use Case: Standard vendor contracts with legal review for non-standard terms

Workflow:

```

Step 1: Procurement uploads vendor contract

β”œβ”€> Auto-detect: Non-standard clauses (AI)

└─> If standard: Skip to Step 3

If non-standard: Route to legal

Step 2: Legal review (conditional)

β”œβ”€> Assign to: Contracts attorney

β”œβ”€> Attorney can: Approve | Request changes | Reject

└─> If approved: Continue to Step 3

Step 3: Procurement approval

β”œβ”€> Sign: Procurement manager

β”œβ”€> If > $100k: Also require CFO signature

└─> Sequential signing

Step 4: Vendor signature

β”œβ”€> Send to: Vendor contact

β”œβ”€> Reminders: Days 3, 7, 14

└─> Escalation: Day 14 to procurement VP

Step 5: Countersignature & setup

β”œβ”€> Final signature: Authorized company signatory

β”œβ”€> Trigger: Add vendor to ERP

└─> Schedule: Payment terms, renewal reminders

```

Implementation:

```javascript

const vendorWorkflow = {

name: 'Vendor Agreement',

steps: [

{

id: 'ai_review',

action: 'analyze_contract',

checks: [

'liability_clause',

'indemnification',

'termination_terms',

'payment_terms',

'ip_rights'

],

flagIf: 'non_standard_detected',

routeTo: 'legal_review'

},

{

id: 'legal_review',

condition: 'ai_review.flagged === true',

recipients: [{ role: 'contracts_attorney' }],

actions: ['approve', 'request_changes', 'reject'],

deadline: { days: 2 }

},

{

id: 'procurement_approval',

condition: 'legal_review.status !== "rejected"',

recipients: [

{ role: 'procurement_manager', order: 1 },

{

role: 'cfo',

order: 2,

condition: 'contract_value > 100000'

}

]

},

{

id: 'vendor_signature',

condition: 'procurement_approval.status === "approved"',

recipients: [{ email: '{{vendor.contact_email}}' }],

reminders: [

{ days: 3 },

{ days: 7 },

{ days: 14, escalate: 'procurement_vp' }

]

},

{

id: 'finalization',

onComplete: [

{ action: 'update_erp', vendor: '{{vendor.details}}' },

{ action: 'set_payment_schedule', terms: '{{payment_terms}}' },

{ action: 'calendar_reminder', event: 'contract_renewal', date: '{{end_date - 90_days}}' }

]

}

]

};

```

Compliance Boost: 100% legal review for non-standard terms

Template 5: Lease Agreement (Residential)

Use Case: Property managers sending lease to new tenants

Workflow:

```

Step 1: Auto-populate lease

β”œβ”€> Property: Address, unit number, amenities

β”œβ”€> Tenant: Name, contact info (from application)

β”œβ”€> Terms: Rent amount, deposit, lease term, start date

└─> Attachments: Property rules, move-in checklist

Step 2: Co-tenant signatures (if applicable)

β”œβ”€> Send to all tenants simultaneously

β”œβ”€> Each signs their own signature field

└─> All must sign before proceeding

Step 3: Guarantor signature (if required)

β”œβ”€> Condition: Tenant credit score < 650 or income < 3x rent

β”œβ”€> Send to: Guarantor

└─> Require: Separate guarantor agreement

Step 4: Landlord signature

β”œβ”€> After all tenant/guarantor signatures

β”œβ”€> Sign: Property manager or owner

└─> Auto-trigger: Move-in scheduling email

Step 5: Distribution & setup

β”œβ”€> Email copy to: All tenants, landlord, property manager

β”œβ”€> Add to: Tenant portal

β”œβ”€> Schedule: Rent payment auto-pay

└─> Calendar: Lease expiration reminder (90 days before)

```

Time Saved: 3-5 days (from in-person signing to same-day execution)

Template 6: Board Resolution

Use Case: Corporate board approving significant decisions

Workflow:

```

Step 1: Secretary prepares resolution

β”œβ”€> Template: Board resolution

β”œβ”€> Content: Action being approved

└─> Effective: Upon majority approval

Step 2: Parallel board member signing

β”œβ”€> Send to: All board members

β”œβ”€> Signing: Simultaneous (order doesn't matter)

β”œβ”€> Quorum: Must reach before effective

└─> Example: 3 of 5 signatures required

Step 3: Real-time quorum tracking

β”œβ”€> Display: "3 of 5 required signatures received"

β”œβ”€> Auto-notify: Secretary when quorum reached

└─> Resolution: Effective immediately upon quorum

Step 4: Record keeping

β”œβ”€> Add to: Corporate minute book

β”œβ”€> File with: State (if required)

└─> Distribute: All board members, officers

```

Implementation:

```javascript

const boardResolutionWorkflow = {

name: 'Board Resolution',

steps: [

{

id: 'board_voting',

recipients: '{{all_board_members}}',

signing: 'parallel',

quorum: {

required: 3, // 3 of 5

notifyOn: 'quorum_reached'

},

deadline: { days: 7 }

},

{

id: 'effectiveness',

condition: 'board_voting.quorum_met === true',

actions: [

{ action: 'update_status', status: 'approved' },

{ action: 'effective_date', date: '{{quorum_reached_timestamp}}' },

{ action: 'notify_officers', template: 'resolution_passed' }

]

},

{

id: 'record_keeping',

actions: [

{ action: 'add_to_minute_book', year: '{{current_year}}' },

{ action: 'file_state', if: '{{requires_filing}}' },

{ action: 'distribute', recipients: '{{board + officers}}' }

]

}

]

};

```

Compliance: Instant minute book updates, state filing automation

Template 7: Freelancer/Contractor Agreement

Use Case: Hiring independent contractors for projects

Workflow:

```

Step 1: Create agreement

β”œβ”€> Scope: Project description, deliverables

β”œβ”€> Terms: Rate, payment schedule, timeline

└─> Clauses: IP assignment, confidentiality, independent contractor status

Step 2: Contractor signature

β”œβ”€> Send to: Contractor

β”œβ”€> Include: W-9 form

└─> Deadline: 3 days before project start

Step 3: Company signature

β”œβ”€> After contractor signs

β”œβ”€> Sign: Hiring manager or authorized signatory

└─> Trigger: Add to accounting system

Step 4: Onboarding

β”œβ”€> Email: Project access links, tools, team intros

β”œβ”€> Create: Time tracking account

└─> Schedule: Kickoff meeting

```

Time Saved: From 5 days to 24 hours average

Template 8: Change Order/Amendment

Use Case: Modifying existing signed agreement

Workflow:

```

Step 1: Reference original agreement

β”œβ”€> Link to: Original contract

β”œβ”€> Amendment: Specific sections being changed

└─> Effective: Upon execution

Step 2: Mirror original signers

β”œβ”€> Send to: Same parties from original agreement

β”œβ”€> Order: Same signing sequence

└─> Validation: Match original authorized signers

Step 3: Attach to original

β”œβ”€> Link: Amendment to original contract record

β”œβ”€> Version: Original + Amendment = Current version

└─> Display: "Agreement (As Amended)"

```

Traceability: Complete amendment history, easy audit trail

Template 9: Equipment/Asset Checkout

Use Case: Employees checking out company equipment

Workflow:

```

Step 1: IT submits checkout form

β”œβ”€> Employee: Name, department

β”œβ”€> Equipment: Laptop model, serial number, accessories

└─> Responsibility: Damage/loss policy

Step 2: Employee acknowledges

β”œβ”€> Signs: Equipment received in good condition

β”œβ”€> Agrees: Responsible for loss/damage

└─> Photos: Equipment condition at checkout

Step 3: Manager approval

β”œβ”€> Condition: Equipment value > $1,000

β”œβ”€> Signs: Manager authorizes assignment

└─> Budget: Charged to department

Step 4: Return process

β”œβ”€> When: Employee submits return form

β”œβ”€> IT verifies: Condition matches checkout photos

└─> Close: Original checkout agreement marked "Returned"

```

Accountability: 100% equipment tracking, reduced losses

Template 10: Client Service Agreement

Use Case: Recurring service contracts (marketing agency, law firm, consultancy)

Workflow:

```

Step 1: Scope definition

β”œβ”€> Services: Detailed scope of work

β”œβ”€> Deliverables: What client receives

β”œβ”€> Timeline: Project schedule

└─> Fees: Monthly retainer or project-based

Step 2: Client approval

β”œβ”€> Send to: Client decision-maker

β”œβ”€> Include: Master services agreement + SOW

└─> Option: Client can request changes (triggers revision loop)

Step 3: Company countersignature

β”œβ”€> After client signs

β”œβ”€> Signs: Service delivery lead or executive

└─> Effective: On start date specified

Step 4: Service activation

β”œβ”€> Trigger: Client onboarding sequence

β”œβ”€> Create: Project in PM tool

β”œβ”€> Schedule: Recurring invoice

└─> Calendar: Quarterly review meetings, renewal reminder

```

Automation: Seamless transition from sales to delivery

Customizing Templates

Template Variables

Common variables you can reuse:

```javascript

const commonVariables = {

// Company info

'{{company.name}}': 'Your Company Inc.',

'{{company.address}}': '123 Main St...',

'{{company.authorized_signer}}': 'CEO Name',

// Document info

'{{document.title}}': 'Employment Agreement',

'{{document.date}}': '2026-01-09',

// Counterparty info

'{{counterparty.name}}': 'Client Name',

'{{counterparty.email}}': 'client@example.com',

// Dynamic dates

'{{today}}': new Date(),

'{{30_days_from_now}}': addDays(new Date(), 30)

};

```

Conditional Logic

```javascript

{

condition: {

if: 'contract_value > 100000',

then: 'require_legal_review',

else: 'standard_approval'

}

}

```

Integration Triggers

```javascript

{

onComplete: {

salesforce: {

action: 'update_opportunity',

stage: 'Closed Won'

},

slack: {

action: 'notify_channel',

channel: '#sales-wins',

message: 'Deal closed: {{deal_name}} - ${{deal_value}}'

},

googleCalendar: {

action: 'create_event',

title: 'Kickoff: {{client_name}}',

date: '{{start_date}}'

}

}

}

```

Best Practices

1. Start Simple

Don't over-engineer workflows initially:

  • βœ… Start with 2-3 steps
  • βœ… Add complexity as you learn
  • ❌ Avoid creating 10-step workflows on day 1
  • 2. Test Before Rolling Out

    ```javascript

    // Use test mode

    const workflow = await client.workflows.test({

    template: salesContractWorkflow,

    testRecipients: ['test@yourcompany.com'],

    dryRun: true

    });

    ```

    3. Monitor and Optimize

    Track key metrics:

  • Completion rate (target: >90%)
  • Average completion time
  • Abandonment points (where people drop off)
  • Escalation frequency
  • 4. Provide Escape Valves

    Always allow manual override for edge cases:

    ```javascript

    {

    workflow: 'standard_sales_approval',

    allowManualOverride: true,

    overrideRequires: ['vp_sales_approval']

    }

    ```

    Conclusion

    These 10 templates cover the majority of business e-signature needs. Start with the ones that solve your biggest pain points, then gradually expand your automation.

    Quick ROI Calculation:

  • Average time saved per document: 3 hours
  • Documents per month: 50
  • Hours saved: 150/month
  • Value at $50/hour: $7,500/month
  • Annual savings: $90,000
  • Ready to automate your signature workflows?


    Browse our full template library or create custom workflows: [Get Started](/pricing)

    Ready to Try Space Sign?

    Experience the power of open-source, AI-powered e-signatures.

    Space Sign Assistant

    Hello there πŸ‘‹ I’m the Space Sign Assistant. How can I help you today?