Skip to main content

Migrating Your Data from Docusign

Use this page if you are moving your signed envelopes into Propper. Docusign Connect sends envelope events to a webhook address that belongs to your organization, and Propper turns them into agreements — both the envelopes you have already signed and the ones you sign from here on.

Moving your integration code rather than your data? That is a different job — see Migrating Your Integration from Docusign.

Executive Summary

What: Keep your Docusign documents synced to Propper during (and after) migration.

How it works: Docusign notifies Propper whenever an envelope is signed, declined, or voided. Propper receives the notification and imports the envelope as an agreement.

Why use this: You get a complete record of all signatures in Propper without manual effort, and your existing Docusign workflows keep working during the transition.

Related Guides

Two routes your envelopes can travel

This is the single most important idea on the page, and getting it wrong is the most common reason a migration looks broken when nothing is wrong at all.

A Connect configuration receives events from the moment you save it. Envelopes signed after that arrive on their own, with nothing further for you to do. Envelopes signed before that are invisible to Connect until you explicitly republish them — and a great many customers configure Connect, wait, see nothing appear, and conclude the integration has failed.

RouteWhich envelopesWhat you do
OngoingSigned after the configuration existsNothing. They are delivered automatically.
HistoricalSigned before the configuration existedRepublish them deliberately — see Importing your historical envelopes

Both routes arrive at the same webhook address and are processed identically. They differ only in how the envelope gets there.

Republishing is safe to repeat

Propper recognises an envelope it has already imported and updates that agreement instead of creating a second one. If a batch comes up short, republish the range again.

Before you start

  1. Docusign administrator access — Connect is configured in Docusign Admin.
  2. Propper Sign admin permissions in your Propper organization.
  3. The Docusign Connect feature on your Docusign plan. Connect is not included on every plan, and enabling it is a request to your Docusign representative that can take a few days. Confirm this first — it blocks everything else.

It is also worth deciding up front what is actually moving. Templates, historical completed envelopes, live in-flight envelopes, and your API integration are four separate migrations, and whether you are cutting over completely or running both systems in parallel changes which of them matter.

Two settings you cannot change later

Data Format and Event Message Delivery Mode are permanent

On the Docusign configuration form, Data Format and Event Message Delivery Mode both carry the notice "This cannot be changed once the configuration is saved." This is not a warning Docusign is being cautious about — the fields are genuinely locked after the first save.

Set them to:

  • Data Format: REST v2.1 (JSON)
  • Event Message Delivery Mode: Send Individual Messages (SIM)

Choosing anything else means deleting the configuration and starting over. It also closes off the fastest route for importing your history, because Docusign's bulk republish API accepts only the SIM model.

The Docusign configuration form — the webhook address goes in URL to Publish, and the two permanent fields sit below it The configuration form in full — URL to Publish above, the two permanent fields below.

Data Format and Event Message Delivery Mode, both marked as unchangeable once saved Data Format and Event Message Delivery Mode — both permanent once saved.

Setting up Connect

Step 1 — In Propper: get your webhook address

From the Organization Dashboard, open the DocuSign Connect card. (You can also go straight to the settings page if you prefer a direct link.)

The Propper Organization Dashboard with the DocuSign Connect card highlighted Organization Dashboard → DocuSign Connect.

The page issues a webhook address unique to your organization. Copy it — you will paste it into Docusign in Step 3.

The DocuSign Connect settings page in Propper, showing the webhook address, the HMAC and Basic Auth switches, and the Auto-Import Envelopes toggle Propper → Organization Settings → External Import → DocuSign Connect.

Order of operations

This screen resets Auto-Import Envelopes to off whenever neither HMAC nor Basic Auth is configured. Configure a verification method and save first, then come back and enable Auto-Import — otherwise the toggle silently reverts and you will not notice until nothing imports.

Step 2 — In Docusign: create a Connect key

You need an HMAC key before you can ask Docusign to sign its webhooks, and the checkbox that turns signing on cannot be ticked until that key exists.

The Include HMAC Signature checkbox, greyed out because no Connect key exists yet Include HMAC Signature stays greyed out until a Connect key exists.

Create one in Docusign Admin under Connect → Connect Keys → Add Secret Key, then paste the value into Propper's HMAC Secret field.

