LegalOSS155.3ktracked
Document Automation · Retrieval & RAG · E-Signature & Workflow

n8n-nodes-turbodocxMaintained

TurboDocx/n8n-nodes-turbodocx

TurboDocx

@turbodocx/n8n-nodes-turbodocx

NPM Version CodeQL GitHub Stars Type Script Discord npm X Embed TurboDocx in Your App in Minutes

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.

Why This Node?

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

Installation

n8n Cloud (Pending Community Node Verification)

  1. In your n8n instance, go to SettingsCommunity Nodes
  2. Click Install and enter: @turbodocx/n8n-nodes-turbodocx
  3. Click Install to add the node to your instance

Self-Hosted n8n

Follow the installation guide in the n8n community nodes documentation.

# From your n8n installation directory
npm install @turbodocx/n8n-nodes-turbodocx
# Restart n8n

Credentials Setup

Getting Your API Key

  1. Sign up for a TurboDocx account at https://turbodocx.com
  2. Log in to your TurboDocx dashboard
  3. Navigate to your account settings or API section
  4. Generate an API key
  5. Copy the API key

Adding to n8n

  1. In n8n, create a new TurboDocx API credential
  2. Paste your API key
  3. Set the Base URL: https://api.turbodocx.com (default)
  4. Save the credential

Operations

TurboSign

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 document-level status (draft, under_review, completed, voided, expired) Verify all parties have signed before next step
Get Recipients Every recipient with their signing status, email history, and who sent the document Chase the exact people you're still waiting on, not the whole list
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 the signature request to recipients who haven't signed Recipient lost or never received the original signing email
Send Reminder Nudge a document's outstanding signers — a standalone reminder that ignores the automatic cadence and cap Chase signers outside the normal reminder rhythm
Get Audit Trail Fetch the full signing audit trail for a document Compliance evidence of who viewed/signed and when

Reminder & Expiration Schedule: Prepare for Signing and Prepare for Review both accept an optional Reminder & Expiration Schedule — the automatic reminder cadence (delay, interval, and cap) and document expiration (expire-after plus warning cadence), set per document at send time. Leave any field out to inherit your organization's defaults. Matches the schedule options in the TurboDocx SDK.

Supported File Types: PDF, DOCX, PPTX, or URLs to hosted files (S3, Google Drive, etc.)

Deliverable (Document Generation)

Generate documents from TurboDocx templates with variable substitution, then list, fetch, update, delete, or download them (PDF or original DOCX/PPTX source).

Operation What It Does
Generate Create a document from a template with variables
Get / Get Many Fetch one deliverable, or list with search + pagination
Update Change name, description, or tags
Delete Soft-delete a deliverable
Download PDF / Download Source File Get the generated PDF or original DOCX/PPTX as binary

TurboQuote

Full CPQ surface, modelled as several resources for an intuitive UX:

Resource Operations
Quote Get Many, Create, Get, Update, Delete, Duplicate, Apply/Remove Price Book, Download PDF, Send, Send With Deliverable, Decline, Void, Handle Expired, Create and Send (one-step macro)
Quote Line Item Get Many, Add, Add Bundle, Update, Remove
Quote Number Config Get, Update (org-wide quote numbering format)
Product Get Many, Bulk Create, Create, Get, Update, Delete, Duplicate, Primary Images (supports binary image upload)
Price Book Get Many, Bulk Create, Create, Get, Update, Delete, Duplicate, List Products
Bundle Get Many, Bulk Create, Create, Get, Update, Delete, Duplicate
Company Get Many, Bulk Create, Create, Get, Update, Delete, List Contacts
Contact Get Many, Bulk Create, Create, Update, Delete
Quote Template Get Many, Get Default, Get, Create, Update, Delete
Quote Type Get Many, Bulk Create, Create, Update, Delete

Reminder & Expiration Schedule (quote Send / Send With Deliverable / Create and Send): these send operations accept an optional Reminder & Expiration Schedule — the automatic reminder cadence (delay, interval, cap) plus per-quote expiration and its warning cadence. Leave any field out to inherit your organization's defaults. Quote constraint: expiry is pinned to the quote's Valid Until (so Expire After is ignored while expiration is on), and the reminder/warning cadence must fit inside Valid Until or the send is rejected.

Webhooks

