Automate TurboDocx API and TurboSign digital signatures in your n8n workflows. Send signature requests, track document status, and download signed PDFs—all without writing code.
n8n is a fair-code licensed workflow automation platform.
🚀 Zero-Code Signature Automation - Build complete document signing workflows with drag-and-drop simplicity. No API knowledge required.
✍️ Full TurboSign Integration - Access all TurboSign capabilities: prepare documents for review, send signature requests, track status, download signed PDFs, void requests, and resend emails.
⚡ Lightning Fast - Pure TypeScript implementation with zero runtime dependencies. Built for n8n Cloud compatibility and instant deployment.
🔄 Production Ready - Built with n8n's best practices, comprehensive error handling, and full TypeScript support for reliable automation.
🛠️ Developer Friendly - Clean API design, comprehensive documentation, and detailed examples to get you automating in minutes.
- In your n8n instance, go to Settings → Community Nodes
- Click Install and enter:
@turbodocx/n8n-nodes-turbodocx - Click Install to add the node to your instance
Follow the installation guide in the n8n community nodes documentation.
# From your n8n installation directory
npm install @turbodocx/n8n-nodes-turbodocx
# Restart n8n- Sign up for a TurboDocx account at https://turbodocx.com
- Log in to your TurboDocx dashboard
- Navigate to your account settings or API section
- Generate an API key
- Copy the API key
- In n8n, create a new TurboDocx API credential
- Paste your API key
- Set the Base URL:
https://api.turbodocx.com(default) - Save the credential
| Operation | What It Does | Use Case |
|---|---|---|
| Prepare for Review | Upload a document with signature fields and get a preview URL. No emails sent. | Preview field placement before sending to clients |
| Prepare for Signing | Upload a document and automatically send signature requests to all recipients | Send employment agreements, contracts, NDAs for signature |
| Get Document Status | Check the current status (draft, pending, completed, voided) | Verify all parties have signed before next step |
| Download Document | Download the final signed PDF | Archive to cloud storage or send to accounting |
| Void Document | Cancel a signature request and invalidate all links | Deal falls through, need to cancel request |
| Resend Email | Resend signature request to recipients who haven't signed | Send reminders after 3 days |
Supported File Types: PDF, DOCX, PPTX, or URLs to hosted files (S3, Google Drive, etc.)
[Webhook Trigger] → [HTTP Request: Get Document] → [TurboDocx: Prepare for Signing] → [Slack: Notify Team]
Step-by-step:
- Add a Webhook node to receive contract data
- Add HTTP Request node to download document from your storage (supports PDF, DOCX, PPTX)
- Add TurboDocx node with operation TurboSign: Prepare for Signing
- File: Select binary data from previous node (or provide URL to hosted file)
- Recipients:
[ {"name":"{{$json.customerName}}","email":"{{$json.customerEmail}}","order":1}, {"name":"Company Rep","email":"legal@company.com","order":2} ] - Fields:
[ {"type":"signature","page":1,"x":100,"y":500,"width":200,"height":50,"recipientOrder":1}, {"type":"date","page":1,"x":320,"y":500,"width":100,"height":30,"recipientOrder":1}, {"type":"signature","page":1,"x":100,"y":600,"width":200,"height":50,"recipientOrder":2}, {"type":"date","page":1,"x":320,"y":600,"width":100,"height":30,"recipientOrder":2} ]
- Add Slack node to notify team when sent
[Schedule Trigger] → [TurboDocx: Get Status] → [IF: Status=Completed] → [TurboDocx: Download] → [Google Drive: Upload]
Step-by-step:
- Schedule: Run every hour
- TurboDocx: Get Status: Check document
{{$json.documentId}} - IF: Only continue if status is "completed"
- TurboDocx: Download: Get signed PDF
- Google Drive: Upload to contracts folder
[Schedule Trigger] → [TurboDocx: Get Status] → [IF: Pending > 3 Days] → [TurboDocx: Resend Email]
[Webhook] → [TurboDocx: Generate Document] → [TurboSign: Prepare for Signing] → [Email: Notify Sender]
Step-by-step:
- Webhook: Receive customer data and contract details
- TurboDocx: Generate Document: Create personalized contract from template
- Returns
deliverableIdin output
- Returns
- TurboSign: Prepare for Signing:
- File Input Method: Select "Deliverable"
- Deliverable ID:
{{$json.deliverableId}}(from previous TurboDocx node) - Recipients:
[ {"name":"{{$json.customerName}}","email":"{{$json.customerEmail}}","order":1}, {"name":"Sales Rep","email":"sales@company.com","order":2} ] - Fields: Use template anchors or coordinates
- Email: Notify sender that signature request was sent
Why use this workflow: Seamlessly generate personalized documents and send them for signature in one automation. The deliverable ID links the generated document directly to the signature request.
TurboSign supports two methods for placing signature fields on documents:
| Property | Type | Required | Description | Example |
|---|---|---|---|---|
type |
string | ✅ | Field type | "signature", "date", "text" |
page |
number | ✅ | PDF page number (1-indexed) | 1 |
x |
number | ✅ | Horizontal position in pixels | 100 |
y |
number | ✅ | Vertical position in pixels | 500 |
width |
number | ✅ | Field width in pixels | 200 |
height |
number | ✅ | Field height in pixels | 50 |
recipientOrder |
number | ✅ | Which recipient fills this field | 1 |
Example:
{
"type": "signature",
"page": 1,
"x": 100,
"y": 500,
"width": 200,
"height": 50,
"recipientOrder": 1
}Best for: Documents with consistent layouts where you know exact field positions.
| Property | Type | Required | Description | Example |
|---|---|---|---|---|
type |
string | ✅ | Field type | "signature", "date", "text" |
recipientOrder |
number | ✅ | Which recipient fills this field | 1 |
template.anchor |
string | ✅ | Text pattern to find in document | "{sig}", "{client_signature}" |
template.placement |
string | ✅ | Where to place field relative to anchor | "replace", "after", "below" |
template.width |
number | ✅ | Field width in pixels | 200 |
template.height |
number | ✅ | Field height in pixels | 50 |
Placement Options:
| Placement | Description |
|---|---|
replace |
Replace the anchor text with the field |
after |
Place field to the right of anchor |
before |
Place field to the left of anchor |
above |
Place field above anchor |
below |
Place field below anchor |
Example:
{
"type": "signature",
"recipientOrder": 1,
"template": {
"anchor": "{client_sig}",
"placement": "replace",
"width": 180,
"height": 50
}
}Complete Template Anchor Example:
Document with anchors:
Client Signature: {client_sig} Date: {client_date}
Company Rep: {company_sig} Date: {company_date}
Fields configuration:
[
{"type": "signature", "recipientOrder": 1, "template": {"anchor": "{client_sig}", "placement": "replace", "width": 180, "height": 50}},
{"type": "date", "recipientOrder": 1, "template": {"anchor": "{client_date}", "placement": "replace", "width": 100, "height": 30}},
{"type": "signature", "recipientOrder": 2, "template": {"anchor": "{company_sig}", "placement": "replace", "width": 180, "height": 50}},
{"type": "date", "recipientOrder": 2, "template": {"anchor": "{company_date}", "placement": "replace", "width": 100, "height": 30}}
]Best for: Document templates with variable content where exact positions may shift.
| Type | Description | Use Case |
|---|---|---|
signature |
Full signature field | Primary signature area |
initial |
Initial field (smaller) | Initial each page or clause |
text |
Text input field | Enter names, titles, or custom text |
date |
Date picker field | Signature date, start date, etc. |
checkbox |
Checkbox field | Agree to terms, opt-in selections |
[
{
"name": "John Doe",
"email": "john@example.com",
"order": 1
},
{
"name": "Jane Smith",
"email": "jane@example.com",
"order": 2
}
]Signing Order:
- Recipients sign in order (order 1, then order 2, etc.)
- Use the same order number for parallel signing (both can sign at the same time)
TurboSign supports 4 different ways to provide documents for signature requests:
| Method | What It Does | When to Use | Example |
|---|---|---|---|
| Upload File | Upload PDF, DOCX, or PPTX directly from workflow | Files from triggers, HTTP requests, or local storage | Binary data from previous node |
| File URL | Download from external URL (S3, Google Drive, Dropbox, etc.) | Documents hosted on cloud storage or CDN | https://bucket.s3.amazonaws.com/contract.pdf |
| Deliverable | Reference existing TurboDocx deliverable by UUID | Generated a document and want to send for signature | 550e8400-e29b-41d4-a716-446655440000 |
| Template | Use TurboDocx template by UUID (static, no data merge) | Pre-configured templates ready to send as-is | 660e8400-e29b-41d4-a716-446655440001 |
| Format | Extension | Auto-Convert to PDF |
|---|---|---|
.pdf |
No (already PDF) | |
| Microsoft Word | .docx |
✅ Yes |
| Microsoft PowerPoint | .pptx |
✅ Yes |
Generate + Sign:
[TurboDocx: Generate] → [TurboSign: Prepare for Signing with Deliverable ID]
Download + Sign:
[HTTP Request: Get File] → [TurboSign: Prepare for Signing with Binary Upload]
Cloud Storage + Sign:
[TurboSign: Prepare for Signing with File URL from S3/Drive/Dropbox]
- n8n 1.60.0 or later
- Compatible with n8n Cloud (zero runtime dependencies)
- Works with self-hosted n8n instances
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.
For issues or questions:
- GitHub Issues: https://github.com/turbodocx/n8n-nodes-turbodocx/issues
- Discord: Join our community
| Package | Description |
|---|---|
| @turbodocx/html-to-docx | Convert HTML to Word documents |