The Connect Keys tab in Docusign Admin, with the Add Secret Key action Connect Keys → Add Secret Key.

HMAC works only on account-level configurations

The Connect Keys tab states it plainly: the HMAC settings apply to account-level configurations only. A user-level or envelope-level configuration cannot be HMAC-signed. Because we recommend HMAC, build this as an account-level configuration — which is what Step 3 does.

Step 3 — In Docusign: create the configuration

In Docusign Admin ↗, open Connect. It is its own item under the Integrations group in the sidebar — it is not filed under "Apps", which is not obvious.

Click Add Account Configuration, then choose Custom.

Docusign Admin → Connect → Add Account Configuration, with Custom and Custom Recipient in the menu Docusign Admin → Connect → Add Account Configuration → Custom.

Pick Custom, not Custom Recipient

The menu offers both. Custom is the sender webhook you want. Custom Recipient is a different, inbound configuration — choosing it produces no error and no events, so the mistake is silent.

On the form:

  1. Paste your Propper webhook address into URL to Publish (HTTPS is required).
  2. Set Data Format and Event Message Delivery Mode as described in Two settings you cannot change later — this is your only chance.
  3. Leave Enable Log on. It is how you diagnose a delivery that never arrives.
  4. Enable Require Acknowledgement.

Step 4 — Choose your events and payload contents

Event selection alongside the Include Data panel Event selection and the Include Data panel.

Envelope events (agreement-level status):

EventPurposeRequired?
Envelope SentTrack when envelopes are sent for signatureRecommended
Envelope DeliveredKnow when all recipients have received the envelopeRecommended
Envelope CompletedImport completed/signed documentsRequired
Envelope DeclinedTrack declined envelopesRecommended
Envelope VoidedTrack cancelled envelopesRecommended

Recipient events (recipient-level visibility):

EventPurpose
Recipient DeliveredTrack when each recipient receives the envelope
Recipient CompletedTrack when each recipient completes signing
Recipient DeclinedTrack when a specific recipient declines

For a migration, the terminal states are what matter: Envelope Completed, Declined and Voided, plus Recipient Completed and Declined.

Documents is not an optional extra

Propper stores your signed PDFs only when the payload actually carries the document bytes. If Documents is left unchecked in Include Data, your envelopes still import as agreements — with no signed PDFs attached. The import reports success either way, so this is a half-finished migration you will not discover until someone opens an agreement months later and finds it empty.

Tick Documents, and check the rest of the Include Data set while you are there.

OptionRecommendationNotes
Include Documents✅ RequiredWithout it, agreements import with no signed PDFs
Include Recipients✅ RecommendedRequired for recipient status tracking
Include Certificate of Completion✅ RecommendedStores Docusign's audit certificate alongside the record

Documents are Base64-encoded into the payload, so envelopes carrying them are large. If delivery times become a problem, send status-only events for Sent/Delivered/Declined/Voided and include documents only on Completed — the event that actually needs them.

Docusign can also notify you when envelopes are purged, deleted or discarded. Propper handles these by voiding the matching agreement — select them only if you want Docusign deletions mirrored into Propper, which is rarely what a migrating customer expects.

Step 5 — Turn on Auto-Import in Propper

Return to the Propper settings page and enable Auto-Import Envelopes. Any migration needs this on.

"Off" is not a lighter import — it imports nothing

The in-product description reads "When disabled, only status updates are synced." That is accurate, but easy to misread. "Status updates" means updates to agreements Propper already has. For historical envelopes with no counterpart in Propper, off means nothing is created at all — you get a record of the event and nothing else.

Auto-Import off is useful in exactly two situations: you send from Propper and mirror into Docusign, and only want statuses kept in step; or you want a deliberate observation period to confirm the plumbing before anything is created. Neither applies to a migration.

What you getAuto-Import ONAuto-Import OFF
Event recorded in Recent ActivityYesYes
Agreement createdYesNo
Recipients and signed documentsYesNo
Status sync of an agreement you haveYesYes — unaffected

Step 6 — Confirm the configuration is live

Back in Docusign Admin, your configuration now appears in the Connect list showing Active and a running failure count. That is the fastest check that your setup worked.