Resource / Node What It Does
Webhook (action) Manage the org signature webhook: Create, Get, Update, Delete, Test, Notify, Regenerate Secret, List Deliveries, Replay Delivery, Get Stats
TurboDocx Trigger (trigger node) Starts a workflow on signature.document.completed / signature.document.voided. Auto-registers the webhook on activation, verifies the HMAC signature on every delivery, and cleans up on deactivation.

TurboPartner

Provision and manage customer organizations from a partner account — including each tenant's TurboSign display preferences, so signature appearance can be set per org without logging into its settings UI. Requires the separate "TurboDocx Partner API" credential (a TDXP- partner key + partner ID).

Resource Operations
Partner Organization Create, Get Many, Get, Update, Delete, Update Entitlements, Get Preferences, Update Preferences
Partner Org User Get Many, Add, Update Role, Remove, Resend Invite
Partner Org API Key Get Many, Create, Update, Revoke
Partner API Key Get Many, Create, Update, Revoke
Partner User Get Many, Add, Update Permissions, Remove, Resend Invite
Partner Audit Log Get Many (with filtering)

Credentials: TurboSign, Deliverable, TurboQuote, and Webhook resources use the TurboDocx API credential (API key + Organization ID). The TurboPartner resources use the TurboDocx Partner API credential. The node shows the right credential automatically based on the selected resource.

Usage Examples

Simple Contract Signing Workflow

[Webhook Trigger] → [HTTP Request: Get Document] → [TurboDocx: Prepare for Signing] → [Slack: Notify Team]

Step-by-step:

  1. Add a Webhook node to receive contract data
  2. Add HTTP Request node to download document from your storage (supports PDF, DOCX, PPTX)
  3. 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}
      ]
  4. Add Slack node to notify team when sent

Auto-Download Completed Contracts

[Schedule Trigger] → [TurboDocx: Get Status] → [IF: Status=Completed] → [TurboDocx: Download] → [Google Drive: Upload]

Step-by-step:

  1. Schedule: Run every hour
  2. TurboDocx: Get Status: Check document {{$json.documentId}}
  3. IF: Only continue if status is "completed"
  4. TurboDocx: Download: Get signed PDF
  5. Google Drive: Upload to contracts folder

Reminder System for Pending Signatures

[Schedule Trigger] → [TurboDocx: Get Status] → [IF: Pending > 3 Days] → [TurboDocx: Resend Email]

Document Generation + Signature Flow

[Webhook] → [TurboDocx: Generate Document] → [TurboSign: Prepare for Signing] → [Email: Notify Sender]

Step-by-step:

  1. Webhook: Receive customer data and contract details
  2. TurboDocx: Generate Document: Create personalized contract from template
    • Returns deliverableId in output
  3. 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
  4. 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.

Field Placement Methods

TurboSign supports two methods for placing signature fields on documents:

Method 1: Coordinate-Based (Absolute Positioning)

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.

Method 2: Template Anchor-Based (Dynamic Positioning)

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.

Field Types Reference

Type Description Use Case
signature Full signature field Primary signature area
initial Initial field (smaller) Initial each page or clause
date Date picker field Signature date, start date, etc.
full_name Recipient's full name Auto-filled from the recipient
first_name Recipient's first name Auto-filled from the recipient
last_name Recipient's last name Auto-filled from the recipient
email Recipient's email Auto-filled from the recipient
title Recipient's job title Auto-filled from the recipient
company Recipient's company Auto-filled from the recipient
text Text input field Enter names, titles, or custom text
checkbox Checkbox field Agree to terms, opt-in selections

Field Default Values

Any field may carry an optional defaultValue to pre-fill it (max 600 characters). It is a pure passthrough — forwarded verbatim to the backend, which owns validation.

  • Date fields fill with the signing date by default. To pin a specific date instead, set defaultValue to that date in MM/DD/YYYY (e.g. "12/31/2026"); omit it (or send "") to keep the signing-date behaviour. The value must be a real calendar date — a non-existent date such as "02/31/2026" is rejected.
  • signature and initial fields cannot carry a defaultValue, and a date field cannot be isReadonly.
[
  {"recipientEmail": "client@example.com", "type": "date", "template": {"anchor": "{effective_date}", "placement": "replace", "width": 120, "height": 20}, "defaultValue": "12/31/2026"}
]

Conditional (IF/THEN) Fields

