How to Send Document from Template via Email

This article guides you on how to send a document from template and notify signer via email using the BoldSign API. If you want to send the same set of documents repeatedly, you can create a template with the document and use the template to send out for signature.

  1. Create a template in BoldSign's web app. See How to Create a Template in the BoldSign Web App for instructions.
  2. The default delivery option will be Email; make sure to use the same delivery option while creating the template.

Below are example codes for sending a document using a template to the signer via email:

curl -X 'POST' \ 'https://api.boldsign.com/v1/template/send?templateId=b8085b47-xxxx-47f8-xxxx-cb0acfe2d916' \
        -H 'accept: application/json' \
        -H 'X-API-KEY: {your API key}' \
        -H 'Content-Type: application/json;odata.metadata=minimal;odata.streaming=true' \
        -d '{
        "title": "Invitation form",
        "message": "Kindly review and sign this.",
        "roles": [
            {
                "roleIndex": 1,
                "signerName": "David",
                "signerEmail": "[email protected]",
                "signerType": "Signer",
                "deliveryMode": "Email",
                "signerRole": "Landlord",
                "formFields": [
                    {
                        "id": "SignField",
                        "fieldType": "Signature",
                        "pageNumber": 1,
                        "bounds": {
                        "x": 100,
                        "y": 100,
                        "width": 100,
                        "height": 50
                        },
                        "isRequired": true
                    }
                ],      
                "locale": "EN"
            }
        ]
    }' \

var apiClient = new ApiClient("https://api.boldsign.com", "{Your API Key}");
var templateClient = new TemplateClient(apiClient);

var signatureField = new FormField(
    id: "sign",
    isRequired: true,
    type: FieldType.Signature,
    pageNumber: 1,
    bounds: new Rectangle(x: 100, y: 100, width: 100, height: 50));

var formFieldCollections = new List<FormField>()
{
    signatureField
};

var templateRole = new Roles(
    roleSignerIndex:1,
    roleSignerName:"David",
    roleSignerEmailAddress:"[email protected]",
    formFields: formFieldCollections,
    locale: Locales.EN);

templateRole.DeliveryMode = DeliveryMode.Email;

var roles = new List<Roles>
{
    templateRole,
};



var sendForSignFromTemplate = new SendForSignFromTemplate()
{
    TemplateId = "4fe17627-xxxx-41ff-xxxx-0af80fd77740",
    Roles = roles
};

var documentCreated = await templateClient.SendUsingTemplateAsync(sendForSignFromTemplate).ConfigureAwait(false);
import boldsign

configuration = boldsign.Configuration(host = "https://api.boldsign.com", api_key = "YOUR_API_KEY")

with boldsign.ApiClient(configuration) as api_client:

    template_api = boldsign.TemplateApi(api_client)

    form_fields = [
        boldsign.FormField(
            id = "SignField",
            fieldType = "Signature",
            pageNumber = 1,
            font = "Helvetica",
            bounds = boldsign.Rectangle(x = 100, y = 100, width = 100, height = 50),
            isRequired = True
        ),
    ]

    role = boldsign.Role(
        role_index = 50,
        signer_name = "David",
        signer_order = 1,
        signer_email = "[email protected]",
        private_message = "Please check and sign the document.",
        signerType = 'Signer',
        signerRole = 'Manager',
        formFields = form_fields,
        deliveryMode = "Email",
        locale = "EN"
    )

    template_id = "YOUR_TEMPLATE_ID"

    send_for_sign_from_template = boldsign.SendForSignFromTemplateForm(
        files = ["YOUR_FILE_PATH"],
        title = "Invitation form",
        message = "Kindly review and sign this.",
        roles = [role],
        labels = ["Invitation"],
        reminderSettings = boldsign.ReminderSettings(
            reminderDays = 3,
            reminderCount = 5,
            enableAutoReminder = False
        ),
        expiryDays = 180,
        expiryDateType = "Days",
        expiryValue = 60,
        disableExpiryAlert = True,
        enablePrintAndSign = True,
        enableReassign = True,
        enableSigningOrder = True,
        roleRemovalIndices = [1,2]
    )

    document_created = template_api.send_using_template(template_id, send_for_sign_from_template)
