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
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:
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:
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:
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.