← Back to eSignature Overview · Core Primitive
The PandaDoc driver for the MemberJunction eSignature subsystem. It implements the BaseSignatureProvider contract against the PandaDoc public REST API v1, using simple API-key authentication.
npm install @memberjunction/esignature-pandadoc
You don't call this package directly. You configure a PandaDoc Signature Account and use the
SignatureEngine(or the no-code Actions). The engine resolves and drives this provider for you.
| Driver key | PandaDoc |
| Registration | @RegisterClass(BaseSignatureProvider, 'PandaDoc') |
| Authentication | API key (Authorization: API-Key …) |
| API | PandaDoc public REST API v1 |
| Webhooks | HMAC-verified |
| Operation | Supported |
|---|---|
| Create envelope | ✅ |
| Get status | ✅ |
| Download signed | ✅ |
| Void | ✅ |
| Parse webhook event | ✅ |
| Verify webhook signature | ✅ |
| Templates | — |
| Embedded signing | — |
PandaDoc processes an uploaded document asynchronously — a freshly created document isn't immediately in a sendable draft state. The driver handles this for you: after creating a document it polls until the document reaches draft, then sends it. The poll interval is tunable via readinessIntervalMs (default 1500 ms).
flowchart LR
Create["Create document"] --> Poll{"draft yet?"}
Poll -->|no| Wait["wait readinessIntervalMs"]
Wait --> Poll
Poll -->|yes| Send["Send for signature"]
style Send fill:#2d8659,stroke:#1a5c3a,color:#fff
These values live in the account's Credential (encrypted via the Credential Engine) — never in code or environment variables.
| Key | Required | Default | Description |
|---|---|---|---|
apiKey |
✅ | — | PandaDoc API key, sent as Authorization: API-Key <key>. |
restBase |
— | https://api.pandadoc.com/public/v1 |
REST API base. |
connectHmacKey |
— | — | HMAC secret for verifying inbound webhooks. Set this in production. |
readinessIntervalMs |
— | 1500 |
Poll interval (ms) while waiting for an uploaded document to reach draft. |
apiKey.POST {your-server}/esignature/webhook/PandaDoc, and store its HMAC secret as connectHmacKey.PandaDoc's native document statuses map onto MemberJunction's normalized lifecycle:
| PandaDoc status | MJ EnvelopeStatus |
|---|---|
document.uploaded, document.draft |
Draft |
document.sent, document.waiting_approval, document.approved, document.waiting_pay |
Sent |
document.viewed |
Delivered |
document.completed, document.paid |
Completed |
document.declined |
Declined |
document.voided, document.cancelled |
Voided |
PandaDoc pushes events to POST /esignature/webhook/PandaDoc. The driver verifies the HMAC signature (from the signature query parameter or x-pandadoc-signature header) over the raw request body using your connectHmacKey. See the webhook flow.
cd packages/eSignature/Providers/PandaDoc && npm run test
| eSignature overview | The whole subsystem. |
| Core primitive | The contract, engine, and data model this driver plugs into. |
| DocuSign driver · Dropbox Sign driver | Sibling providers. |