npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@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.

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-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.


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:#fff

Configuration

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

  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.

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 test

Related

| | | |---|---| | eSignature overview | The whole subsystem. | | Core primitive | The contract, engine, and data model this driver plugs into. | | DocuSign driver · Dropbox Sign driver | Sibling providers. |