LoopFour
IntegrationsDocuments

Dropbox Sign

E-signature solution for document signing and templates

Dropbox Sign

Connect to Dropbox Sign (formerly HelloSign) for electronic signatures and document management.

Overview

Dropbox Sign is a user-friendly e-signature platform. The integration supports:

  • Signature Requests - Send and manage signature requests
  • Templates - Use and manage reusable templates
  • Embedded Signing - In-app signing experiences
  • Teams - Team member management
  • Unclaimed Drafts - Create drafts for later claiming

Prerequisites

  • Dropbox Sign account (Free, Essentials, or Enterprise)
  • API access enabled
  • OAuth app or API key configured

Authentication

Dropbox Sign uses OAuth 2.0 for authentication via Nango.

curl "http://localhost:3000/api/v1/connections/dropbox-sign/auth-url" \
  -H "x-api-key: YOUR_API_KEY"

Available Actions

Signature Request Actions

getSignatureRequest

Get signature request by ID.

{
  "action": "dropbox-sign.getSignatureRequest",
  "config": {
    "signatureRequestId": "{{input.signatureRequestId}}"
  }
}

listSignatureRequests

List signature requests with filters.

{
  "action": "dropbox-sign.listSignatureRequests",
  "config": {
    "accountId": "{{input.accountId}}",
    "page": 1,
    "pageSize": 20,
    "query": "status:awaiting_signature"
  }
}

sendSignatureRequest

Send a new signature request.

{
  "id": "send-for-signature",
  "type": "action",
  "action": "dropbox-sign.sendSignatureRequest",
  "config": {
    "title": "Service Agreement - {{input.companyName}}",
    "subject": "Please sign the Service Agreement",
    "message": "Hi {{input.signerName}},\n\nPlease review and sign the attached agreement.",
    "signers": [
      {
        "email_address": "{{input.signerEmail}}",
        "name": "{{input.signerName}}",
        "order": 1
      },
      {
        "email_address": "{{input.witnessEmail}}",
        "name": "{{input.witnessName}}",
        "order": 2
      }
    ],
    "ccEmailAddresses": ["legal@company.com"],
    "fileUrls": ["{{input.documentUrl}}"],
    "metadata": {
      "deal_id": "{{input.dealId}}",
      "source": "workflow"
    },
    "signingOptions": {
      "default_type": "draw"
    },
    "testMode": false,
    "allowDecline": true,
    "allowReassign": true,
    "signingRedirectUrl": "https://yourapp.com/signed",
    "requestingRedirectUrl": "https://yourapp.com/requested"
  }
}

Parameters:

FieldTypeRequiredDescription
titlestringNoRequest title
subjectstringNoEmail subject
messagestringNoEmail message
signersarrayYesSigner details
signers[].email_addressstringYesSigner email
signers[].namestringYesSigner name
signers[].ordernumberNoSigning order
ccEmailAddressesarrayNoCC recipients
fileUrlsarrayYesDocument URLs
metadataobjectNoCustom metadata
signingOptionsobjectNoSigning type options
testModebooleanNoUse test mode
allowDeclinebooleanNoAllow recipients to decline
allowReassignbooleanNoAllow reassignment
expiresAtnumberNoExpiration timestamp

sendWithTemplate

Send signature request using a template.

{
  "id": "send-from-template",
  "type": "action",
  "action": "dropbox-sign.sendWithTemplate",
  "config": {
    "templateId": "{{input.templateId}}",
    "title": "NDA - {{input.companyName}}",
    "subject": "Please sign the Non-Disclosure Agreement",
    "message": "Please review and sign the NDA.",
    "signers": [
      {
        "role": "Client",
        "email_address": "{{input.clientEmail}}",
        "name": "{{input.clientName}}"
      },
      {
        "role": "Company Representative",
        "email_address": "{{input.repEmail}}",
        "name": "{{input.repName}}"
      }
    ],
    "ccs": [
      {
        "role": "Legal",
        "email_address": "legal@company.com"
      }
    ],
    "customFields": [
      {
        "name": "effective_date",
        "value": "{{input.effectiveDate}}"
      },
      {
        "name": "contract_value",
        "value": "{{input.contractValue}}"
      }
    ],
    "testMode": false
  }
}

sendReminder

Send reminder for pending signature.

{
  "action": "dropbox-sign.sendReminder",
  "config": {
    "signatureRequestId": "{{input.signatureRequestId}}",
    "emailAddress": "{{input.signerEmail}}",
    "name": "{{input.signerName}}"
  }
}

updateSignatureRequest

Update a signature request.

