E-Signature Webhook Setup Guide (DocuSign)
Configuring DocuSign completion webhook to trigger n8n.
E-Signature Webhook Setup Guide (DocuSign)
When a client signs your engagement letter in DocuSign, your practice management system should update automatically. No manual data entry. No checking your inbox for completion emails. This guide shows you how to configure DocuSign's Connect webhook
This setup takes 15-20 minutes and requires admin access to both DocuSign and your n8n instance.
What You Need Before Starting
DocuSign Requirements:
- Admin or Account Admin role in your DocuSign account
- Access to Settings > Integrations > Connect (available on Business Pro and Enterprise plans)
- Your DocuSign Account ID (found under Settings > APIand Keys)APIClick to read the full definition in our AI & Automation Glossary.
n8n Requirements:
- A running n8n instance with HTTPS enabled (webhooksrequire SSL)webhooksClick to read the full definition in our AI & Automation Glossary.
- Your n8n webhookURL (format:webhookClick to read the full definition in our AI & Automation Glossary.
https://your-n8n-domain.com/webhook/[webhook-path]) - Basic authentication credentials if your n8n instance requires them
Test Document:
- A sample engagement letter or NDA template in DocuSign for testing
Step 1: Generate Your n8n Webhook WebhookClick to read the full definition in our AI & Automation Glossary. URL
Open your n8n workflow and add a Webhook
- Click the Webhooknode to open settingsWebhookClick to read the full definition in our AI & Automation Glossary.
- Set HTTP Method to
POST - Set Path to something descriptive:
docusign-envelope-complete - Set Response Mode to
Last Node - Copy the full webhookURL displayed (example:webhookClick to read the full definition in our AI & Automation Glossary.
https://n8n.yourfirm.com/webhook/docusign-envelope-complete)
Leave this tab open. You'll need this URL in the next step.
Security Note: If your n8n instance sits behind authentication, create a separate webhook
Step 2: Create the DocuSign Connect Configuration
Log into DocuSign and navigate to Settings > Integrations > Connect.
Click Add Configuration and select Custom.
Basic Configuration
Name: n8n Client Onboarding Trigger
URL to Publish: Paste your n8n webhook
Enable Log: Toggle ON (critical for troubleshooting)
Require Acknowledgement: Toggle OFF (unless you're implementing retry logic in n8n)
Include Certificate of Completion: Toggle ON if you need the signed PDF URL in your workflow
Trigger Events
Under Envelope Events, select only:
- Envelope Completed
Do not select "Envelope Sent" or "Envelope Delivered" unless you need those triggers. Each event fires a separate webhook
Under Recipient Events, leave everything unchecked unless you need granular tracking of individual signer actions.
Message Format
Include Data: Select Include Envelope Data
Include Documents: Select Include Certificate of Completion (this provides the signed document URL)
Include Time Zone: Toggle ON
Include Sender Account as Custom Field: Toggle OFF (not needed for most workflows)
Authentication (Optional but Recommended)
If your n8n instance requires authentication:
- Scroll to Custom Headers
- Click Add Custom Header
- Header Name:
Authorization - Header Value:
Bearer [your-n8n-api-key]orBasic [base64-encoded-credentials]
Save and Activate
Click Save at the bottom.
Toggle the configuration to Active using the switch next to the configuration name.
Step 3: Configure the n8n Webhook WebhookClick to read the full definition in our AI & Automation Glossary. Response
Return to your n8n workflow.
In the Webhook
Response Code: 200
Response Data: Select First Entry JSON
Response Headers: Leave empty unless DocuSign requires specific headers (they don't by default)
Click Execute Node to activate the webhook
Step 4: Parse the DocuSign Payload
Add a Set node immediately after the Webhook
DocuSign sends XML by default. Add a XML node before the Set node:
Mode: XML to JSON
Property Name: body.data
Now add your Set node with these mappings:
envelope_id = `{{ $json.DocuSignEnvelopesInformation.EnvelopeStatus[0].EnvelopeID[0] }}`
status = `{{ $json.DocuSignEnvelopesInformation.EnvelopeStatus[0].Status[0] }}`
client_email = `{{ $json.DocuSignEnvelopesInformation.EnvelopeStatus[0].RecipientStatuses[0].RecipientStatus[0].Email[0] }}`
client_name = `{{ $json.DocuSignEnvelopesInformation.EnvelopeStatus[0].RecipientStatuses[0].RecipientStatus[0].UserName[0] }}`
completed_date = `{{ $json.DocuSignEnvelopesInformation.EnvelopeStatus[0].Completed[0] }}`
document_url = `{{ $json.DocuSignEnvelopesInformation.EnvelopeStatus[0].DocumentStatuses[0].DocumentStatus[0].DocumentURL[0] }}`
These paths assume a single signer. For multiple signers, you'll need to loop through the RecipientStatus array.
Step 5: Test the Integration
Send a test envelope in DocuSign:
- Upload a sample document
- Add yourself as the signer
- Use a test email address you control
- Send the envelope
- Sign the document immediately
Switch to n8n and check the Webhook
- A POST request received
- Status 200 returned
- The full XML payload in the output
If you see nothing, check:
- Is the Connect configuration toggled to Active?
- Is the webhookURL exactly correct (no trailing slashes)?webhookClick to read the full definition in our AI & Automation Glossary.
- Is your n8n instance accessible from the public internet?
- Check DocuSign's Connect logs (Settings > Integrations > Connect > Logs)
Step 6: Build Your Downstream Workflow
After the Set node, add nodes to handle the signed document:
Common Next Steps:
- HTTP Request node to download the signed PDF from
document_url - Google Drive or Dropbox node to store the signed document in your client folder
- Airtable or PostgreSQL node to update the client record with status "Onboarding Complete"
- Gmail or SendGrid node to send a welcome email to the client
- Slack node to notify your team that onboarding is complete
Example: Update Airtable Record
Add an Airtable node after the Set node:
Operation: Update
Base: Your client database base ID
Table: Clients
Record ID: Use a lookup based on client_email from the Set node
Fields to Update:
Onboarding Status=CompleteEngagement Letter Signed Date={{ $node["Set"].json["completed_date"] }}DocuSign Envelope ID={{ $node["Set"].json["envelope_id"] }}
Troubleshooting Common Issues
Webhook
Check DocuSign Connect Logs (Settings > Integrations > Connect > Logs). Look for failed delivery attempts. Common causes:
- n8n instance not publicly accessible
- SSL certificate invalid or expired
- WebhookURL contains typosWebhookClick to read the full definition in our AI & Automation Glossary.
Webhook
Enable n8n's execution logging. Check the XML parsing step. DocuSign's XML structure varies slightly based on account settings. Use the XML node's output to verify the exact path to each field.
Multiple webhook
You've selected too many trigger events. Edit your Connect configuration and uncheck everything except "Envelope Completed".
Document URL returns 403 error:
The URL expires after 15 minutes. Download and store the PDF immediately in your workflow. Don't rely on the URL for later retrieval.
Security Hardening
Add HMAC Verification (Advanced):
DocuSign can sign webhook
- In Connect configuration, scroll to HMAC Settings
- Toggle Include HMAC Signature to ON
- Copy the generated secret key
- In n8n, add a Function node after the Webhooknode to verify the signature:WebhookClick to read the full definition in our AI & Automation Glossary.
const crypto = require('crypto');
const secret = 'YOUR_DOCUSIGN_HMAC_SECRET';
const signature = $node["Webhook"].json["headers"]["x-docusign-signature-1"];
const payload = JSON.stringify($node["Webhook"].json["body"]);
const expectedSignature = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('base64');
if (signature !== expectedSignature) {
throw new Error('Invalid webhook signature');
}
return { json: { verified: true } };
This prevents unauthorized parties from triggering your workflow with fake webhook
Next Steps
Once this webhook
- Envelope voided events (trigger a follow-up task)
- Envelope declined events (alert your team)
- Multiple signer workflows (parse the RecipientStatus array)
Store your Connect configuration settings in a password manager. You'll need them when setting up additional webhooks

Reviewed by Revenue Institute
This guide is actively maintained and reviewed by the implementation experts at Revenue Institute. As the creators of The AI Workforce Playbook, we test and deploy these exact frameworks for professional services firms scaling without new headcount.
Revenue Institute
Need help turning this guide into reality? Revenue Institute builds and implements the AI workforce for professional services firms.