So I'm using REST API for my DocuSign handling, and I have this snippet that checks every 30 mins the status of each envelope, but I'm having hard time find out if there is a way to trigger response (i.e. email) as soon as someone signs the document?
Yes, the DocuSign REST API includes a webhook facility that you can use. When you call Envelopes:Create, include an eventNotification object. In that object you include an internet-accessible URL.
The DocuSign platform will then make HTTPS POSTS to your URL when there is an interesting status change to your envelope. (You define "interesting" status changes as part of the eventNotification object.)
See the eventNotification section in the docs.
Related
I'm using the docusign api and am having some trouble with a query string param. Basically I'm trying to grab the recipient information of an envelope along with the status of the envelope in a single call.
I am able to grab each of information individually with the following api calls and they both work
1.) Envelope endpoint (has a status field with overall envelope status such as Signed, Voided, Declined, etc...):
https://na2.docusign.net/restapi/v2/accounts/:accountId/envelopes/:docusignEnvelopeId/
2.) Envelope/recipients endpoint (has information regarding recipients)
https://na2.docusign.net/restapi/v2/accounts/:accountId/envelopes/:docusignEnvelopeId/recipients
However, I'm trying to see if I can grab these information all within one API call. According to the docs here for the general envelope endpoint, I think I should be able to with a query param
https://developers.docusign.com/esign-rest-api/reference/Envelopes/Envelopes/get#request.
Under the include Optional Query Parameters section, there's a param for "include" which says I can grab recipients from the 1st endpoint. "Specifies additional information about the envelope to return. Enter a comma-separated list, such as tabs,recipients. Valid values are..."
I've been trying to modify the first endpoint with this include param to look something like this...
https://na2.docusign.net/restapi/v2/accounts/:accountId/envelopes/:docusignEnvelopeId?include=recipients
But I have been unable to have recipients show up as well. Was wondering if I'm just typing in the param wrong or if this is not available anymore. Any help would be appreciated!
Thanks :)
The include parameters were added in v2.1 of the eSignature API, so they don't work in v2. Changing your URL to https://na2.docusign.net/restapi/v2.1/accounts/:accountId/envelopes/:docusignEnvelopeId?include=recipients should return the recipient info.
In my returnUrl handler, I am using list documents.
In the returned array, how can I figure out if the document has been signed or not?
Thanks!
Your return url handler will be called with a query parameter event as discussed in Inbar's answer.
But you should not use the query parameter for making business decisions since a bad guy could easily call your return url and simply tack on an event=signing_complete query parameter--spoofing your application.
Instead, when your application needs to know if the envelope has been signed or not, it has two categories of options:
Ask DocuSign
Your app can call the Envelopes::get method to determine the current status of the envelope. Other API methods can also be used for this functionality.
Design your app such that you do not call DocuSign about a particular envelope more often than once every 15 minutes since such behavior is considered polling and is not allowed.
Webhook: DocuSign will call your app
You can set up a webhook with DocuSign so that the eSignature platform will call your application when the envelope is complete (signed by all the signers, etc).
Use the DocuSign webhook HMAC feature to guarantee that the notification message came from DocuSign (was not spoofed) and that it was not altered in transmission.
By using AWS or equivalent, you can easily receive the notification messages behind the firewall, with no firewall changes. And AWS will not charge you for the first million notification messages per month. See the connect-* repos on github.com/docusign
Dashboards
If your app wants to present a dashboard to a business decision maker about the status of your envelopes, then relying on the event query parameter is fine. But before your app does anything that costs real money, eg initiate goods or services to be provided to a customer, make sure that the envelope has been signed by using one of the two techniques above.
The URL you get back from DocuSign has an event parameter and looks like this:
http://www.acme.com?event=signing_complete
signing_complete means it was signed.
https://developers.docusign.com/esign-rest-api/guides/features/embedding has the full list of other events in the "Determining Recipient Action" section of the article.
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.
Once any document is sent for signature, we can see that document status like in process, completed. Also email notification is coming to document sender mail. Are these features exposed by docusign rest API?
Yes, absolutely. The status updates are delivered to your program via a "webhook" -- you register a url with DocuSign and then DocuSign calls your app when a change occurs.
You can create a webhook subscription at the account level or for individual envelopes.
See the docs. Recipes are also available at the DocuSign Developer Center.
Added
You can also determine the current status of your signing requests (your envelopes) by polling the DocuSign platform. However, this is actively discouraged, and in any case, you can't poll more than once per 15 minutes for a given envelope. The docs discuss this as well.
I'm able to create an envelope with the API which returns the envelopeId which looks like:
13f23354-7eee-41d3-897a-c1353a1e465c
When I navigate to docusign in my browser and open the envelope the url is:
https://na2.docusign.net/MEMBER/EnvelopeSetup.aspx?ti=ad05458248c54654a16a54195bf72ffe
I don't see what that "ad05458248c54654a16a54195bf72ffe" id is. I've tried every envelope API in the documentation (many don't make sense, but I tried them anyways):
/accounts/{accountId}/envelopes/{envelopeId}
/accounts/{accountId}/envelopes/{envelopeId}/audit_events
/accounts/{accountId}/envelopes/{envelopeId}/custom_fields
/accounts/{accountId}/envelopes/{envelopeId}/email_settings
/accounts/{accountId}/envelopes/{envelopeId}/notification
/accounts/{accountId}/envelopes/{envelopeId}/templates
But that id isn't anywhere.
Is there a way to retrieve that URL id? and/or is there another way I can get the url for the envelope?
The ID that appears as part of any URL when you're using the DocuSign web console is an internal ID -- you cannot use it with the API in any way. The Envelope ID value that DocuSign returns in response to the "Create Envelope" API request is the ID that you'll want to use with any API request that requires an Envelope ID.
It's not exactly clear to me what you mean by "[url for] managing an envelope" -- but I'd suggest you explore the following operations in the DocuSign REST API Guide:
Post Envelope Correction (page 146)
Modify or Correct and Resend Recipient Information (page 137)
Post Sender View (page 149)
(I'd guess that "Post Envelope Correction" is likely what you're after.)