I'd like to know if it's possible to disable the email notification to a host when using In-Person signing. ( sent you a document to host for an in-person signing session.)
Repro:
1 - Envelope is created using API containing 3 recipients: One In-Person captive Signer and two remote signers.
2 - Host receives an email notification.
In-Person Sign Email Notification
JSON:
`{
"status":"sent",
"emailSubject":"Contract",
"compositeTemplates":[
{
"serverTemplates":[
{
"sequence":"1",
"templateId":"<templateId>"
}
],
"inlineTemplates":[
{
"sequence":"1",
"recipients":{
"inPersonSigners":[
{
"hostEmail":"johndoe#email.com",
"hostName":"John Doe",
"signerName":"Ringo Starr",
"signerEmail":"ringostarr#email.com",
"roleName":"Signer 1",
"recipientId":"1",
"clientUserId":"1000",
"routingOrder":"1",
"embeddedRecipientStartURL":"SIGN_AT_DOCUSIGN",
"recipientSignatureProviders":[
{
"signatureProviderName":"UniversalSignaturePen_OpenTrust_Hash_TSP",
"signatureProviderOptions":{
"sms":"<phoneNumber>"
}
}
]
],
"signers":[
{
"name":"John Doe",
"email":"johndoe#email.com",
"emailNotification":{
"emailSubject":"Contract for live in person signature attached.",
"emailBody":"Contract for live in person signature attached.",
"supportedLanguage":"en"
},
"roleName":"Signer 2",
"routingOrder":"2",
"recipientId":"2",
"recipientSignatureProviders":[
{
"signatureProviderName":"UniversalSignaturePen_OpenTrust_Hash_TSP",
"signatureProviderOptions":{
"sms":"<phoneNumber>"
}
}
]
},
{
"name":"Paul McCartney",
"email":"paulmccartney#email.com",
"emailNotification":{
"emailSubject":"Contract for live in person signature attached.",
"emailBody":"Contract for live in person signature attached.",
"supportedLanguage":"en"
},
"roleName":"Signer 3",
"routingOrder":"2",
"recipientId":"3",
"recipientSignatureProviders":[
{
"signatureProviderName":"UniversalSignaturePen_OpenTrust_Hash_TSP",
"signatureProviderOptions":{
"sms":"<phoneNumber>"
}
}
]
}
]
},
"customFields":{
"textCustomFields":[
{
"value":"<salesforcecontractId>",
"required":"false",
"show":"false",
"name":"##SFContract"
}
]
}
}
]
}
],
"eventNotification":{
"RecipientEvents":[
{
"recipientEventStatusCode":"Completed"
},
{
"recipientEventStatusCode":"sent"
},
{
"recipientEventStatusCode":"delivered"
},
{
"recipientEventStatusCode":"declined"
}
],
"EnvelopeEvents":[
{
"envelopeEventStatusCode":"Delivered"
},
{
"envelopeEventStatusCode":"completed"
},
{
"envelopeEventStatusCode":"sent"
},
{
"envelopeEventStatusCode":"Declined"
}
]
}
}`
As I'm using an URL that can be accessed from my application the email notification to the host is unnecessary.
Considerations to keep in mind:
None of the recipients neither the host is a DocuSign user;
The option "Suppress emails to embedded signers" under Signing Settings is already checked;
The host will not always be a recipient.
Regards.
Remove "embeddedRecipientStartURL":"SIGN_AT_DOCUSIGN" from the inPerson recipient definition.
Specifying an embeddedRecipientStartURL causes the recipient to also receive an official DocuSign email inviting them to sign the documents. See this answer for more information.
From Official Documentation
embeddedRecipientStartURL is a sender provided valid URL string for redirecting an embedded recipient. When using this option, the embedded recipient still receives an email from DocuSign, just as a remote recipient would, but when the document link in the email is clicked the recipient is redirected, through DocuSign, to this URL to complete their actions. When routing to the URL, it is up to the sender's system (the server responding to the URL) to then request a recipient token to launch a signing session.
Related
This is the request body I am using to send email to the guests. However, I want to customize the customizedMessageBody using html tags and elements.
{
"invitedUserDisplayName": "Invited User",
"invitedUserEmailAddress": "invited1234#yopmail.com",
"invitedUserMessageInfo": {
"messageLanguage": "string",
"ccRecipients": [
{
"emailAddress": {
"name": "xyz#yopmail.com",
"address": "xyz#yopmail.com"
}
}
],
"customizedMessageBody": "<html>hello tiger</html>"
},
"sendInvitationMessage": true,
"inviteRedirectUrl": "https://myapps.microsoft.com"
}
As Message itself a text area. Due to the Security reason, Customizing the customizedMessageBody using html tags and elements will not be processable.
This document details the available options you have for invitation messages
Hello we are looking to attach an application number to Docusign request (an envelope) with the API.
How can we attach custom properties to an envelope, to pass some reference to a particular transaction, so it is part of the payload sent back in the webhook when signing is complete?.
What we have tried is below:
let recipients = docusign.Recipients.constructFromObject({
signers: [signer1],
carbonCopies: [cc1],
applicationNo: app.id,
})
env.recipients = recipients
env.applicationNo = "someApplicationNumber"
env.status = args.status
From your code example, it looks like you want to attach metadata at the envelope (transaction) level. To do that, use EnvelopeCustomFields
You can create use either strings or enumerated string values.
You can include them in the envelope definition. See here or you can use separate API calls for them
You can have them included in the certificate of completion document if you want.
Example using the Node.js SDK for an EnvelopeCustomField named applicationNo:
let textCustomField1 = docusign.TextCustomField.constructFromObject({
name: "applicationNo",
show: "true", // show the field in the certificate of completion
value: "12345"
});
let textCustomFields1 = [textCustomField1];
let customFields1 = docusign.CustomFields.constructFromObject({
textCustomFields: textCustomFields1
});
...
let envelopeDefinition = docusign.EnvelopeDefinition.constructFromObject({
customFields: customFields1,
documents: documents1,
emailSubject: "Please sign the attached document",
recipients: recipients1,
status: "sent"
});
Same example in JSON:
"envelopeDefinition": {
"emailSubject": "Please sign the attached document",
"status": "sent",
"customFields": {
"textCustomFields": [
{
"name": "applicationNo",
"show": "true",
"value": "12345"
}
]
},
"documents": ....
The certificate of completion.
Notice the applicationNo data
In the Graph API explorer, you can send an email with the endpoint
https://graph.microsoft.com/v1.0/me/sendMail
and a basic json payload of
"message": {
"subject": "Meet for lunch?",
"body": {
"contentType": "Text",
"content": "The new cafeteria is open."
},
"toRecipients": [
{
"emailAddress": {
"address": "user#domain.com"
}
}
],
"from":{
"emailAddress": {
"address": "smtp:my_alias#domain.com"
}
}
}
When I send this request, it still sends the email as user#domain.com instead of my email alias.
I can still see the email alias there when i run the endpoint
https://graph.microsoft.com/beta/me/
Under proxyAddresses
I've looked over the documentation and don't see any clear example of option to send the email as alias.
We can only set from and sender properties to a different value when sending a message from a shared mailbox, for a shared calendar, or as a delegate. See details here (see form and sender) and Setting the from and sender properties. Sending email as alias is not mentioned and cannot work based on the test.
So it's not supported to send the email as alias via Microsoft Graph API.
The value of from and sender must correspond to the actual mailbox used. So the only way to send email as alias is to change alias to primary email in O365 admin center and then send email.
As a workaround, if you just want recipients to think that you are sending from alias, you can configure a delegated mailbox for your mailbox (assign sendAs rights of the mailbox to a delegated user). Delegated mailbox is actually another mailbox and needs to be assigned an Exchange Online license. Then set the from property to the delegated user who have sendAs rights for your mailbox in Microsoft Graph API. See details here. After that, when you send an email, the recipient will see it's from the delegated email.
About how to assign sendAs rights in Exchange Admin Center, please refer to Use the EAC to assign permissions to individual mailboxes. It may take several hours to take effect.
POST https://graph.microsoft.com/beta/me/sendMail
{
"message": {
"subject": "Meet for lunch?",
"body": {
"contentType": "Text",
"content": "The new cafeteria is open."
},
"toRecipients": [{
"emailAddress": {
"address": "user#domain.com"
}
}
],
"from": {
"emailAddress": {
"address": "{delegated mailbox}"
}
}
}
}
Just tested the API and verified working as of now.
https://developer.microsoft.com/en-us/graph/graph-explorer
POST https://graph.microsoft.com/beta/me/sendMail
{
"message": {
"subject": "Meet for lunch test?",
"body": {
"contentType": "Text",
"content": "The new cafeteria is open."
},
"toRecipients": [
{
"emailAddress": {
"address": "somemail#gmail.com"
}
}
],
"from": {
"emailAddress": {
"address": "myalias#contoso.com"
}
}
}
}
"from" address must be from one of your proxy/alias email addresses.
If you're using AzureAD Tenant/Client IDs to send emails, you can use the sample code below:
var msg = new Message();
msg.Subject = "test";
//... other setup
msg.From = new Recipient {
EmailAddress = new EmailAddress
{ Address = "myalias#contoso.com" }
};
await graphClient.Users["mydefault#contoso.com"].SendMail(msg).Request().PostAsync();
I tried setting msg.Sender and it doesn't work.
Is it possible to create a Docusign envelope without giving a name for the signer?
Here is the sample envelope definition from the REST docs
{
"status":"sent",
"emailSubject":"Example of one recipient, type signer",
"documents":[
{
"documentId":"1",
"name":"contract.pdf",
"documentBase64":"base64 document bytes..."
}
],
"recipients":{
"signers":[
{
"name":"Lisa Simpson",
"email":"lisa#email.com",
"recipientId":"1",
"routingOrder":"1",
"tabs":{
"signHereTabs":[
{
"xPosition":"150",
"yPosition":"200",
"documentId":"1",
"pageNumber":"1"
}]
}
}]
}
}
`
Instead of "Lisa Simpson" I want to have a blank string "" to withhold the persons name. Is this allowed? When I try I get back this error INVALID_USERNAME_FOR_RECIPIENT but am wondering if there is a workaround.
Thanks
No. Signers need to have names defined.
An exception to this is if you are using a 'specify recipients' role prior to the signer. In this case, you can have a blank placeholder signer, but the Specify user will be required to enter both a name and email for the signer.
What is your use case for a signer without a name?
I'm using a composite template with Document Visibility enabled.
Signers are correctly excluded from documents they don't have tabs on, or can be explicitly excluded from those that no signer has tabs on with the excludedDocuments parameter.
My problem is this: the sender (me) cannot view one of the documents in the envelope that the sender is not a recipient of. According to docs:
Recipients that have an administrative role (recipients with an Action
of Manage envelopes, Address recipients, Manage recipients, Receive a
copy or Acknowledge receipt) can always see all the documents in an
envelope, unless they are excluded when an envelope is sent. Documents
that do not have tags are always visible to all recipients, unless
they are excluded when an envelope is sent.
I tried adding the sender as a recipient of the document but received the error:
Free form signing not allowed with document visibility
Which suggests I need to add a SignHereTab for the sender -- but there is nothing to sign, it should be for view only.
Partial request, includes the document in question. you can see how the sender is not a recipient on this document.
{
"status":"sent",
"compositeTemplates":[
{
"inlineTemplates":[
{
"sequence":"0",
"recipients":{
"signers":[
{
"name":"Harvey k",
"email":"somewhere",
"recipientId":1,
"accessCode":null,
"roleName":"Recipient",
"tabs":{
"signHereTabs":[
{
"tabLabel":"borrowerSignHere\\*",
"documentId":2,
"recipientId":1,
"templateLocked":true,
"templateRequired":true,
"optional":false,
}
]
}
},
{
"name":"first1 last1",
"email":"somewhere",
"recipientId":2,
"accessCode":null,
"roleName":"Signer",
"tabs":{
"signHereTabs":[
{
"tabLabel":"agentSignHere\\*",
"documentId":2,
"recipientId":2,
"templateLocked":true,
"templateRequired":true,
"optional":false,
}
]
},
"excludedDocuments":[2,3,4,5,6]
}
]
}
}
],
"document":{
"name":"Agent Agreement",
"documentId":2,
"documentBase64":"...",
"transformPdfFields":true
}
} // ... more templates documentId 2+
]
}
Try making the sender a Carbon Copies Recipient with a routing order after the other recipients.