Add Offer Letter eSign to Candidate Tracking

"Add Offer Letter eSign to Candidate Tracking" header image

Nowadays recruiters have access to applicant tracking systems (ATS) that simplify the process of candidate tracking and ensures that no step of the way is missed. Should you find yourself needing to build out an ATS that can effectively move candidates through the hiring process, you are likely familiarizing yourself with the hurdles and gaps that many recruiters experience daily—manually sending and tracking documents or redundantly filling out candidate data. By implementing an eSignature flow into the process using the HelloSign API, recruiters can experience a seamless end-to-end recruitment workflow that eliminates human error and reduces manual document management.


In this post we’ll demonstrate how the HelloSign API can automate the task of issuing candidate offer letters in recruitment workflows through scaling document creation and enabling pre-filled data fields.

Automate Scaleable eSignature Doc Creation

First, let's look at how to use HelloSign templates to create a signable document online. Using either the HelloSign web app (or embedded templates), a recruiter can create a template by uploading a document, specifying the roles for the signer, and placing fields. A job offer form might contain three roles: Recruiter, Client, and Candidate.

Screenshot of HS template preparation page
Screenshot of HS template preparation page

The fields for each role are placed on the document and can be either filled in by parties during signing or pre-filled with existing data available at the start of the signature request.


Let’s assume that the offer letter template have already been created for this example. You might start by parsing a list of templates by calling the List Templates (/template/list) endpoint using the HelloSign Python SDK.

  
    client = HSClient(api_key='YOUR_API_KEY')
    client.get_template_list(page=1)
    // your own business logic to find a specific template
  

Parse through the resulting template objects and grab the `template_id`. That parameter will allow you to reference that specific template when calling the API. Now you can send your offer letter by calling the Send Signature Request With Template (/signature_request/send_with_template) endpoint and passing in the template id and information about the parties signing.

  
    client.send_signature_request_with_template(
        test_mode=True,
        template_id='YOUR_TEMPLATE_ID',
        title='Your offer letter!',
        message='Please review the offer and sign. Let me know if you have any questions.',
        signers=[
            { 'role_name': 'Recruiter', 'email_address': 'cruz@example.com', 'name': 'Cruz' },
            { 'role_name': 'Client', 'email_address': 'amal@example.com', 'name': 'Amal' },
            { 'role_name': 'Candidate', 'email_address': 'tristan@example.com', 'name': 'Tristan' }
        ]
    )
  

We call this a “non-embedded” signature flow. Once this call is sent, the user will get an email prompting them to click a button and complete the signing on a HelloSign page. If you’d prefer candidates sign offers directly in your app, then you’d use embedded signing.


In this scenario, the different signers might still need to provide some information about themselves such as a phone number or address. However, we can make that signing experience more delightful for them by filling out some of those fields in advance using data we already have. This also eliminates a vector for user error.

Pre-fill Data To Ensure Accurate Client Information

Using the HelloSign API, you can automatically pre-fill fields for each for each signer with data you already have in your AST app. These fields need to be configured as “merge fields” when the template is created and then passed back with the signature request using the `custom_fields` parameter.


When creating the template, you’ll select “Sender” on the Signers drop down and place a textbox in the document. Give the merge field a unique name that you’ll reference when making the signature request.

Setting a "Merge field" as a "Sender" to pre-fill data during signing
Setting a "Merge field" as a "Sender" to pre-fill data during signing

Now, when you send the offer letter using the Send Signature Request With Template (/signature_request/send_with_template) endpoint, you include a new parameter called `custom_fields`. As long as the key in `custom_fields` matches a specific merge field, then the corresponding textbox will be pre-filled with that value.

  
    client.send_signature_request_with_template(
        test_mode=True,
        template_id='YOUR_TEMPLATE_ID',
        title='Your offer letter!',
        message='Please review the offer and sign. Let me know if you have any questions.',
        signers=[
            { 'role_name': 'Recruiter', 'email_address': 'joe@example.com', 'name': 'Joe' },
            { 'role_name': 'Client', 'email_address': 'jack@example.com', 'name': 'Jack' },
            { 'role_name': 'Candidate', 'email_address': 'jill@example.com', 'name': 'Jill' }
        ],
        custom_fields=[{'Candidate Name': 'Jill Livingstone'}]
    )
  

Here, you can see that we passed the candidates name back so they don’t have to fill it out. In the real world, your AST app would likely pre-fill a lot more data! Such as length of job, amount of pay, and any other details that are already available from the AST when the signature request is created for the offer letter.

There are two main benefits of using `custom_fields`:

  • A smoother signing experience — the signer doesn’t waste time filling out data you already have about them
  • Correctness — using your AST or other system as the source of truth eliminates a vector for human error

Canceling Signature Requests

Once the offer letter signature request is sent to a candidate, there are a couple different paths that could be taken.


The candidate could accept the position and sign the document! In this scenario, HelloSign would send an email notification once the document is signed. You could also use HelloSign’s webhooks, which are called events and callbacks, to trigger a process that updates the candidates status in the AST software.


Alternatively, the candidate could decline the position. If that happens, the recruiter would need to update the candidate's status with in the AST software. You could use that event to cancel the signature request through the HelloSign API using the Cancel Incomplete Signature Request (/signature_request/cancel/:signature_request_id) endpoint.

  
    client.cancel_signature_request(“Your_Signature_Request_ID”)
  

Regardless of the outcome of a specific job offer, it's always good to build out functionality that can help identify a specific signature request later when you need it. That can be accomplished using the List Signature Request (/signature_request/list) endpoint in combination with search.


Enhancing Candidate Tracking with Offer Letter eSign

Adding eSignature capabilities to an applicant tracking system is a huge value add for your users. It can help eliminate human error, reduce manual work, and keep recruiters focused on recruiting instead of chasing down paperwork. The HelloSign API is a fantastic tool for implementing this feature because it’s quick to implement and has powerful features to create a seamless eSignature experience for your users. Find out more on the HelloSign developer portal.

Ready to integrate signatures into your app or website?

Let us help you build a custom API plan that fits your unique business needs.

Get news, insights and posts directly in your inbox

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form
Oops! Something went wrong while submitting the form.