The saved Connect configuration showing Active status, a failure count, and the configuration ID The saved configuration shows Active, a failure count, and the configuration ID.

Note the configuration ID shown here. You will need it if you import your history via the CSV route.

Then send a test envelope end to end:

  1. Send an envelope in Docusign and complete the signing.
  2. In Propper, open Organization → DocuSign Connect → Recent Activity.
  3. Confirm the event arrived with a Completed status, and that the agreement was created with its document attached.

Security configuration

Docusign signs each webhook payload with a key you generate, and Propper verifies that signature before processing anything.

  1. Create the key in Docusign Admin under Connect → Connect Keys → Add Secret Key (Step 2 above).
  2. Copy the generated key.
  3. Paste it into Propper's HMAC Secret field and save.
  4. On the Docusign configuration, tick Include HMAC Signature — which is now available.

Remember that HMAC applies to account-level configurations only.

Common failures:

IssueSolution
Secret mismatchEnsure an exact match — check for trailing whitespace
Wrong validation methodValidate against raw request body bytes, before any JSON parsing
Wrong secretThe signature header is X-DocuSign-Signature-1. HTTP header names are case-insensitive, so casing is never the cause — re-check the secret
Multiple signaturesDocusign may send several signature headers — validate against at least one

Docusign uses HMAC-SHA256, computed over the exact raw bytes of the request body rather than the parsed JSON. Make sure nothing modifies the body before verification.

Configure one of them — the address is not a secret

Your webhook address identifies your organization, but it is not a credential.

A request carrying neither an HMAC signature nor an Authorization header is rejected and recorded rather than processed. But on a configuration saved with no verification method, the check is presence-only — a request carrying any arbitrary Authorization value is processed as though it were genuine. Configure HMAC or Basic Auth so the credential is actually verified.

Importing your historical envelopes

Everything signed before your configuration existed has to be republished deliberately. This is the actual data migration, and it is the step most customers do not know exists.

In Docusign Admin, open Connect → Publish.

The Publish tab in Docusign Admin, with the Date Range filter open on Custom Connect → Publish, with the Date Range filter open on Custom.

The page looks empty when you arrive — that is the filter, not a fault

Date Range defaults to Last 24 Hours. So a customer opening this tab to migrate five years of history sees "No results. No envelopes to display." and reasonably concludes the integration is broken.

Nothing is broken. Open Date Range → Custom, set From to a date before your earliest envelope and To to today, and click Apply.

The straightforward path

  1. Set the date range. Date Range → Custom → From a date before your oldest envelope → To today → Apply.
  2. Check the Status filter. It has its own default, covering a particular set of sent / delivered / completed states. Confirm it covers what you are actually migrating rather than assuming it does.
  3. Select All, then Publish, and choose the configuration you created in Step 3.

The CSV round trip

Between the simple UI publish and the API there is a middle option that most customers actually want.

Download CSV exports the filtered envelope list. Publish Using CSV takes it back. Use it when the selection needs reviewing, editing, or splitting into batches.

No separate report export is needed. The envelope list the CSV route wants comes from Download CSV on this same page, against whatever filter you have applied. An account-level export carries two columns: the envelope ID and the configuration ID from Step 6.

Choosing a route

RouteBest forLimits
Filter → Select All → PublishThe normal migration, and your first smoke testPractical UI limits
Publish Using CSVReviewed, edited or batched selections~9,999 envelopes/hour at account level; ~19,999/hour at organization level
Envelope Publish API ↗Scripted or repeatable migrationsJSON SIM model only

Stage it, then verify

Publish a small filtered batch first and confirm the agreements land with their documents attached. Only then run the full range.

To check completeness afterwards, Recent Activity carries one row per received event with its processing status, so counting completed rows against your expected envelope count is the fastest check. If you are short, republish the missing range — repeating a republish is safe.

Monitoring and troubleshooting

View webhook activity

Open your DocuSign Connect page →

See incoming webhooks, their processing status, and detailed payloads.

Delivery vs processing

Understanding the difference is critical for troubleshooting:

TermMeaning
Delivery success (HTTP 200)Propper received and accepted the webhook for processing
Processing successThe agreement was updated and/or documents were imported

