Prerequisites
- A DocuSign account where you are an administrator — creating an integration key and listing the account's users both require it
- An integration key for the environment ZLH connects to. ZLH uses DocuSign production (
account.docusign.com) by default; a self-hosted deployment can instead target the developer sandbox (account-d.docusign.com) by settingDOCUSIGN_ENVIRONMENT=demo. DocuSign issues integration keys in developer accounts; promote one to production through DocuSign's Go-Live process before connecting a production account - ZLH running with a reachable callback URL
Step 1: Create an Integration Key in DocuSign
- Sign in to DocuSign as an administrator (your developer account for the sandbox, or your production account after Go-Live)
- Open Settings > Integrations > Apps and Keys
- Click Add App and Integration Key and name it
ZombieLicenseHunter - Under Authentication, select Authorization Code Grant and click Add Secret Key. Copy the secret now — it is shown only once
- Under Additional settings > Redirect URIs, click Add URI and enter
{YOUR_ZLH_BASE_URL}/integrations/docusign/callback - Save. The Integration Key shown on the app is your Client ID
Step 2: ZLH-Side Values
- The Redirect URI must be exactly
{YOUR_ZLH_BASE_URL}/integrations/docusign/callback— protocol, host, port and path - Scopes requested:
signature user_read organization_read. DocuSign does not configure scopes on the integration key; the consent screen lists them for approval. Self-hosted deployments can override the list withDOCUSIGN_SCOPES - Environment:
DOCUSIGN_ENVIRONMENTunset orproductionconnects toaccount.docusign.com;democonnects toaccount-d.docusign.com. There is no environment selector in the UI, and a key from one environment does not work against the other - The Client ID and Client Secret are entered per integration in the UI, not in environment variables
Step 3: Connect via the ZLH UI
- In ZLH, navigate to Integrations > Add Integration
- Select DocuSign — there are no DocuSign-specific fields; the account is determined by the user who signs in
- Enter the Integration Key as the Client ID and the Secret Key as the Client Secret
- Click Connect — you are redirected to DocuSign to sign in
- Sign in as an administrator of the account and click Allow Access
- You are redirected back to ZLH with the integration active and a first sync queued
After consent, ZLH reads your DocuSign user profile, selects your default account and its API base URI, and syncs that account only. The email on the DocuSign user must be on the same domain as your ZLH login.
What Gets Synced
ZLH lists the users of the connected account through the eSignature Users API, 100 per page. For each user it captures:
- Email and the DocuSign user ID (used as the stable identifier)
- Status —
Active,ActivationRequiredandActivationSentare imported as active;ClosedandDisabledas inactive - Permission profile name (e.g.,
DocuSign Sender), stored as the license type - Creation date and last login
Users without an email address are skipped. Group membership and envelope data are not synced.
Troubleshooting
| Issue | Fix |
|---|---|
| DocuSign shows an error about the redirect URI instead of the sign-in page | The Redirect URI on the integration key does not match {YOUR_ZLH_BASE_URL}/integrations/docusign/callback exactly |
| "Authorization failed: ..." after DocuSign redirects back | The consent was declined. Retry and click Allow Access |
| "Failed to complete OAuth handshake. Please check your credentials and try again." | The Secret Key is wrong (it is shown once — add a new one under Authentication and re-enter it), or the integration key belongs to the other environment (sandbox key against production or vice versa), or the signed-in user has no DocuSign account |
| "Access denied: you can only connect accounts from your organization's domain" | The DocuSign user's email is on a different domain from your ZLH login. Reconnect with a user on your domain |
Sync fails with docusign: unexpected status 401 |
The refresh token expired or was revoked. Click Reconnect on the integration's card on the ZLH home page |
Sync fails with docusign: unexpected status 400 or 403 |
The user who authorized is not an administrator of the account, or lost that permission. Click Reconnect and sign in as an administrator |
| The wrong account was synced | ZLH uses the authorizing user's default account. Make the wanted account that user's default in DocuSign, or authorize with a user whose default it is, then click Reconnect |
| Users are missing | Users without an email are skipped. Closed and disabled users are imported as inactive, not dropped |