{
  "action": "dropbox-sign.updateSignatureRequest",
  "config": {
    "signatureRequestId": "{{input.signatureRequestId}}",
    "signatureId": "{{input.signatureId}}",
    "emailAddress": "{{input.newEmail}}",
    "name": "{{input.newName}}",
    "expiresAt": "{{input.newExpiration}}"
  }
}

cancelSignatureRequest

Cancel a signature request.

{
  "action": "dropbox-sign.cancelSignatureRequest",
  "config": {
    "signatureRequestId": "{{input.signatureRequestId}}"
  }
}

removeSignatureRequestAccess

Remove access to a signature request (for requestor).

{
  "action": "dropbox-sign.removeSignatureRequestAccess",
  "config": {
    "signatureRequestId": "{{input.signatureRequestId}}"
  }
}

downloadFiles

Download signed documents.

{
  "action": "dropbox-sign.downloadFiles",
  "config": {
    "signatureRequestId": "{{input.signatureRequestId}}",
    "fileType": "pdf"
  }
}

File Types:

  • pdf - Single PDF with all documents
  • zip - ZIP archive with separate files

getFilesAsDataUri

Get files as base64 data URI.

{
  "action": "dropbox-sign.getFilesAsDataUri",
  "config": {
    "signatureRequestId": "{{input.signatureRequestId}}"
  }
}

Template Actions

getTemplate

Get template by ID.

{
  "action": "dropbox-sign.getTemplate",
  "config": {
    "templateId": "{{input.templateId}}"
  }
}

listTemplates

List available templates.

{
  "action": "dropbox-sign.listTemplates",
  "config": {
    "accountId": "{{input.accountId}}",
    "page": 1,
    "pageSize": 20,
    "query": "NDA"
  }
}

deleteTemplate

Delete a template.

{
  "action": "dropbox-sign.deleteTemplate",
  "config": {
    "templateId": "{{input.templateId}}"
  }
}

createEmbeddedTemplateDraft

Create an embedded template draft.

{
  "action": "dropbox-sign.createEmbeddedTemplateDraft",
  "config": {
    "clientId": "{{env.DROPBOX_SIGN_CLIENT_ID}}",
    "fileUrls": ["{{input.documentUrl}}"],
    "title": "Standard NDA Template",
    "subject": "Non-Disclosure Agreement",
    "message": "Please sign the NDA",
    "signerRoles": [
      { "name": "Client", "order": 1 },
      { "name": "Company", "order": 2 }
    ],
    "ccRoles": ["Legal", "HR"],
    "mergeFields": [
      { "name": "effective_date", "type": "text" },
      { "name": "contract_value", "type": "text" }
    ],
    "testMode": true
  }
}

Embedded Signing Actions

getEmbeddedSignUrl

Get embedded signing URL.

{
  "id": "get-signing-url",
  "type": "action",
  "action": "dropbox-sign.getEmbeddedSignUrl",
  "config": {
    "signatureId": "{{steps.send-request.output.signatures[0].signature_id}}"
  }
}

Response:

{
  "embedded": {
    "sign_url": "https://app.hellosign.com/editor/embeddedSign?...",
    "expires_at": 1705312800
  }
}

getEmbeddedEditUrl

Get embedded template edit URL.

{
  "action": "dropbox-sign.getEmbeddedEditUrl",
  "config": {
    "templateId": "{{input.templateId}}",
    "skipSignerRoles": false,
    "skipSubjectMessage": false,
    "testMode": false
  }
}

Team Actions

getTeam

Get current team info.

{
  "action": "dropbox-sign.getTeam",
  "config": {}
}

addTeamMember

Add member to team.

{
  "action": "dropbox-sign.addTeamMember",
  "config": {
    "emailAddress": "{{input.email}}",
    "accountId": "{{input.accountId}}"
  }
}

removeTeamMember

Remove member from team.

{
  "action": "dropbox-sign.removeTeamMember",
  "config": {
    "emailAddress": "{{input.email}}",
    "newOwnerEmailAddress": "{{input.newOwnerEmail}}"
  }
}

Account Actions

getAccount

Get account info.

{
  "action": "dropbox-sign.getAccount",
  "config": {
    "accountId": "{{input.accountId}}"
  }
}

updateAccount

Update account settings.

{
  "action": "dropbox-sign.updateAccount",
  "config": {
    "callbackUrl": "https://yourapp.com/webhook/dropbox-sign",
    "locale": "en_US"
  }
}

API App Actions

getApiApp

Get API app info.

{
  "action": "dropbox-sign.getApiApp",
  "config": {
    "clientId": "{{env.DROPBOX_SIGN_CLIENT_ID}}"
  }
}

listApiApps

List API apps.

