> 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 Canonical URL: https://posthog.com/docs/data-pipelines/sources/docusign > **Cloud region:** This page uses US Cloud hosts. For an EU Cloud project, use `https://eu.posthog.com` instead of `https://us.posthog.com` or `https://app.posthog.com` (app host for links). ## On this page - [Prerequisites](#prerequisites) - [Adding a data source](#adding-a-data-source) - [Sync modes](#sync-modes) - [Configuration](#configuration) - [Supported tables](#supported-tables) - [Troubleshooting](#troubleshooting) ![](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` ![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 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](https://posthog.com/docs/data-pipelines/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 | — | | `envelope_custom_fields` | One row per envelope custom field, the sender-defined text or list values DocuSign stores on an envelope but does not show to recipients. | Incremental, Full refresh | envelopeStatusChangedDateTime | — | | `envelope_form_data` | Field values (tab data) captured on each envelope the user sent, overall and per recipient. Needs the account's 'Allow sender to download form data' sending setting. | Incremental, Full refresh | envelopeStatusChangedDateTime | — | | `envelope_audit_events` | Audit trail of each envelope: one row per event, such as sent, viewed, signed, or voided. | Incremental, Full refresh | envelopeStatusChangedDateTime | — | | `envelope_templates` | Server templates applied to each envelope, to link envelopes back to the templates they came from. | 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 | — | — | | `bulk_send_batches` | Bulk send batches submitted on the account, with how many envelopes were sent, queued, or failed. | Full refresh | — | — | | `bulk_send_batch_envelopes` | Envelopes sent as part of each bulk send batch, one row per batch and envelope. | Full refresh | — | — | | `powerforms` | PowerForms on the account: self-service signing links that create an envelope from a template each time someone fills them in. | Full refresh | — | — | | `powerform_form_data` | Data each recipient entered into a PowerForm, one row per PowerForm, envelope, and recipient. | Full refresh | — | — | | `billing_invoices` | Invoices billed to the DocuSign 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](https://posthog.com/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.