Member Junction
    Preparing search index...

    Module @memberjunction/esignature-pandadoc

    ← 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-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.
    1. In PandaDoc, generate an API key (Settings → API).
    2. In MemberJunction:
      • The PandaDoc Signature Provider row is already seeded.
      • Create a Credential holding apiKey.
      • Create a Signature Account pointing at that credential.
    3. (Production) Configure a PandaDoc webhook pointing at 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.

    Classes

    PandaDocSignatureProvider

    Functions

    mapPandaDocStatus