A guest post published on the n8n blog as part of the Verified Node Spotlight by Nicolas Fry, CEO of TurboDocx, describes a scenario where the deal is closed and the contract is ready, but it sits in an email inbox for three days waiting for an approval to send, and once signed, the PDF file ends up in a Downloads folder instead of the shared drive. According to Fry, n8n is already capable of pulling deal data, generating the document, routing it for approval, and filing it, but until now, it lacked a native node for the signature step itself. Because of this, automated workflows stopped at that point and required manual handling to finish the process. The guide presents a workflow that closes this gap using the verified TurboDocx node. In this workflow, a row in Excel marked with the status "Ready to send" is converted into a generated contract, a manager approves sending it in Slack, the document is sent out for signature, and when the client signs, the executed PDF file is filed in SharePoint and the row in the table updates automatically.
Workflow Structure: Sending and Filing
According to the guide, the canvas in n8n is divided into two main parts that operate separately:
Part A (Send): This part runs every 15 minutes. A Schedule Trigger node starts the run. Next, a Microsoft Excel node reads the contract table and filters only rows marked with the status "Ready to send." A Loop Over Items node handles each contract individually. In the next step, a TurboDocx node generates the agreement from a template and converts it into a PDF file. A Slack node posts a message with "Approve & send" or "Reject" buttons in the dedicated channel and waits for a response. An If node branches based on the decision: approved contracts are sent for signature using TurboDocx, the Excel row is marked as "Sent" or "Rejected," and an update message is sent to the team in Slack.
Part B (File): This part runs when someone signs the document. A TurboDocx Trigger fires on the signature event and downloads the executed PDF file. A Microsoft SharePoint node uploads the file directly to the organization's contracts folder, the Excel row is marked as "Signed," and Slack posts an update message to the team announcing the completion of the signing.
Fry details the division of roles between the systems: n8n handles the schedule, the loop, the branching, and moving data between Excel, Slack, and SharePoint. In contrast, TurboDocx handles the two steps that n8n does not perform natively: turning a Word template into a finished contract, and collecting a legally binding electronic signature.
Prerequisites for Setting Up the Workflow
To set up the workflow, the guide outlines several prerequisites:
- An n8n instance: Cloud instance or self-hosted installation.
- The TurboDocx node: Direct installation from the Node panel inside n8n or by importing the workflow template.
- A TurboDocx account: The free tier includes generating 5 documents and collecting 5 signatures per month, an amount sufficient for building and testing. In addition, the article mentions TurboQuote, the company's CPQ tool that integrates pricing and quotes into the same document and signature engine.
- A Microsoft 365 account including Excel and SharePoint, with credentials configured in n8n.
- A Slack workspace with a designated approvals channel, such as #contract-approvals.
Workflow Implementation Steps in n8n
Step 1: Setting up the contract queue in Excel. Each row in the table represents a single contract, and the Status column serves as the task queue. The workflow locates rows with the status "Ready to send" and updates the state as the contract progresses. A table should be created in an Excel file stored in SharePoint or OneDrive with the following columns: Status (which transitions from "Ready to send" to "Sent" or "Rejected," and finally "Signed"), client details (Client Name, Company, Email), Amount and Start Date fields, as well as Document ID and Signed At, which are populated automatically by the workflow. In the Microsoft Excel node, configure a Lookup operation by the Status column with the value "Ready to send" and enable the Return All Matches option. The article emphasizes that Excel can be swapped with any other system that has a matching node in n8n capable of reading and updating records, such as CRM systems (such as Salesforce, HubSpot, Pipedrive, or Zoho CRM), databases and spreadsheets (Google Sheets, Airtable, Postgres, or n8n Data Table), or task management tools (monday.com or ClickUp). When using a CRM system, the 15-minute schedule can also be skipped to trigger the workflow immediately upon moving a deal to the Closed Won stage. Similarly, Slack can be replaced with Microsoft Teams, and SharePoint can be replaced with Google Drive, Dropbox, or OneDrive.
Step 2: Preparing the contract template. Work begins from a regular Word (.docx) file approved by legal personnel. The variable sections are replaced with merge variables such as {clientName}, {amount}, and {startDate}. Additionally, two anchors are defined for the signature: {client_sig} to mark where the client's signature goes, and {client_date} to mark where the signing date is stamped. The file is then uploaded to TurboDocx and the template ID is copied. The legal clauses remain fixed, and only the blank fields update.
Step 3: Generating the contract. In the Generate Agreement Docx node in n8n, enter the connection credentials and paste the template ID. Next, map each variable to its corresponding column in Excel (for example, clientName to the Client Name column). A test run generates a formatted contract matching the template within a few seconds.
Step 4: Approval in Slack. The Slack node uses the Send and Wait for Response option to post the contract details to the approvals channel with "Approve & send" and "Reject" buttons, waiting for a response. The message is configured to show the approver the client name, contract value, and a link to the document. The If node branches the flow: approval passes the contract to signature, whereas rejection marks the row in Excel as "Rejected" and sends an update to the team.
Step 5: Sending for electronic signature. The approved contract is passed to the Send Agreement for E-Signature node (TurboSign: Send Signature). Signer name and email details are mapped from the Excel row. The system places the signature and date fields precisely at the anchor positions pre-defined in the template. The signer receives an email notification and can sign from any device, while the row in Excel simultaneously updates to "Sent."
Step 6: Filing the signed contract in SharePoint. Part B begins with the TurboDocx Trigger node, whose webhook is registered automatically when the workflow is activated. In the Microsoft SharePoint node, select the site and destination folder. Upon signature completion, the PDF file is uploaded to the folder, the row in Excel is marked as "Signed," and Slack sends a message on the completion of the process.
End-to-End Testing and Troubleshooting
Before applying the workflow with clients, the guide recommends performing a full run for self-testing: activate the workflow, add a row in Excel with a personal email in "Ready to send" status, approve in Slack, sign from the inbox, and verify that the PDF file arrived in SharePoint and the row was marked as "Signed."
Additionally, the guide lists five troubleshooting scenarios and their solutions:
- Signed contracts are not filed: Ensure the workflow is activated, as the signature webhook registers only upon activation.
- Rows are not picked up from Excel: The status filter requires an exact text match, so verify there are no typos or extra spaces in the "Ready to send" value.
- No message appears in Slack: Ensure the Slack app has been added to the approvals channel.
- Signature is placed in the wrong location: Verify the exact spelling of the anchors in the Word template ({client_sig} and {client_date}).
- HTTPS callback URL error on a self-hosted instance: The signature trigger requires a public HTTPS address. While n8n Cloud includes this by default, on a self-hosted instance the system must be placed behind an HTTPS address (or tunnel) and the WEBHOOK_URL environment variable must be set.
Advantages, Limitations, and Future Directions
The article highlights three key advantages of this structure: legal wording is protected from changes because clauses are managed in the original template; no contract is sent without human approval in Slack; and no signed document is lost because it is filed in a central SharePoint folder.
Alongside this, the guide notes that in its current published version, the workflow is designed for a single signer and does not support redlines or back-and-forth negotiation. Contracts requiring changes must be updated in the template before being re-marked as "Ready to send."
Finally, several options for future workflow expansion are suggested: triggering based on deal stage changes in a CRM instead of a fixed schedule, integrating OpenAI or Anthropic AI nodes to draft business overviews from call summaries prior to document generation, routing contracts to different approvers based on financial value, and using the same signature step for sales quotes while referencing the CPQ quote template.