{
  "action": "dropbox-sign.listApiApps",
  "config": {
    "page": 1,
    "pageSize": 20
  }
}

Unclaimed Draft Actions

createUnclaimedDraft

Create an unclaimed draft.

{
  "action": "dropbox-sign.createUnclaimedDraft",
  "config": {
    "type": "request_signature",
    "fileUrls": ["{{input.documentUrl}}"],
    "signers": [
      {
        "email_address": "{{input.signerEmail}}",
        "name": "{{input.signerName}}"
      }
    ],
    "subject": "{{input.subject}}",
    "message": "{{input.message}}",
    "testMode": true
  }
}

createEmbeddedUnclaimedDraft

Create embedded unclaimed draft.

{
  "action": "dropbox-sign.createEmbeddedUnclaimedDraft",
  "config": {
    "clientId": "{{env.DROPBOX_SIGN_CLIENT_ID}}",
    "type": "request_signature",
    "fileUrls": ["{{input.documentUrl}}"],
    "signers": [
      {
        "email_address": "{{input.signerEmail}}",
        "name": "{{input.signerName}}"
      }
    ],
    "requesterEmailAddress": "{{input.requesterEmail}}",
    "testMode": true,
    "isForEmbeddedSigning": true
  }
}

Webhook Triggers

Dropbox Sign webhooks trigger workflows on signature events.

{
  "trigger": {
    "type": "webhook",
    "provider": "dropbox-sign",
    "events": ["signature_request_all_signed", "signature_request_declined"]
  }
}

Event Types:

EventDescription
signature_request_sentRequest sent
signature_request_viewedRequest viewed
signature_request_signedIndividual signer completed
signature_request_all_signedAll signers completed
signature_request_declinedRequest declined
signature_request_expiredRequest expired
signature_request_canceledRequest canceled
signature_request_remindReminder sent

Example Workflow

Sales contract signing workflow:

{
  "name": "Send Contract on Deal Won",
  "trigger": {
    "type": "webhook",
    "provider": "salesforce",
    "events": ["Opportunity"]
  },
  "steps": [
    {
      "id": "check-won",
      "type": "condition",
      "config": {
        "conditions": {
          "left": "{{input.payload.StageName}}",
          "operator": "eq",
          "right": "Closed Won"
        },
        "then": ["get-contact"],
        "else": []
      }
    },
    {
      "id": "get-contact",
      "type": "action",
      "action": "salesforce.query",
      "config": {
        "query": "SELECT Email, Name FROM Contact WHERE AccountId = '{{input.payload.AccountId}}' AND IsPrimary__c = true LIMIT 1"
      }
    },
    {
      "id": "send-contract",
      "type": "action",
      "action": "dropbox-sign.sendWithTemplate",
      "config": {
        "templateId": "{{env.CONTRACT_TEMPLATE_ID}}",
        "title": "Service Agreement - {{input.payload.Name}}",
        "signers": [
          {
            "role": "Client",
            "email_address": "{{steps.get-contact.output.records[0].Email}}",
            "name": "{{steps.get-contact.output.records[0].Name}}"
          }
        ],
        "customFields": [
          { "name": "deal_value", "value": "{{input.payload.Amount}}" },
          { "name": "close_date", "value": "{{input.payload.CloseDate}}" }
        ],
        "metadata": {
          "opportunity_id": "{{input.payload.Id}}",
          "account_id": "{{input.payload.AccountId}}"
        }
      }
    },
    {
      "id": "update-opportunity",
      "type": "action",
      "action": "salesforce.updateOpportunity",
      "config": {
        "opportunityId": "{{input.payload.Id}}",
        "Contract_Sent__c": true,
        "Contract_Sent_Date__c": "{{now | date: 'YYYY-MM-DD'}}"
      }
    },
    {
      "id": "notify-team",
      "type": "action",
      "action": "slack.sendMessage",
      "config": {
        "channel": "#sales-wins",
        "text": "Contract sent for {{input.payload.Name}} (${{input.payload.Amount}})"
      }
    }
  ]
}

Rate Limits

PlanLimit
Free3 signature requests/month
EssentialsVaries by plan
EnterpriseCustom limits
API callsBased on plan

Troubleshooting

Common Errors

ErrorCauseSolution
signatureRequestId is requiredMissing request IDProvide signatureRequestId
templateId is requiredMissing template IDProvide templateId
emailAddress is requiredMissing signer emailInclude email_address for signers
DOCUMENT_NOT_FOUNDInvalid document URLVerify fileUrls are accessible
TEMPLATE_NOT_FOUNDInvalid template IDCheck template exists

Test Mode

Use testMode: true during development:

  • No charges incurred
  • Documents watermarked
  • Signatures not legally binding