I need to poll DocuSign for all envelopes where the signer uploaded an attachment. I found a post suggesting listauditevents, but that is for one envelope ID. I need to determine if we have completed envelopes where the signer printed and then uploaded the document.
I want to avoid downloading all of the envelopes' data and then looping through to find this action.
Is there an endpoint for actions that I am just not finding?
Thanks for your help.
I was able to get this info from the DocuSign online reports. I customized the envelope recipient report to include 'signed on paper' column, downloaded the results to csv, opened in Excel and filtered where signed on paper = true.
Thank you for your suggestions and the use of this site.
Anytime you're thinking "polling", a better thought is to think "webhook." You can use the DocuSign webhook system (Connect) to be notified when an envelope is complete. Then check to see if an attachment was uploaded by a signer.
Easiest way to use webhooks and avoid the need to set up a server on the public internet is to use AWS et al to receive and queue the notification messages for your app (behind the firewall).
See
connect-node-listener-aws
connect-node-worker-aws
and the other examples for Azure and Google Cloud. Plus, more examples are on their way for C#, Java, PHP, and Python
Related
I'm trying to integrate #docusignapi into my website and was looking for a pre-signed upload mechanism. But their API don't talk about that (at least I haven't seen it anywhere).
Did anyone successfully managed to do that?
If you are not familiar with pre-signed upload, here's a blogpost from Dropbox about how they propose that.
DocuSign does not offer a pre-signed upload feature at this time.
You can upload documents via the Envelope::create API call in the body of the JSON object after being Base64 encoded.
You can see this via scenario 2 in the example launchers (see below).
You can also upload document(s) in binary mode via a multi-part mime transaction. See scenario 10 in the example launchers.
Documents can also be uploaded in separate transactions if the envelope is first created in draft mode.
The example launchers are listed below. Each includes 14 or more scenarios.
C# -- https://github.com/docusign/eg-03-csharp-auth-code-grant-core
PHP – https://github.com/docusign/eg-03-php-auth-code-grant
Java – https://github.com/docusign/eg-03-java-auth-code-grant
Node.js – https://github.com/docusign/eg-03-node-auth-code-grant
Python – https://github.com/docusign/eg-03-python-auth-code-grant
Ruby – https://github.com/docusign/eg-03-ruby-auth-code-grant
Curl (direct API) – https://github.com/docusign/eg-03-curl
If you want UI to upload documents to the envelope before Sending the envelope for ESigning, the you can use Sender View for Draft envelope, with this soln. your customers need to come to your App, and then App can call this ESign APIs to generate one time URL, and load that URL in the browser to ask your users to upload the document on the Envelope.
Update:
There is one more option which can be used, but this will be only used if the recipient of the envelope has a DS Account, then you can add them as an Editor (Allow to Edit) recipient type in the workflow. When they will get email from DocuSign then they will login with their DS Credentials and can modify the envelope in same way as Sender of the envelope, with Editor Recipient Type, they can add/update Documents, add/update Recipients and their Tabs.
I am an admin account user and to get insights from data I need to pull the details of all the envelopes from all accounts. The similar thing is what a report provides in Docusign dashboard but I need the list of recipients as well. Can anyone please help me. Thanks.
Listing envelopes sent by your users: Envelopes::listStatusChanges
I think that call may cover envelopes sent by anyone in your account (if the accessToken represents a user with admin privileges). But I'm not sure.
If it doesn't then you can loop through the account's users.
Tracking who has received an envelope through their DocuSign account is done with the Folders::listItems API call. You may need to list both the Inbox and Deleted folders. You also need to check that the person signed the specific envelope vs receiving it for some other reason (cc, certified copy, etc).
Finally, an alternative if you have higher volumes is to purchase the DocuSign Report Feed product (see note below). It will send you DB table dumps about your account activity on a regular basis so you can do your own reporting on DocuSign activity. It is the best way to have full access to report data. Ask your DocuSign contact for more info.
Note: I'm not sure of the exact name for the reporting product.
This can be done if you install DocuSign for Salesforce managed package and use Connect feature in DocuSign. Configure your webhooks to create DocuSign Status and DocuSign Recipient Status records for each send. Any DocuSign objects or custom object can be used in the Connect configuration, after selecting objects, select which events you want the results to be pushed back to Salesforce.
Use a parent object to store envelope details and child object for the recipient data. Use Envelope Id to relate the child records to the parent. Eventually, you will be able to build various reports on Salesforce.
More info here: https://support.docusign.com/guides/dfs-admin-guide-ds-connect-for-salesforce
I have a web application integrated with DocuSign API, to pass in recipient details to a DocuSign template and initiate signing process. The template has tags for each recipient to enter relevant information and sign.
Once the document is completed/signed by all recipients, the information available in the document needs to be passed on to another web application bound to a DB. What are the options available in DocuSign to trigger document data(e.g. recipient1 signed date) transferred to a DB/other systems on document completion? Any advice on this is appreciated.
You probably need to provide more specific information but generally, you can use DocuSign Connect and configure your API source to integrate the data. After that, you will be able to use webhooks (or Connect) to send tabs data and signing statuses to your 'other systems'.
Once you get your Connect figured out, you can then have GET request using this
{{baseUrl}}/envelopes/{{envelopeId}}/recipients?include_tabs=true
and then have a wrapper class to export desired tabs (ex. Date Signed or other Text Tabs)
OR you can configure a webhook to sync your data between DocuSign and other systems:
Code Example: Using a Webhook to Track Envelope Status
I am using DocuSign api for my client website portal as customer documents digital process. Everything works great except one feature needed.
I am creating dynamic document (with php) and sending to customer via DocuSign api to sign (using DocuSign digital signature setup).
And i have added 'check status' button in my website to check that specific document/envelope (by forwarding envelope unique id to DocuSign api get envelope status) and updating in my database and also downloading that signed document from docUsign.
Now i need the above process to be done automatically which means when the customer signs, a callback should trigger to my website url (like some webhook i need setup) and then i will check that envelop status and update my database.
Can any one give some suggestions or code snippet where i can keep that webhook url option to get auto response from DocuSign (just like paypal IPN)
Thanks in Advance
You can use DocuSign Connect to do exactly what you've described. Using DocuSign Connect, you can configure DocuSign to automatically push Envelope status and documents to an endpoint you specify when the Envelope event(s) you specify occur (for example, Recipient completes/submits an Envelope, or Envelope reaches status = completed, etc.).
DocuSign has published several code samples that show how to use DocuSign Connect. For example:
PHP and Python webhook sample
C# webhook sample
Node webhook sample
Java webhook sample
These samples (and others) can be found in the DocuSign GitHub org.
I have successfully implemented a system that creates documents to be signed via a template using the .NET API, and then has a DocuSign Connect listener that gets called upon the envelope being signed (right now only have Connect reporting on envelope signatures and declines). I have the option set to "Include Documents" on my DocuSign Connect settings. When I create the envelope for signature programmatically with one signer it all works - my Connect listener gets called, the /DocuSignEnvelopeInformation/DocumentPDF/PDFBytes element has Base64 data in it, and I have successfully decoded that and stored it in our doc management system. Cool. Demos well, management loves it.
However, I have noticed at least two scenarios where the /DocuSignEnvelopeInformation/DocumentPDF section isn't being returned at all:
When there are multiple signers.
When the envelope is created manually, even if it uses the same template.
I can still use the Connect response to get the /DocuSignEnvelopeInformation/EnvelopeStatus/DocumentStatuses and extract the document IDs from the DocumentStatus child elements, and then go retrieve those programmatically using the .NET API. But I am wondering why the PDF bytes aren't being consistently returned all the time? Is the above expected behavior? Am I missing something?
I would prefer to save "round trips" and just have Connect deliver all the signed PDFs to me when it calls (and yes, I have read the Recommendations for Receiving Documents section of the DocuSign Connect Guide and understand the trade-offs. Just wondering if I need to code around this issue, or what I am missing?
Hmmm. Envelopes don't get "signed," they get "sent" and "completed." See the envelopeEvents vs the recipientEvents lists in the Connect::Create call.
Currently, there is an existing issue which is that the connect daemon can miss an event if it is quickly superseded by another event. This might be what is happening when you have multiple signers for an envelope. The safest thing to do is to subscribe to all events and then ignore the notifications that are not of interest to you.
The terminal event of an envelope being "completed" will always be sent if you've subscribed to it.
Also, to make your app more bulletproof, I suggest subscribing to the Connect events via the API call (link is above) rather than depending on the human to setup up the subscription correctly. Since an account can easily have more than one connect subscription, you can track which one is your app's by using a specific name for the subscription.
Added
Just now, I created a Connect subscription for just the Envelope Completed event, for all users in my account on demo.docusign.net. As the subscription (listener) url, I used a free account from requestb.in
Using the web user interface (not the API), I created an envelope with two signers. After I completed the envelope, the requestb.in received the notification, it included:
<DocumentPDFs>
<DocumentPDF>
<Name>House architectural overview.pdf</Name>
<PDFBytes>....
as expected. So I'm unable to reproduce your problem. I suggest that you use requestb.in to double-check exactly what is being sent in the notification messages.