Back to Play 5 Resources
Play 5: Client Onboarding

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

to trigger an n8n workflow the moment a signature is complete.

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 > API
    and Keys)

n8n Requirements:

  • A running n8n instance with HTTPS enabled (webhooks
    require SSL)
  • Your n8n webhook
    URL (format: 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
URL

Open your n8n workflow and add a Webhook

node as the first trigger.

  1. Click the Webhook
    node to open settings
  2. Set HTTP Method to POST
  3. Set Path to something descriptive: docusign-envelope-complete
  4. Set Response Mode to Last Node
  5. Copy the full webhook
    URL displayed (example: 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

path that bypasses auth for this specific endpoint, or use DocuSign's custom headers to pass credentials.

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

URL from Step 1

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

call.

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:

  1. Scroll to Custom Headers
  2. Click Add Custom Header
  3. Header Name: Authorization
  4. Header Value: Bearer [your-n8n-api-key] or Basic [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
Response

Return to your n8n workflow.

In the Webhook

node settings:

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

listener.

Step 4: Parse the DocuSign Payload

Add a Set node immediately after the Webhook

node to extract key data.

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:

  1. Upload a sample document
  2. Add yourself as the signer
  3. Use a test email address you control
  4. Send the envelope
  5. Sign the document immediately

Switch to n8n and check the Webhook

node's execution log. You should see:

  • 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 webhook
    URL exactly correct (no trailing slashes)?
  • 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:

  1. HTTP Request node to download the signed PDF from document_url
  2. Google Drive or Dropbox node to store the signed document in your client folder
  3. Airtable or PostgreSQL node to update the client record with status "Onboarding Complete"
  4. Gmail or SendGrid node to send a welcome email to the client
  5. 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 = Complete
  • Engagement Letter Signed Date = {{ $node["Set"].json["completed_date"] }}
  • DocuSign Envelope ID = {{ $node["Set"].json["envelope_id"] }}

Troubleshooting Common Issues

Webhook

receives no data:

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
  • Webhook
    URL contains typos

Webhook

receives data but workflow fails:

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

calls for one envelope:

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

payloads with HMAC-SHA256. To enable:

  1. In Connect configuration, scroll to HMAC Settings
  2. Toggle Include HMAC Signature to ON
  3. Copy the generated secret key
  4. In n8n, add a Function node after the Webhook
    node to verify the signature:
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

calls.

Next Steps

Once this webhook

is stable, extend it to handle:

  • 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

for other document types.

Revenue Institute

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.

RevenueInstitute.com