<?php require_once "vendor/autoload.php";

use BoldSign\Configuration;
use BoldSign\Api\TemplateApi;
use BoldSign\Model\{FormField, Rectangle, Role, SendForSignFromTemplateForm, FileInfo, ReminderSettings};

$config = new Configuration();
$config->setHost("https://api.boldsign.com");
$config->setApiKey('YOUR_API_KEY');

$template_api = new TemplateApi($config);

$form_field = new FormField();
$form_field->setId('SignField');
$form_field->setFieldType('Signature');
$form_field->setPageNumber(1);
$form_field->setFont('Helvetica');
$form_field->setIsRequired(true);
$bounds = new Rectangle([100, 100, 100, 50]);
$form_field->setBounds($bounds);

$role = new Role();
$role->setRoleIndex(50);
$role->setSignerName('David');
$role->setSignerEmail('[email protected]');
$role->setSignerType("Signer");
$role->setSignerOrder(1);
$role->setPrivateMessage('Please check and sign the document.');
$role->setDeliveryMode('Email');
$role->setSignerRole('Manager');
$role->setFormFields([$form_field]);
$role->setLocale('EN');

$send_for_sign_from_template = new SendForSignFromTemplateForm();

$files = new FileInfo();
$files = 'YOUR_FILE_PATH';
$send_for_sign_from_template->setFiles([$files]);

$reminder_settings = new ReminderSettings();
$reminder_settings->setReminderDays(3);
$reminder_settings->setReminderCount(5);
$reminder_settings->setEnableAutoReminder(false);
$send_for_sign_from_template->setReminderSettings($reminder_settings);
$send_for_sign_from_template->setEnableReassign(true);
$send_for_sign_from_template->setTitle('Invitation form');
$send_for_sign_from_template->setMessage('Kindly review and sign this.');
$send_for_sign_from_template->setRoles([$role]);
$send_for_sign_from_template->setLabels('Invitation');
$send_for_sign_from_template->setEnablePrintAndSign(true);
$send_for_sign_from_template->setExpiryDateType('Days'); 
$send_for_sign_from_template->setExpiryValue(10);
$send_for_sign_from_template->setDisableExpiryAlert(true);
$send_for_sign_from_template->setEnableSigningOrder(true);
$send_for_sign_from_template->setRoleRemovalIndices([1, 2]);

$document_created = $template_api->sendUsingTemplate('YOUR_TEMPLATE_ID', $send_for_sign_from_template);
ApiClient client = Configuration.getDefaultApiClient();
client.setBasePath("https://api.boldsign.com"); 
client.setApiKey("YOUR_API_KEY");
        
TemplateApi templateApi = new TemplateApi(client);

FormField signatureField = new FormField();
signatureField.setId("SignField");
signatureField.setFieldType(FormField.FieldTypeEnum.SIGNATURE);
signatureField.setPageNumber(1);
signatureField.setFont(FormField.FontEnum.HELVETICA);
signatureField.setIsRequired(true);
Rectangle bounds = new Rectangle().x(100f).y(100f).width(100f).height(50f);
signatureField.setBounds(bounds);

Role role = new Role();
role.setRoleIndex(50);
role.setSignerName("Richard");
role.setSignerEmail("[email protected]");
role.setSignerOrder(1);
role.setSignerType(Role.SignerTypeEnum.SIGNER);
role.setPrivateMessage("Please check and sign the document.");
role.setSignerRole("Manager");
role.setLocale(Role.LocaleEnum.EN);
role.setDeliveryMode(Role.DeliveryModeEnum.EMAIL);
role.setFormFields(Arrays.asList(signatureField));

SendForSignFromTemplateForm sendForSignFromTemplate = new SendForSignFromTemplateForm();

File file = new File("YOUR_FILE_PATH");  
sendForSignFromTemplate.setFiles(Arrays.asList(file));

