@memberjunction/esignature-pandadoc
v5.42.0
Published
PandaDoc driver for the MemberJunction eSignature primitive. Registers a BaseSignatureProvider implementation via @RegisterClass(BaseSignatureProvider, 'PandaDoc') using the PandaDoc public v1 REST API and API-key authentication.
Maintainers
Keywords
Readme
← Back to eSignature Overview · Core Primitive
@memberjunction/esignature-pandadoc
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-pandadocYou 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.
At a glance
| | |
|---|---|
| Driver key | PandaDoc |
| Registration | @RegisterClass(BaseSignatureProvider, 'PandaDoc') |
| Authentication | API key (Authorization: API-Key …) |
| API | PandaDoc public REST API v1 |
| Webhooks | HMAC-verified |
Supported operations
| Operation | Supported | |---|:---:| | Create envelope | ✅ | | Get status | ✅ | | Download signed | ✅ | | Void | ✅ | | Parse webhook event | ✅ | | Verify webhook signature | ✅ | | Templates | — | | Embedded signing | — |
A note on document readiness
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:#fffConfiguration
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. |
One-time setup
- In PandaDoc, generate an API key (Settings → API).
- In MemberJunction:
- The PandaDoc Signature Provider row is already seeded.
- Create a Credential holding
apiKey. - Create a Signature Account pointing at that credential.
- (Production) Configure a PandaDoc webhook pointing at
POST {your-server}/esignature/webhook/PandaDoc, and store its HMAC secret asconnectHmacKey.
Status mapping
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 |
Webhooks
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.
Testing
cd packages/eSignature/Providers/PandaDoc && npm run testRelated
| | | |---|---| | eSignature overview | The whole subsystem. | | Core primitive | The contract, engine, and data model this driver plugs into. | | DocuSign driver · Dropbox Sign driver | Sibling providers. |
