edencorbin
edencorbin

Reputation: 2939

DocuSign: Successful envelope but status is not "sent"

I'm using node and I make an envelope with env.status = "sent", I then hit the envelopesApi.createEnvelope with said envelope. The response back says its successful but the status is "created" and no email is sent for signature to the specified signer. What am I missing? Here is the full response

{

"envelopeId": "205ed07d-8094-4031-a334-7159e1bd0f34",

"status": "created",

"statusDateTime": "2023-01-05T06:19:17.9670000Z",

"uri": "/envelopes/205ed07d-8094-4031-a334-7159e1bd0f34"

}

Also note, the simple template has a signer role on it, and a signature specified, in my code I tried both adding the signer with TemplateRole.constructFromObject, and env.templateRoles = [signer1] and also removing this code (as its specified online in the UI), both just result in status created, not sent.

Heres all the relevant code:

  async sendEnvelopeFromTemplate(accessToken: string): Promise<any>{
    // Data for this method
    // args.basePath
    // args.accessToken
    // args.accountId
    const basePath = docusign_account_base_uri + '/restapi'

    let dsApiClient = new docusign.ApiClient();
    dsApiClient.setBasePath(basePath);
    dsApiClient.addDefaultHeader("Authorization", "Bearer " + accessToken);
    let envelopesApi = new docusign.EnvelopesApi(dsApiClient);

    // Step 1. Make the envelope request body
    let envelope = this.makeEnvelope();

    // Step 2. call Envelopes::create API method
    // Exceptions will be caught by the calling function
    try{
      let results = await envelopesApi.createEnvelope(docusign_api_account_id, {
        envelopeDefinition: envelope,
      });
  
      return results;
    }
    catch(e){
      console.log("ERROR")
      console.log(e)
    }

  };

  async makeEnvelope() {

    const args = {
      signerEmail: 'REDACTED',
      signerName: 'REDACTED',
      templateId: 'REDACTED'
    }
  
    // create the envelope definition
    let env = new docusign.EnvelopeDefinition();
    env.templateId = args.templateId;
  
    // Create template role elements to connect the signer and cc recipients
    // to the template
    // We're setting the parameters via the object creation
    let signer1 = docusign.TemplateRole.constructFromObject({
      email: args.signerEmail,
      name: args.signerName,
      roleName: "signer",
    });

  
    // Add the TemplateRole objects to the envelope object
    env.templateRoles = [signer1];
    env.status = "sent"; // We want the envelope to be sent
  
    return env;
  }

Upvotes: 0

Views: 484

Answers (3)

edencorbin
edencorbin

Reputation: 2939

Was a simple async issue, I did not await the call to makeEnvelope, I was getting a success back, but the sent status was not being set, as soon as I awaited it the problem went away. Thanks for the other helpful info.

let envelope = this.makeEnvelope();

needed to be

let envelope = await this.makeEnvelope();

Upvotes: 0

WTP
WTP

Reputation: 700

Do you have a complete template, i.e. does the template contain a document? An envelope cannot be sent if a) there isn's at least one document in the envelope, b) there must be at least one recipient.

There could be other side issues, such as not allowing "free-form signing" (no tabs specified for the signer) and the envelope has no tabs. But I'm going to assume your account is set up as default so that isn't an issue here. Also assuming you assigned a tab to the role in your template.

Upvotes: 1

Larry K
Larry K

Reputation: 49114

You need to set status to "sent" when you create the envelope.

Otherwise (your situation), your envelope is in status "created" which is equivalent to a draft envelope.

Upvotes: 1

Related Questions