ReminderSettings reminderSettings = new ReminderSettings();
reminderSettings.setReminderDays(3);
reminderSettings.setReminderCount(5);
reminderSettings.setEnableAutoReminder(false);
sendForSignFromTemplate.setReminderSettings(reminderSettings);
sendForSignFromTemplate.setDisableExpiryAlert(true);
sendForSignFromTemplate.setEnableReassign(true);
sendForSignFromTemplate.setMessage("Please sign this.");
sendForSignFromTemplate.setRoles(Arrays.asList(role));
sendForSignFromTemplate.setLabels(Arrays.asList("Invitation"));
sendForSignFromTemplate.setEnablePrintAndSign(true);
sendForSignFromTemplate.setExpiryDateType(SendForSignFromTemplateForm.ExpiryDateTypeEnum.DAYS);
sendForSignFromTemplate.setExpiryValue(10L);
sendForSignFromTemplate.setTitle("Document SDK API");
sendForSignFromTemplate.setEnableSigningOrder(true);
sendForSignFromTemplate.setRoleRemovalIndices(Arrays.asList(1, 2));
			
DocumentCreated documentCreated = templateApi.sendUsingTemplate("YOUR_TEMPLATE_ID", sendForSignFromTemplate);
import { TemplateApi, FormField, Rectangle, Role, SendForSignFromTemplateForm, ReminderSettings  } from "boldsign";
import * as fs from 'fs';

const templateApi = new TemplateApi("https://api.boldsign.com");
templateApi.setApiKey("YOUR_API_KEY");

const signatureField = new FormField();
signatureField.id = "Sign";
signatureField.fieldType = FormField.FieldTypeEnum.Signature;
signatureField.pageNumber = 1;
signatureField.font = FormField.FontEnum.Helvetica;
signatureField.isRequired = true;
const bounds = { x: 100, y: 50, width: 100, height: 100 } as Rectangle;
signatureField.bounds = bounds;

const role = new Role();
role.roleIndex = 1;
role.signerName = "Richard";
role.signerEmail = "[email protected]";
role.signerOrder = 1;
role.signerType =  Role.SignerTypeEnum.Signer;
role.formFields = [signatureField];
role.privateMessage = "Please check and sign the document.";
role.signerRole = "Manager";
role.locale = Role.LocaleEnum .En;
role.deliveryMode = Role.DeliveryModeEnum.Email;

const files = fs.createReadStream("YOUR_FILE_PATH");

const sendForSignFromTemplate = new SendForSignFromTemplateForm();
sendForSignFromTemplate.roles = [role];
sendForSignFromTemplate.files = [files];
const reminderSettings = new ReminderSettings();
reminderSettings.enableAutoReminder = false;
reminderSettings.reminderCount = 5;
reminderSettings.reminderDays = 3;
sendForSignFromTemplate.reminderSettings = reminderSettings;
sendForSignFromTemplate.disableExpiryAlert = true;
sendForSignFromTemplate.enableReassign = true;
sendForSignFromTemplate.message = "Please sign this.";
sendForSignFromTemplate.labels = ["Invitation"];
sendForSignFromTemplate.enablePrintAndSign = true;
sendForSignFromTemplate.expiryDateType = SendForSignFromTemplateForm.ExpiryDateTypeEnum.Days;
sendForSignFromTemplate.expiryValue = 10;
sendForSignFromTemplate.title = "Document SDK API";
sendForSignFromTemplate.enableSigningOrder = true;
sendForSignFromTemplate.roleRemovalIndices = [1, 2];

const documentCreated = templateApi.sendUsingTemplate("YOUR_TEMPLATE_ID", sendForSignFromTemplate);

In the above example, update the templateId with the ID of the template you created earlier. Update the deliveryMode as Email. Then, update the SignerEmail and SignerName properties with the email and name of the signer you want to send the document to. Also, provide form fields for the document in the formFields array.

After executing the above code, the document will be created, and an email will be sent to the signer. Now, the signer can sign the document by clicking the link in the email.

Email received by the signer after executing the above code

Step 1