Any field may carry an optional metadata object that turns a checkbox into a controller for one or more dependent fields. When the checkbox's state matches the rule, the dependent field is shown (or unlocked) to the signer. This is a pure passthrough — the metadata object is forwarded verbatim to the backend, which owns the behaviour.

On the controlling checkbox — give it a stable fieldKey so dependents can reference it:

Property Type Required Description Example
metadata.fieldKey string ✅ (to be referenced) Stable id for this checkbox "agree_terms"

The controlling field must be type: "checkbox".

On a dependent field — add a conditional rule that points at the checkbox's fieldKey:

Property Type Required Description Example
metadata.conditional.controllingFieldKey string Must equal the controlling checkbox's metadata.fieldKey "agree_terms"
metadata.conditional.operator string "is_checked" or "is_not_checked" "is_checked"
metadata.conditional.action string "show" (hidden until the rule is met) or "unlock" (visible-but-read-only until the rule is met) "show"

Notes:

  • The node validates the shape of each rule (operator, action, and a non-empty controllingFieldKey) and fails fast with a clear error before sending — matching the backend's 400. A controllingFieldKey that names no existing checkbox (a dangling reference) is allowed: the backend fails open by design and simply ignores the rule.
  • metadata is entirely optional. Fields without it behave exactly as before.

Worked example — a checkbox controls a text field (is_checkedshow):

The "Other reason" text field stays hidden until the signer checks the "I have a different reason" box.

[
  {
    "recipientEmail": "client@example.com",
    "type": "checkbox",
    "template": {
      "anchor": "{OtherReasonToggle}",
      "placement": "replace",
      "size": { "width": 20, "height": 20 }
    },
    "metadata": { "fieldKey": "other_reason_toggle" }
  },
  {
    "recipientEmail": "client@example.com",
    "type": "text",
    "template": {
      "anchor": "{OtherReason}",
      "placement": "replace",
      "size": { "width": 240, "height": 30 }
    },
    "metadata": {
      "conditional": {
        "controllingFieldKey": "other_reason_toggle",
        "operator": "is_checked",
        "action": "show"
      }
    }
  }
]

Full IF/THEN workflow (Prepare for Signing):

{
  "nodes": [
    {
      "parameters": {
        "resource": "turboSign",
        "operation": "prepareForSigning",
        "fileInputMethod": "url",
        "fileLink": "https://my-bucket.s3.amazonaws.com/agreement.pdf",
        "recipients": "[{\"name\":\"Client Name\",\"email\":\"client@example.com\",\"signingOrder\":1}]",
        "fields": "[{\"recipientEmail\":\"client@example.com\",\"type\":\"checkbox\",\"template\":{\"anchor\":\"{OtherReasonToggle}\",\"placement\":\"replace\",\"size\":{\"width\":20,\"height\":20}},\"metadata\":{\"fieldKey\":\"other_reason_toggle\"}},{\"recipientEmail\":\"client@example.com\",\"type\":\"text\",\"template\":{\"anchor\":\"{OtherReason}\",\"placement\":\"replace\",\"size\":{\"width\":240,\"height\":30}},\"metadata\":{\"conditional\":{\"controllingFieldKey\":\"other_reason_toggle\",\"operator\":\"is_checked\",\"action\":\"show\"}}}]",
        "additionalFields": {
          "senderEmail": "sales@yourcompany.com",
          "documentName": "Service Agreement"
        }
      },
      "name": "TurboSign: Send Signature",
      "type": "n8n-nodes-turbodocx.turboDocx",
      "typeVersion": 1,
      "position": [640, 300]
    }
  ]
}

Recipients Reference

[
  {
    "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)

File Input Methods

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

Supported File Formats

Format Extension Auto-Convert to PDF
PDF .pdf No (already PDF)
Microsoft Word .docx ✅ Yes
Microsoft PowerPoint .pptx ✅ Yes

Common Workflow Patterns

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]

Compatibility

  • n8n 1.60.0 or later
  • Compatible with n8n Cloud (zero runtime dependencies)
  • Works with self-hosted n8n instances

Resources

Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.

Support

Proudly Built by TurboDocx "Proudly Sponsored by TurboDocx"

For issues or questions:

Related Packages

Package Description
@turbodocx/html-to-docx Convert HTML to Word documents

License

MIT