Propper returns HTTP 200 once the event is accepted, even if the later processing fails. This follows Docusign's recommended async pattern ↗ and prevents duplicate deliveries. If processing fails, check the log entry for the error and contact support — Docusign will not retry, because we returned 200.

Reading the activity log

From the settings page, scroll to Recent Activity and click any row for full detail including the raw payload.

FieldDescription
Envelope IDDocusign envelope identifier
Event TypeWhat triggered the webhook
StatusProcessing result (Completed, Failed, Rejected)
HMAC VerifiedWhether signature verification passed
Agreement IDLinked Propper agreement (if matched/created)
Received AtWhen the webhook arrived

Envelope status mapping

Agreement status in Propper follows the Docusign envelope status, not recipient status:

Docusign Envelope StatusPropper Agreement Status
createdCREATED
sentSENT
deliveredDELIVERED
completedCOMPLETED
declinedDECLINED
voidedVOIDED

Recipient events track individual recipient progress and are stored separately — they give you granular visibility but do not change the agreement's final status.

Docusign retry behavior

With Require Acknowledgement enabled, Docusign waits up to ~100 seconds for an HTTP 200 before treating a delivery as failed, retries with exponential backoff, and logs every attempt in Docusign Admin → Connect → Logs.

Common issues

Nothing is arriving at all

CheckAction
Is this historical data?Envelopes signed before the configuration existed never arrive on their own — republish them
Configuration statusEnsure it shows Active in Docusign Admin ↗
Address matchConfirm the URL in Docusign matches the one on your settings page exactly
Docusign logsView delivery attempts in Docusign Admin → Connect → Logs
Response timeVery large payloads can exceed the 100-second window

Agreements appear, but with no documents

CheckAction
Include DocumentsMust be ticked in Docusign Connect — this is the usual cause
Auto-ImportMust be enabled in Propper settings
StorageConfirm your organization has available storage

Events arrive but nothing is created

CheckAction
Auto-ImportIf off, events are recorded but no agreements are created
Verification methodAuto-Import reverts to off if neither HMAC nor Basic Auth is saved

HMAC verification failing

CheckAction
Secret mismatchCopy and paste it fresh — check for whitespace
Validation methodMust validate raw bytes, not parsed JSON
Wrong secretHeader names are case-insensitive, so casing is never the cause — re-check the secret

Migration playbook

Phase 1: Setup

  • Confirm Connect is enabled on your Docusign plan
  • Create the Connect key and configure a verification method in Propper
  • Create the account-level Connect configuration in Docusign, with the permanent fields set correctly
  • Enable Auto-Import
  • Test with a single envelope, end to end, and confirm its document attached

Phase 2: Historical import

  • Set the Publish date range to cover your full history
  • Publish a small batch first and verify it
  • Publish the remainder, in date-range batches
  • Watch Recent Activity for failures

Phase 3: Verification

  • Sample 5–10% of imported agreements
  • Verify documents are attached correctly
  • Confirm status mapping is accurate

Phase 4: Cutover

  • Begin creating new agreements in Propper Sign
  • Keep Docusign Connect active for any remaining Docusign envelopes
  • Monitor both systems during the transition

API reference

Webhook endpoint

Your organization's webhook address is displayed on the DocuSign Connect settings page.

Headers:

HeaderDescription
X-DocuSign-Signature-1HMAC-SHA256 signature (if configured)
AuthorizationBasic auth credentials (if configured)
Content-Typeapplication/json

Response. Events are accepted and processed in the background, so the reply confirms receipt rather than the outcome of the import:

{
"received": true,
"requestId": "uuid",
"success": true,
"queued": true,
"logId": "uuid",
"queueMessageId": "string"
}
FieldDescription
receivedAlways true if the webhook was accepted
successWhether the event was accepted for processing
queuedtrue when the event was handed off for background processing
logIdID of the log entry — use it to check the processing status afterwards
queueMessageIdIdentifier for the queued event
Do not wait on the import result in this response

Because the event is processed after the reply is sent, this response cannot tell you whether an agreement was created. Fields describing the imported agreement are absent whenever the event was queued, so a caller that branches on them will always take the "missing" path. Check the outcome in Recent Activity using logId instead.

Next Steps

Propper Documentation

Docusign Documentation ↗