> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt

# Linking DocuSign as a source - Docs

Copy page

# Linking DocuSign as a source - Docs

![](https://res.cloudinary.com/dmukukwp6/image/upload/texture_tan_9608fcca70)

![](https://res.cloudinary.com/dmukukwp6/image/upload/texture_tan_dark_a92b0e022d)

Let AI connect your sources for you

Skip the manual setup — run this in your project and the wizard auto-detects your databases and APIs and connects them to PostHog.

`npx @posthog/wizard warehouse`

[Learn more](/wizard.md)

![PostHog Wizard hedgehog](https://res.cloudinary.com/dmukukwp6/image/upload/wizard_3f8bb7a240.png)

![](https://res.cloudinary.com/dmukukwp6/image/upload/wizard_3f8bb7a240.png)Let AI connect your sources for you

**Alpha release**

This source is currently in **alpha**. The interface and available tables may change.

The DocuSign connector syncs your e-signature data — envelopes, recipients, documents, templates, users, and folders — into the PostHog data warehouse. This lets you analyze contract and sales cycle activity alongside your product data.

## Prerequisites

You need a DocuSign account and an integration key created in [DocuSign Apps and Keys](https://apps.docusign.com/admin/apps-and-keys).

For **JWT grant** authentication (recommended), you also need to:

1.  Add an RSA key pair to your integration key.
2.  Grant one-time consent for the user you want to impersonate.

> **Note:** Production integration keys must pass [DocuSign's go-live review](https://developers.docusign.com/docs/esign-rest-api/go-live/) before they work outside the demo environment.

## Adding a data source

1.  In PostHog, go to the [Sources tab](https://app.posthog.com/data-management/sources) of the data pipeline section.
2.  Click **\+ New source** and click **Link** next to this source.
3.  Enter your credentials (see [Configuration](#configuration) below) and click **Next**.
4.  Select the tables you want to sync, choose a sync method and frequency, then click **Import**.

Once the syncs are complete, you can start querying this data in PostHog.

When linking DocuSign, you'll need to configure:

-   **Environment** – select **Production** for live accounts or **Demo (sandbox)** for testing. Production keys require go-live approval from DocuSign.

-   **Authentication type** – choose one of the following:

### JWT grant (recommended)

-   **Integration key** – your app's UUID from DocuSign Apps and Keys.
-   **Impersonated user ID** – the API user ID (UUID) of the user to impersonate. Find this under **Apps and Keys → My Account Information**.
-   **RSA private key** – the full PEM key including the `-----BEGIN RSA PRIVATE KEY-----` and `-----END RSA PRIVATE KEY-----` lines.

### Refresh token

-   **Integration key** – your app's UUID from DocuSign Apps and Keys.
-   **Secret key** – your app's secret key.
-   **Refresh token** – a valid refresh token obtained through DocuSign's OAuth flow.

### Optional fields

-   **Account ID** – leave blank to use your default account. Only needed if the impersonated user has access to multiple DocuSign accounts and you want to sync a non-default one.
-   **Start date** – how far back to sync. Defaults to the last 2 years. Use ISO 8601 format, e.g. `2023-01-01T00:00:00Z`.

## Sync modes

Each table can be synced in one of several modes, depending on what the source supports:

-   **Webhook** (when available) – the source pushes changes to PostHog in real time. Fastest freshness, lowest ongoing cost, and the only mode that reliably captures updates and deletes.
-   **Incremental** – only new or updated rows are synced on each run, using a cursor field (such as an `updated_at` timestamp). Cheaper than a full refresh, but deletes aren't captured.
-   **Append only** – new rows are appended using a cursor field; existing rows are never updated. Ideal for immutable, append-only tables like event logs.
-   **Full refresh** – the whole table is reloaded on every sync. Use it when a table has no reliable cursor or when you need deletions reflected.

See [sync methods](/docs/cdp/sources.md#sync-methods) for a full explanation of how each mode works and how to choose between them.

Envelope-based tables (`envelopes`, `envelope_recipients`, `envelope_documents`) and `templates` support incremental syncing. The `users` and `folders` tables always perform a full refresh since DocuSign does not support server-side date filtering for these resources.

Interrupted syncs resume from where they left off.

## Configuration

| Option | Type | Required |
| --- | --- | --- |
| Environment | select | Yes |
| Authentication type | select | Yes |
| Account ID | text | No |
| Start date | text | No |

## Supported tables

| Table | Description | Sync method | Incremental field | Primary key |
| --- | --- | --- | --- | --- |
| envelopes | Envelopes sent from the account — the container that holds the documents, recipients, and signing status for one agreement. | Incremental, Full refresh | statusChangedDateTime | — |
| envelope_recipients | One row per recipient on each envelope, flattened from the per-role recipient buckets (signers, carbon copies, agents, certified deliveries, and so on). | Incremental, Full refresh | envelopeStatusChangedDateTime | — |
| envelope_documents | Metadata for each document attached to an envelope. Document content itself is not synced. | Incremental, Full refresh | envelopeStatusChangedDateTime | — |
| templates | Reusable envelope templates defined on the account. | Incremental, Full refresh | lastModified | — |
| users | Users belonging to the DocuSign account. | Full refresh | — | — |
| folders | Folders used to organize envelopes and templates on the account. | Full refresh | — | — |

## Troubleshooting

### consent\_required

DocuSign needs one-time consent for the integration key. Grant consent for the impersonated user by visiting the consent URL for your app, then reconnect.

### invalid\_grant

DocuSign rejected the credentials. Check the integration key, the impersonated user ID, and that the key is authorized for the selected environment.

### unauthorized\_client

The integration key is not authorized for the selected environment. Production keys must pass DocuSign's go-live review before they work outside the demo environment.

### 401 Unauthorized

DocuSign authentication failed. Your credentials may have been revoked — reconnect with fresh credentials.

### 403 Forbidden

DocuSign denied access. Check that the impersonated user has permission to read the account's data.

If your sync is failing or data looks wrong, see the [Data warehouse troubleshooting guide](/docs/data-warehouse/troubleshooting.md). If that doesn't help, [contact support](https://us.posthog.com/#panel=support%3Asupport%3Adata_warehouse%3A%3Atrue) – we're happy to help.

### Was this page useful?

HelpfulCould be better