Personnaliser l'email d'invitation à signer
Changer l'objet de l'invitation, y ajouter un mot pour le signataire, ou lui donner votre propre modèle d'email — pour un envoi, ou une fois pour toutes dans un modèle de parcours.
Quand vient son tour, chaque signataire reçoit une invitation par email, avec le lien de sa page. Sans réglage, c'est le modèle d'email de Docage « Invitation à faire une action (participant) » :
- objet : « Atelier Lumière vous invite à signer le parcours Contrat de prestation » ;
- corps : « Bonjour Camille Martin, », la place d'un mot pour le signataire, le nom du parcours et de qui l'envoie, le bouton Accéder au parcours, et le rappel que ce lien lui est personnel.
L'email part sous la marque de l'organisation du parcours, et se traduit dans la langue du signataire.
Où se règle l'invitation
Les emails d'un parcours se règlent dans sa propriété MailSettings, par famille d'actions — jamais par participant : tous les
signataires reçoivent la même invitation. Celle des signataires est MailSettings.SignatureMemberMailSettings.Invitation :
{
"MailSettings": {
"SignatureMemberMailSettings": {
"Invitation": {
"MailId": "abababab-0000-4000-8000-000000000007",
"MailSubject": "{{Recipient_FirstName}}, votre contrat « {{Transaction_Name}} » est prêt à signer",
"MailNote": "Comme convenu, voici le contrat de prestation.\nMerci de le signer avant vendredi."
}
}
}
}| Propriété | Ce qu'elle règle |
|---|---|
MailId |
Le modèle d'email ; vide, celui de Docage. Un modèle de votre organisation, ou un modèle de Docage. |
MailSubject |
L'objet, qui remplace celui du modèle ; vide, celui du modèle. |
MailNote |
Un mot pour le signataire, posé à la place que le modèle lui réserve, sous la formule d'appel. |
Les autres emails se règlent de même : Reminder (le rappel) et Completion (la signature faite) dans
SignatureMemberMailSettings ; la validation dans ValidationMemberMailSettings, le formulaire dans FormMemberMailSettings ; la
fin, le refus, l'annulation et l'expiration du parcours dans TransactionMemberMailSettings. Les réglages par défaut :
GET https://staging-api.docage.com/Transactions/DefaultMailSettings.
1Un objet et un mot, pour un envoi sans modèle de parcours
Dans la clé Transaction de la création, ou dans le corps de POST https://staging-api.docage.com/Transactions :
curl -X POST "https://staging-api.docage.com/Transactions/CreateFullTransaction" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9…" \
-F 'Transaction={"Name":"Contrat de prestation","TransactionFiles":[{"FriendlyName":"Contrat","Name":"Contrat de prestation"}],"TransactionMembers":[{"FriendlyName":"Client","MemberRole":0,"SignMode":1}],"MailSettings":{"SignatureMemberMailSettings":{"Invitation":{"MailSubject":"{{Recipient_FirstName}}, votre contrat est prêt à signer","MailNote":"Comme convenu, voici le contrat de prestation.\nMerci de le signer avant vendredi."}}}}' \
-F "Client=00000000-0000-4000-8000-000000000201" \
-F "Contrat=@contrat-atelier-lumiere.pdf;type=application/pdf"Ce que vous envoyez est gardé ; ce que vous laissez vide reprend les réglages de Docage.
- La note est du texte : ses sauts de ligne sont gardés, ses champs (
{{Recipient_FirstName}}…) remplis, et elle est traduite avec le reste de l'email. - L'objet accepte les mêmes champs. Un objet vide n'impose rien : l'email garde celui de son modèle.
2Avec un modèle de parcours : MailSettings remplace tout
Avec un TemplateId, une clé MailSettings dans Transaction remplace l'objet entier du modèle : les autres emails que le
modèle avait personnalisés reviennent à ceux de Docage. Pour ne changer que l'invitation :
- créez le parcours en brouillon (
?launchTransaction=false) ; - lisez-le (
GET https://staging-api.docage.com/Transactions/{id}) et modifiezMailSettings.SignatureMemberMailSettings.Invitation; - renvoyez l'objet
MailSettingscomplet :
PUT https://staging-api.docage.com/Transactions/cccccccc-0000-4000-8000-000000000003
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9…
Content-Type: application/json
{ "MailSettings": { "SignatureMemberMailSettings": { "Invitation": { "MailId": "…", "MailSubject": "…", "MailNote": "…" }, "Reminder": { … }, "Start": { … }, "Completion": { … } }, "TransactionMemberMailSettings": { … }, … } }- lancez-le :
POST https://staging-api.docage.com/Transactions/LaunchTransaction/{id}.
Attention
Un PUT remplace l'objet entier, et ne complète rien : un email dont l'entrée manque perd son modèle, et ne part plus, sans erreur.
Renvoyez toujours l'objet que vous avez lu, modifié.
3Votre propre modèle d'email
Un modèle d'email se crée par l'API, en HTML :
POST https://staging-api.docage.com/Mails
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9…
Content-Type: application/json
{
"Name": "Invitation à signer – Atelier Lumière",
"IsTemplate": true,
"DefaultMailType": 1,
"Language": 1,
"Subject": "{{Recipient_FirstName}}, votre contrat « {{Transaction_Name}} » est prêt à signer",
"BodyType": 2,
"BodyHtml": "<p>Bonjour {{Recipient_FirstName}},</p><p>{{Transaction_MailNote}}{{Organization_Name}} vous invite à {{Action_ToDoFullExpression}}.</p><p><a href=\"{{Link_Action}}\">Ouvrir le document</a></p><p>Ce lien vous est personnel : ne le transférez pas.</p>{{MessageSignature}}"
}curl -X POST "https://staging-api.docage.com/Mails" \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9…" \
-H "Content-Type: application/json" \
-d '{
"Name": "Invitation à signer – Atelier Lumière",
"IsTemplate": true,
"DefaultMailType": 1,
"Language": 1,
"Subject": "{{Recipient_FirstName}}, votre contrat « {{Transaction_Name}} » est prêt à signer",
"BodyType": 2,
"BodyHtml": "<p>Bonjour {{Recipient_FirstName}},</p><p>{{Transaction_MailNote}}{{Organization_Name}} vous invite à {{Action_ToDoFullExpression}}.</p><p><a href=\"{{Link_Action}}\">Ouvrir le document</a></p><p>Ce lien vous est personnel : ne le transférez pas.</p>{{MessageSignature}}"
}'using HttpClient client = new();
using HttpRequestMessage request = new(HttpMethod.Post, "https://staging-api.docage.com/Mails");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
request.Content = new StringContent("""
{
"Name": "Invitation à signer – Atelier Lumière",
"IsTemplate": true,
"DefaultMailType": 1,
"Language": 1,
"Subject": "{{Recipient_FirstName}}, votre contrat « {{Transaction_Name}} » est prêt à signer",
"BodyType": 2,
"BodyHtml": "<p>Bonjour {{Recipient_FirstName}},</p><p>{{Transaction_MailNote}}{{Organization_Name}} vous invite à {{Action_ToDoFullExpression}}.</p><p><a href=\"{{Link_Action}}\">Ouvrir le document</a></p><p>Ce lien vous est personnel : ne le transférez pas.</p>{{MessageSignature}}"
}
""", Encoding.UTF8, "application/json");
using HttpResponseMessage response = await client.SendAsync(request);
string result = await response.Content.ReadAsStringAsync();
if (!response.IsSuccessStatusCode)
throw new HttpRequestException(result);const response = await fetch("https://staging-api.docage.com/Mails", {
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"Name": "Invitation à signer – Atelier Lumière",
"IsTemplate": true,
"DefaultMailType": 1,
"Language": 1,
"Subject": "{{Recipient_FirstName}}, votre contrat « {{Transaction_Name}} » est prêt à signer",
"BodyType": 2,
"BodyHtml": "<p>Bonjour {{Recipient_FirstName}},</p><p>{{Transaction_MailNote}}{{Organization_Name}} vous invite à {{Action_ToDoFullExpression}}.</p><p><a href=\"{{Link_Action}}\">Ouvrir le document</a></p><p>Ce lien vous est personnel : ne le transférez pas.</p>{{MessageSignature}}"
})
});
const text = await response.text();
if (!response.ok) throw new Error(text);
const result = text ? JSON.parse(text) : null;La réponse est l'identifiant du modèle. BodyType 2 est un corps HTML écrit à la main ; Language la langue dans laquelle il est
écrit (1 français, 0 anglais) ; DefaultMailType 1 le range parmi les invitations.
Pour garder la mise en page de Docage, partez plutôt d'une copie de son modèle : son identifiant est le MailId de
SignatureMemberMailSettings.Invitation dans GET https://staging-api.docage.com/Transactions/DefaultMailSettings ; POST https://staging-api.docage.com/Mails/Duplicate, avec la
liste ["<identifiant>"], en fait une copie à votre organisation, que PUT https://staging-api.docage.com/Mails/{id} modifie. Le modèle de Docage lui-même ne
se modifie pas.
Désignez ensuite le modèle dans Invitation :
{ "Invitation": { "MailId": "abababab-0000-4000-8000-000000000007", "MailSubject": "", "MailNote": "Merci de le signer avant vendredi." } }Les champs d'une invitation
| Champ | Ce qu'il donne |
|---|---|
{{Recipient_FirstName}}, {{Recipient_LastName}}, {{Recipient_Name}} |
Le signataire. |
{{Transaction_Name}} |
Le nom du parcours. |
{{Action_ToDoFullExpression}} |
Ce qu'il doit faire : « signer le parcours Contrat de prestation ». |
{{Link_Action}} |
L'adresse de sa page : à mettre dans un lien ou un bouton. |
{{Transaction_MailNote}} |
La place de la note. |
{{Sender_Name}} |
Qui a créé le parcours — l'utilisateur de l'API. |
{{Organization_Name}}, {{Organization_BrandName}} |
Votre organisation, et le nom de la marque sous laquelle elle est servie. |
{{TransactionMember[Client]_FirstName}} |
Un participant désigné par son identifiant convivial. |
{{MessageSignature}} |
La signature de message de qui a créé le parcours. |
4Une fois pour toutes, dans un modèle de parcours
Préparez l'invitation dans le modèle de parcours — dans l'application, onglet Emails, ou par PUT https://staging-api.docage.com/Transactions/{id} sur le
modèle, avec l'objet MailSettings complet. Chaque parcours créé depuis ce modèle en hérite, tant que sa création n'envoie pas
de MailSettings. C'est la seule façon de changer l'invitation pour tous les envois : aucun réglage de l'organisation ne remplace le
modèle de Docage.
5Vérifier avant d'envoyer
POST https://staging-api.docage.com/Transactions/MailPreview, avecMailId,MailType(1, l'invitation) etActionType(3, la signature), rend le modèle et des valeurs d'exemple pour ses champs ;HasNoteSlotdit s'il a la place de la note.- Pour recevoir l'email lui-même, envoyez-vous un parcours d'essai (
"IsTest": true), où vous êtes le signataire : il ne consomme rien.
Les pièges
- Un
MailIdsansMailSubjectreprend l'objet de Docage, dont les champs n'existent pas dans votre modèle : ils resteraient visibles. Donnez votre objet, ou""pour garder celui de votre modèle. - Sans la place de la note (
{{Transaction_MailNote}}), votre modèle ignoreMailNote, sans erreur. - Un
MailIdqui n'est pas un modèle que vous voyez, de votre organisation ou de Docage, est refusé : « Ce modèle de message n'existe pas, ou vous n'y avez pas accès. » —422surPOST https://staging-api.docage.com/TransactionsetPUT https://staging-api.docage.com/Transactions/{id},400sur la création complète. La même règle vaut pour le SMS et le message WhatsApp du code de sécurité (SecurityCodeSms,SecurityCodeWhatsApp). Le modèle d'email qu'un modèle de parcours désigne déjà n'est pas jugé de nouveau. - Le lien du signataire n'existe que dans son email : n'éteignez pas l'invitation (
NotifySignatureInvitationByMailàfalse) si vous ne lui donnez pas accès autrement. - Un champ qui ne se remplit pas reste écrit dans l'email : relisez l'aperçu.
- Ne posez aucun destinataire « À » sur le modèle : le signataire l'est ; une copie (Cc, Cci) du modèle part avec chaque invitation.
- Les anciennes propriétés
InvitationEmailSubject,InvitationEmailBody,ReminderEmailSubject… sont encore acceptées, mais plus aucun envoi ne les lit ;MailBody, l'ancien réglage qui remplaçait tout le corps, est à éviter. - L'email du code de sécurité, envoyé au moment de signer, n'est pas un modèle : son texte est fixe.