Sample code for 30+ languages & platforms
Classic ASP

Yousign - Setup email notifications

See more Yousign Examples

Demonstrates how to setup email notifications based on events. An event is triggered when a user (or our API) make an action or when a status has changed.

Chilkat Classic ASP Downloads

Classic ASP
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<%
success = 0

' This example assumes the Chilkat API to have been previously unlocked.
' See Global Unlock Sample for sample code.

set http = Server.CreateObject("Chilkat.Http")

' Implements the following CURL command:

' curl --location --request POST 'https://staging-api.yousign.com/procedures' \
' --header 'Authorization: Bearer YOUR_API_KEY' \
' --header 'Content-Type: application/json' \
' --data-raw '{
'     "name": "My first procedure with emails",
'     "description": "Powerful! Here is the description of my first procedure with emails",
'     "members": [
'         {
'             "firstname": "John",
'             "lastname": "Doe",
'             "email": "john.doe@yousign.fr",
'             "phone": "+33612345678",
'             "fileObjects": [
'                 {
'                     "file": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
'                     "page": 2,
'                     "position": "230,499,464,589",
'                     "mention": "Read and approved",
'                     "mention2": "Signed by John Doe"
'                 }
'             ]
'         }
'     ],
'     "config": {
'         "email": {
'             "member.started": [
'                 {
'                     "subject": "Hey! You are invited to sign!",
'                     "message": "Hello <tag data-tag-type=\"string\" data-tag-name=\"recipient.firstname\"></tag> <tag data-tag-type=\"string\" data-tag-name=\"recipient.lastname\"></tag>, <br><br> You have ben invited to sign a document, please click on the following button to read it: <tag data-tag-type=\"button\" data-tag-name=\"url\" data-tag-title=\"Access to documents\">Access to documents</tag>",
'                     "to": ["@member"]
'                 }
'             ],
'             "procedure.started": [
'                 {
'                     "subject": "John, created a procedure your API have.",
'                     "message": "The content of this email is totally awesome.",
'                     "to": ["@creator", "@members", "billing@yousign.fr"]
'                 }
'             ]
'         }
'     }
' }'

' Use the following online tool to generate HTTP code from a CURL command
' Convert a cURL Command to HTTP Source Code

' Use this online tool to generate code from sample JSON:
' Generate Code to Create JSON

' The following JSON is sent in the request body.

' {
'   "name": "My first procedure with emails",
'   "description": "Powerful! Here is the description of my first procedure with emails",
'   "members": [
'     {
'       "firstname": "John",
'       "lastname": "Doe",
'       "email": "john.doe@yousign.fr",
'       "phone": "+33612345678",
'       "fileObjects": [
'         {
'           "file": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
'           "page": 2,
'           "position": "230,499,464,589",
'           "mention": "Read and approved",
'           "mention2": "Signed by John Doe"
'         }
'       ]
'     }
'   ],
'   "config": {
'     "email": {
'       "member.started": [
'         {
'           "subject": "Hey! You are invited to sign!",
'           "message": "Hello <tag data-tag-type=",
'           " data-tag-name=": <tag,
'           "button": [
'             "@member"
'           ]
'         }
'       ],
'       "procedure.started": [
'         {
'           "subject": "John, created a procedure your API have.",
'           "message": "The content of this email is totally awesome.",
'           "to": [
'             "@creator",
'             "@members",
'             "billing@yousign.fr"
'           ]
'         }
'       ]
'     }
'   }
' }

set json = Server.CreateObject("Chilkat.JsonObject")
success = json.UpdateString("name","My first procedure with emails")
success = json.UpdateString("description","Powerful! Here is the description of my first procedure with emails")
success = json.UpdateString("members[0].firstname","John")
success = json.UpdateString("members[0].lastname","Doe")
success = json.UpdateString("members[0].email","john.doe@yousign.fr")
success = json.UpdateString("members[0].phone","+33612345678")
' Use the actual file ID here...
success = json.UpdateString("members[0].fileObjects[0].file","/files/23686fbe-3ae1-4de9-9e01-58bbf29b2b18")
success = json.UpdateInt("members[0].fileObjects[0].page",2)
success = json.UpdateString("members[0].fileObjects[0].position","230,499,464,589")
success = json.UpdateString("members[0].fileObjects[0].mention","Read and approved")
success = json.UpdateString("members[0].fileObjects[0].mention2","Signed by John Doe")
success = json.UpdateString("config.email.""member.started""[0].subject","Hey! You are invited to sign!")
success = json.UpdateString("config.email.""member.started""[0].message","Hello <tag data-tag-type=""string"" data-tag-name=""recipient.firstname""></tag> <tag data-tag-type=""string"" data-tag-name=""recipient.lastname""></tag>, <br><br> You have ben invited to sign a document, please click on the following button to read it: <tag data-tag-type=""button"" data-tag-name=""url"" data-tag-title=""Access to documents"">Access to documents</tag>")
success = json.UpdateString("config.email.""member.started""[0].to[0]","@member")
success = json.UpdateString("config.email.""procedure.started""[0].subject","John, created a procedure your API have.")
success = json.UpdateString("config.email.""procedure.started""[0].message","The content of this email is totally awesome.")
success = json.UpdateString("config.email.""procedure.started""[0].to[0]","@creator")
success = json.UpdateString("config.email.""procedure.started""[0].to[1]","@members")
success = json.UpdateString("config.email.""procedure.started""[0].to[2]","billing@yousign.fr")

' Adds the "Authorization: Bearer YOUR_API_KEY" header.
http.AuthToken = "YOUR_API_KEY"

set resp = Server.CreateObject("Chilkat.HttpResponse")
success = http.HttpJson("POST","https://staging-api.yousign.com/procedures",json,"application/json",resp)
If (success = 0) Then
    Response.Write "<pre>" & Server.HTMLEncode( http.LastErrorText) & "</pre>"
    Response.End
End If

set sbResponseBody = Server.CreateObject("Chilkat.StringBuilder")
success = resp.GetBodySb(sbResponseBody)
set jResp = Server.CreateObject("Chilkat.JsonObject")
success = jResp.LoadSb(sbResponseBody)
jResp.EmitCompact = 0

Response.Write "<pre>" & Server.HTMLEncode( "Response Body:") & "</pre>"
Response.Write "<pre>" & Server.HTMLEncode( jResp.Emit()) & "</pre>"

respStatusCode = resp.StatusCode
Response.Write "<pre>" & Server.HTMLEncode( "Response Status Code = " & respStatusCode) & "</pre>"
If (respStatusCode >= 400) Then
    Response.Write "<pre>" & Server.HTMLEncode( "Response Header:") & "</pre>"
    Response.Write "<pre>" & Server.HTMLEncode( resp.Header) & "</pre>"
    Response.Write "<pre>" & Server.HTMLEncode( "Failed.") & "</pre>"
    Response.End
End If

' Sample JSON response:
' (Sample code for parsing the JSON response is shown below)

' {
'   "id": "/procedures/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
'   "name": "My first procedure with emails",
'   "description": "Powerful! Here is the description of my first procedure with emails",
'   "createdAt": "2018-12-05T06:53:34+01:00",
'   "updatedAt": "2018-12-05T06:53:34+01:00",
'   "finishedAt": null,
'   "expiresAt": null,
'   "status": "active",
'   "creator": null,
'   "creatorFirstName": null,
'   "creatorLastName": null,
'   "workspace": "/workspaces/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
'   "template": false,
'   "ordered": false,
'   "parent": null,
'   "metadata": [
'   ],
'   "config": {
'     "email": {
'       "procedure.started": [
'         {
'           "subject": "John, created a procedure your API have.",
'           "message": "The content of this email is totally awesome.",
'           "to": [
'             "@creator",
'             "@members",
'             "billing@yousign.fr"
'           ]
'         }
'       ],
'       "member.started": [
'         {
'           "subject": "Hey! You are invited to sign!",
'           "message": "Hello <tag data-tag-type=\"string\" data-tag-name=\"recipient.firstname\"></tag> <tag data-tag-type=\"string\" data-tag-name=\"recipient.lastname\"></tag>, <br><br> You have ben invited to sign a document, please click on the following button to read it: <tag data-tag-type=\"button\" data-tag-name=\"url\" data-tag-title=\"Access to documents\">Access to documents</tag>",
'           "to": [
'             "@member"
'           ]
'         }
'       ]
'     }
'   },
'   "members": [
'     {
'       "id": "/members/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
'       "user": null,
'       "type": "signer",
'       "firstname": "John",
'       "lastname": "Doe",
'       "email": "john.doe@yousign.fr",
'       "phone": "+33612345678",
'       "position": 1,
'       "createdAt": "2018-12-05T06:53:34+01:00",
'       "updatedAt": "2018-12-05T06:53:34+01:00",
'       "finishedAt": null,
'       "status": "pending",
'       "fileObjects": [
'         {
'           "id": "/file_objects/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
'           "file": {
'             "id": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
'             "name": "The best name for my file.pdf",
'             "type": "signable",
'             "contentType": "application/pdf",
'             "description": null,
'             "createdAt": "2018-12-05T06:52:54+01:00",
'             "updatedAt": "2018-12-05T06:53:34+01:00",
'             "sha256": "bb57ae2b2ca6ad0133a699350d1a6f6c8cdfde3cf872cf526585d306e4675cc2",
'             "metadata": [
'             ],
'             "workspace": "/workspaces/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
'             "creator": null,
'             "protected": false,
'             "position": 0,
'             "parent": null
'           },
'           "page": 2,
'           "position": "230,499,464,589",
'           "fieldName": null,
'           "mention": "Read and approved",
'           "mention2": "Signed by John Doe",
'           "createdAt": "2018-12-05T06:53:34+01:00",
'           "updatedAt": "2018-12-05T06:53:34+01:00",
'           "parent": null,
'           "reason": "Signed by Yousign"
'         }
'       ],
'       "comment": null,
'       "notificationsEmail": [
'       ],
'       "operationLevel": "custom",
'       "operationCustomModes": [
'         "sms"
'       ],
'       "operationModeSmsConfig": null,
'       "parent": null
'     }
'   ],
'   "subscribers": [
'   ],
'   "files": [
'     {
'       "id": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
'       "name": "The best name for my file.pdf",
'       "type": "signable",
'       "contentType": "application/pdf",
'       "description": null,
'       "createdAt": "2018-12-05T06:52:54+01:00",
'       "updatedAt": "2018-12-05T06:53:34+01:00",
'       "sha256": "bb57ae2b2ca6ad0133a699350d1a6f6c8cdfde3cf872cf526585d306e4675cc2",
'       "metadata": [
'       ],
'       "workspace": "/workspaces/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
'       "creator": null,
'       "protected": false,
'       "position": 0,
'       "parent": null
'     }
'   ],
'   "relatedFilesEnable": false,
'   "archive": false,
'   "archiveMetadata": [
'   ],
'   "fields": [
'   ],
'   "permissions": [
'   ]
' }

' Sample code for parsing the JSON response...
' Use the following online tool to generate parsing code from sample JSON:
' Generate Parsing Code from JSON

id = jResp.StringOf("id")
name = jResp.StringOf("name")
description = jResp.StringOf("description")
createdAt = jResp.StringOf("createdAt")
updatedAt = jResp.StringOf("updatedAt")
finishedAt = jResp.StringOf("finishedAt")
expiresAt = jResp.StringOf("expiresAt")
status = jResp.StringOf("status")
creator = jResp.StringOf("creator")
creatorFirstName = jResp.StringOf("creatorFirstName")
creatorLastName = jResp.StringOf("creatorLastName")
workspace = jResp.StringOf("workspace")
template = jResp.BoolOf("template")
ordered = jResp.BoolOf("ordered")
parent = jResp.StringOf("parent")
relatedFilesEnable = jResp.BoolOf("relatedFilesEnable")
archive = jResp.BoolOf("archive")
i = 0
count_i = jResp.SizeOfArray("metadata")
Do While i < count_i
    jResp.I = i
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("config.email.""procedure.started""")
Do While i < count_i
    jResp.I = i
    subject = jResp.StringOf("config.email.""procedure.started""[i].subject")
    message = jResp.StringOf("config.email.""procedure.started""[i].message")
    j = 0
    count_j = jResp.SizeOfArray("config.email.""procedure.started""[i].to")
    Do While j < count_j
        jResp.J = j
        strVal = jResp.StringOf("config.email.""procedure.started""[i].to[j]")
        j = j + 1
    Loop
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("config.email.""member.started""")
Do While i < count_i
    jResp.I = i
    subject = jResp.StringOf("config.email.""member.started""[i].subject")
    message = jResp.StringOf("config.email.""member.started""[i].message")
    j = 0
    count_j = jResp.SizeOfArray("config.email.""member.started""[i].to")
    Do While j < count_j
        jResp.J = j
        strVal = jResp.StringOf("config.email.""member.started""[i].to[j]")
        j = j + 1
    Loop
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("members")
Do While i < count_i
    jResp.I = i
    id = jResp.StringOf("members[i].id")
    user = jResp.StringOf("members[i].user")
    v_type = jResp.StringOf("members[i].type")
    firstname = jResp.StringOf("members[i].firstname")
    lastname = jResp.StringOf("members[i].lastname")
    email = jResp.StringOf("members[i].email")
    phone = jResp.StringOf("members[i].phone")
    position = jResp.IntOf("members[i].position")
    createdAt = jResp.StringOf("members[i].createdAt")
    updatedAt = jResp.StringOf("members[i].updatedAt")
    finishedAt = jResp.StringOf("members[i].finishedAt")
    status = jResp.StringOf("members[i].status")
    comment = jResp.StringOf("members[i].comment")
    operationLevel = jResp.StringOf("members[i].operationLevel")
    operationModeSmsConfig = jResp.StringOf("members[i].operationModeSmsConfig")
    parent = jResp.StringOf("members[i].parent")
    j = 0
    count_j = jResp.SizeOfArray("members[i].fileObjects")
    Do While j < count_j
        jResp.J = j
        id = jResp.StringOf("members[i].fileObjects[j].id")
        fileId = jResp.StringOf("members[i].fileObjects[j].file.id")
        fileName = jResp.StringOf("members[i].fileObjects[j].file.name")
        fileType = jResp.StringOf("members[i].fileObjects[j].file.type")
        fileContentType = jResp.StringOf("members[i].fileObjects[j].file.contentType")
        fileDescription = jResp.StringOf("members[i].fileObjects[j].file.description")
        fileCreatedAt = jResp.StringOf("members[i].fileObjects[j].file.createdAt")
        fileUpdatedAt = jResp.StringOf("members[i].fileObjects[j].file.updatedAt")
        fileSha256 = jResp.StringOf("members[i].fileObjects[j].file.sha256")
        fileWorkspace = jResp.StringOf("members[i].fileObjects[j].file.workspace")
        fileCreator = jResp.StringOf("members[i].fileObjects[j].file.creator")
        fileProtected = jResp.BoolOf("members[i].fileObjects[j].file.protected")
        filePosition = jResp.IntOf("members[i].fileObjects[j].file.position")
        fileParent = jResp.StringOf("members[i].fileObjects[j].file.parent")
        page = jResp.IntOf("members[i].fileObjects[j].page")
        position_str = jResp.StringOf("members[i].fileObjects[j].position")
        fieldName = jResp.StringOf("members[i].fileObjects[j].fieldName")
        mention = jResp.StringOf("members[i].fileObjects[j].mention")
        mention2 = jResp.StringOf("members[i].fileObjects[j].mention2")
        createdAt = jResp.StringOf("members[i].fileObjects[j].createdAt")
        updatedAt = jResp.StringOf("members[i].fileObjects[j].updatedAt")
        parent = jResp.StringOf("members[i].fileObjects[j].parent")
        reason = jResp.StringOf("members[i].fileObjects[j].reason")
        k = 0
        count_k = jResp.SizeOfArray("members[i].fileObjects[j].file.metadata")
        Do While k < count_k
            jResp.K = k
            k = k + 1
        Loop
        j = j + 1
    Loop
    j = 0
    count_j = jResp.SizeOfArray("members[i].notificationsEmail")
    Do While j < count_j
        jResp.J = j
        j = j + 1
    Loop
    j = 0
    count_j = jResp.SizeOfArray("members[i].operationCustomModes")
    Do While j < count_j
        jResp.J = j
        strVal = jResp.StringOf("members[i].operationCustomModes[j]")
        j = j + 1
    Loop
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("subscribers")
Do While i < count_i
    jResp.I = i
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("files")
Do While i < count_i
    jResp.I = i
    id = jResp.StringOf("files[i].id")
    name = jResp.StringOf("files[i].name")
    v_type = jResp.StringOf("files[i].type")
    contentType = jResp.StringOf("files[i].contentType")
    description = jResp.StringOf("files[i].description")
    createdAt = jResp.StringOf("files[i].createdAt")
    updatedAt = jResp.StringOf("files[i].updatedAt")
    sha256 = jResp.StringOf("files[i].sha256")
    workspace = jResp.StringOf("files[i].workspace")
    creator = jResp.StringOf("files[i].creator")
    v_protected = jResp.BoolOf("files[i].protected")
    position = jResp.IntOf("files[i].position")
    parent = jResp.StringOf("files[i].parent")
    j = 0
    count_j = jResp.SizeOfArray("files[i].metadata")
    Do While j < count_j
        jResp.J = j
        j = j + 1
    Loop
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("archiveMetadata")
Do While i < count_i
    jResp.I = i
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("fields")
Do While i < count_i
    jResp.I = i
    i = i + 1
Loop
i = 0
count_i = jResp.SizeOfArray("permissions")
Do While i < count_i
    jResp.I = i
    i = i + 1
Loop

%>
</body>
</html>