<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: BoldSign</title>
    <description>The latest articles on DEV Community by BoldSign (@boldsign).</description>
    <link>https://dev.to/boldsign</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F10590%2Fcf28a4e0-7407-49ac-a974-42dcf3c5246a.jpg</url>
      <title>DEV Community: BoldSign</title>
      <link>https://dev.to/boldsign</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/boldsign"/>
    <language>en</language>
    <item>
      <title>Programmatic Template Editing Using the BoldSign Edit Template API</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Wed, 01 Apr 2026 09:44:55 +0000</pubDate>
      <link>https://dev.to/boldsign/programmatic-template-editing-using-the-boldsign-edit-template-api-1lmg</link>
      <guid>https://dev.to/boldsign/programmatic-template-editing-using-the-boldsign-edit-template-api-1lmg</guid>
      <description>&lt;p&gt;Templates often serve as living configuration in production eSignature workflows. As businesses scale, these templates change frequently, such as adding new approval steps, updated policies, branding refreshes, or additional required fields. When such updates are handled manually through dashboards, templates can drift across environments and introduce inconsistencies that break automated processes.&lt;/p&gt;

&lt;p&gt;The BoldSign Edit Template API solves this by allowing developers to update existing or draft templates programmatically. You can modify metadata, signer roles, and form fields directly from your backend or CI/CD pipelines, keeping templates synchronized with application logic while reducing operational overhead and human error.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why edit templates programmatically
&lt;/h2&gt;

&lt;p&gt;Templates often act as “living configuration” in production workflows. Over time, teams update templates due to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  New approval steps (HR, finance)&lt;/li&gt;
&lt;li&gt;  Policy changes (legal, compliance)&lt;/li&gt;
&lt;li&gt;  Branding refreshes (marketing)&lt;/li&gt;
&lt;li&gt;  New mandatory fields (operations)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If these updates happen manually in the dashboard, templates can drift across environments (sandbox vs production) and become inconsistent. With the Edit Template API, you can apply controlled updates from your backend or CI/CD pipelines, keeping templates synchronized with your application logic while reducing operational overhead and human error.&lt;/p&gt;

&lt;h2&gt;
  
  
  What can you update using the Edit Template API
&lt;/h2&gt;

&lt;p&gt;You can update common template configuration elements, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Template title:&lt;/strong&gt; Rename the template to reflect its updated purpose.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Template description:&lt;/strong&gt; Add or revise the summary of what the template is for.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Document title:&lt;/strong&gt; Change the title that signers see on the document.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Document message:&lt;/strong&gt; Update the message that accompanies the request to sign.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Signer roles:&lt;/strong&gt; Add, remove, reorder, or rename roles (e.g., “Manager”, “Client”).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Form fields:&lt;/strong&gt; Edit or add input elements (signature, text, date, checkbox) bound to pages and roles.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Signing order settings:&lt;/strong&gt; Toggle and adjust signer order behavior when relevant.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What can’t you change using the Edit Template API
&lt;/h2&gt;

&lt;p&gt;The following changes are not supported:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The document file itself (PDF or DOCX): If the underlying document needs to change, you must create a new template.&lt;/li&gt;
&lt;li&gt;  Template ID&lt;/li&gt;
&lt;li&gt;  Sent documents: Edits only apply to templates, not documents already sent for signing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Partial updates vs nested updates
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1) Top-level fields support partial updates&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;For simple changes like title, description, &lt;code&gt;documentTitle&lt;/code&gt;, &lt;code&gt;documentMessage&lt;/code&gt;, or &lt;code&gt;enableSigningOrder&lt;/code&gt;, you can send only the fields you want to change.&lt;/p&gt;

&lt;p&gt;Result: Unspecified top-level fields remain unchanged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Nested objects must be complete (roles and form fields)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you update nested objects (like roles or a role’s formFields), you should assume you are replacing the existing array.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Updating roles&lt;/strong&gt; replaces the entire roles list
Include every role you want to keep, not only the one you changed.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Updating formFields&lt;/strong&gt; for a role replaces that role’s field list
Include the full set you want to keep, preserving field IDs when updating existing fields.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Safe pattern&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Fetch Template Properties&lt;/li&gt;
&lt;li&gt; Edit the JSON in memory&lt;/li&gt;
&lt;li&gt; PUT the updated structure back&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Field naming note:&lt;/strong&gt; &lt;br&gt;&lt;br&gt;
Template Properties responses may not match the exact request field names used by Edit Template in every SDK/version. Don’t copy/paste the Template Properties JSON directly into the Edit Template payload, map fields as needed (especially for form fields).&lt;/p&gt;
&lt;h2&gt;
  
  
  What you’ll need before calling the Edit Template API
&lt;/h2&gt;

&lt;p&gt;Make sure you have the following in place:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A &lt;a href="https://account.boldsign.com/signup?planId=1076&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign account&lt;/a&gt; (sandbox or production).&lt;/li&gt;
&lt;li&gt;  An &lt;a href="https://developers.boldsign.com/authentication/api-key" rel="noopener noreferrer"&gt;API key&lt;/a&gt; (or &lt;a href="https://developers.boldsign.com/authentication/oauth-2-0" rel="noopener noreferrer"&gt;OAuth2 access token&lt;/a&gt;&lt;strong&gt;)&lt;/strong&gt; to call BoldSign APIs over HTTPS.&lt;/li&gt;
&lt;li&gt;  A REST client such as cURL, Postman, or your preferred HTTP library.&lt;/li&gt;
&lt;li&gt;  The TemplateId of the template you want to update.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Authentication headers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use one of the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;API Key&lt;/strong&gt;: X-API-KEY: &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;OAuth2&lt;/strong&gt;: Authorization: Bearer &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  How do you safely edit a template step by step
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Retrieve Template Properties&lt;/strong&gt;
Get the full structure of the template, especially important before nested edits. You can refer to the following link to access the template properties : &lt;a href="https://developers.boldsign.com/template/template-details" rel="noopener noreferrer"&gt;Get Template Properties&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Plan minimal changes&lt;/strong&gt;
Decide whether a top-level partial update is enough (e.g., title only) or whether you must update roles/fields.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Prepare the payload&lt;/strong&gt; 
For nested edits, start from fetched JSON, modify only what’s needed, and keep unchanged roles/fields intact. &lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Send the update&lt;/strong&gt;
PUT /v1/template/edit?templateId= with your chosen auth header.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Verify&lt;/strong&gt;
Fetch Template Properties again or run a &lt;a href="https://account.boldsign.com/signup?planId=1076&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;sandbox&lt;/a&gt; send to confirm behavior.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  How do you update only the template title (top-level partial update)
&lt;/h2&gt;

&lt;p&gt;When you only need to change the template title, send just the title field. Everything else remains unchanged.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Below is an example code snippet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    curl &lt;span class="nt"&gt;-X&lt;/span&gt; &lt;span class="s1"&gt;'PUT'&lt;/span&gt; &lt;span class="se"&gt;\ &lt;/span&gt;
      &lt;span class="s1"&gt;'https://api.boldsign.com/v1/template/edit?templateId={YOUR_TEMPLATE_ID}'&lt;/span&gt; &lt;span class="se"&gt;\ &lt;/span&gt;
      &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'accept: */*'&lt;/span&gt; &lt;span class="se"&gt;\ &lt;/span&gt;
      &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'X-API-KEY: YOUR_API_KEY'&lt;/span&gt; &lt;span class="se"&gt;\ &lt;/span&gt;
      &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\ &lt;/span&gt;
      &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{ 
      "title": "Title of the template" 
    }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;c#&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;apiClient&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ApiClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://api.boldsign.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"YOUR_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;templateClient&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;TemplateClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;editTemplateRequest&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;EditTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"YOUR_TEMPLATE_ID"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;Title&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"A new title for template"&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;templateClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;EditTemplateAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;editTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;    &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt; 
    &lt;span class="n"&gt;configuration&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ApiClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;api_client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
        &lt;span class="n"&gt;template_api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;TemplateApi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_client&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
        &lt;span class="n"&gt;edit_template_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;EditTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;    
            &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;A new title for template&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
        &lt;span class="n"&gt;template_api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;edit_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;template_id&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_TEMPLATE_ID&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;edit_template_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;edit_template_request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;     
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PHP&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;    &lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'YOUR_API_KEY'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nv"&gt;$apiInstance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TemplateApi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$config&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nv"&gt;$template_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'YOUR_TEMPLATE_ID'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nv"&gt;$edit_template_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nv"&gt;$edit_template_request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setTitle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Updated Template Title'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nv"&gt;$apiInstance&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;editTemplate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$template_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$edit_template_request&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Java&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nc"&gt;ApiClient&lt;/span&gt; &lt;span class="n"&gt;apiClient&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getDefaultApiClient&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setApiKey&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"YOUR_API_KEY"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="nc"&gt;TemplateApi&lt;/span&gt; &lt;span class="n"&gt;templateApi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TemplateApi&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="nc"&gt;EditTemplateRequest&lt;/span&gt; &lt;span class="n"&gt;editTemplateRequest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditTemplateRequest&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;editTemplateRequest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setTitle&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"A new title for template"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;templateId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"YOUR_TEMPLATE_ID"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;templateApi&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;editTemplate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;templateId&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;editTemplateRequest&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Node js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;TemplateApi&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;boldsign&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;EditTemplateRequest&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;boldsign&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;templateApi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TemplateApi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nx"&gt;templateApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;editTemplateRequest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nx"&gt;editTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Updated Template Title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;templateId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR_TEMPLATE_ID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;templateApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;editTemplate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;templateId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;editTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How do you update roles and form fields (nested update pattern)
&lt;/h2&gt;

&lt;p&gt;Key rule: Include &lt;code&gt;enableSigningOrder&lt;/code&gt; whenever roles are present.&lt;br&gt;&lt;br&gt;
When your request includes roles, always include &lt;code&gt;enableSigningOrder&lt;/code&gt; explicitly (true or false). This ensures signer sequencing is unambiguous.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Recommended approach&lt;/strong&gt; &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Fetch Template Properties&lt;/li&gt;
&lt;li&gt; Modify roles/fields in memory (keep unchanged roles/fields)&lt;/li&gt;
&lt;li&gt; Send the updated roles along with &lt;code&gt;enableSigningOrder&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Below is an example code snippet&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;cURL C# Python PHP Java Node js&lt;/p&gt;

&lt;p&gt;cURL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    curl &lt;span class="nt"&gt;-X&lt;/span&gt; &lt;span class="s1"&gt;'PUT'&lt;/span&gt; &lt;span class="se"&gt;\ &lt;/span&gt;
      &lt;span class="s1"&gt;'https://api.boldsign.com/v1/template/edit?templateId={YOUR_TEMPLATE_ID}'&lt;/span&gt; &lt;span class="se"&gt;\ &lt;/span&gt;
      &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'accept: */*'&lt;/span&gt; &lt;span class="se"&gt;\ &lt;/span&gt;
      &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'X-API-KEY: YOUR_API_KEY'&lt;/span&gt; &lt;span class="se"&gt;\ &lt;/span&gt;
      &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\ &lt;/span&gt;
      &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{ 
      "enableSigningOrder": true, 
      "roles": [ 
        { 
          "name": "Customer", 
          "index": 1, 
          "signerOrder": 1, 
          "defaultSignerName": "Alex", 
          "defaultSignerEmail": "alexgayle@boldsign.dev", 
          "signerType": "Signer", 
          "locale": "EN", 
          "formFields": [ 
            { 
              "id": "Signature1", 
              "fieldType": "Signature", 
              "pageNumber": 1, 
              "bounds": { 
                "x": 100, 
                "y": 100, 
                "width": 200, 
                "height": 20 
              }, 
              "isRequired": true  
            } 
          ] 
        } 
      ] 
    }'&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;C#&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;apiClient&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ApiClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"https://api.boldsign.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"YOUR_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;templateClient&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;TemplateClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;formFields&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"Signature1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;FieldType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Signature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;pageNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;isRequired&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;150&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;templateRoles&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;TemplateRole&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Manager"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;Index&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;DefaultSignerName&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;" Alex"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;DefaultSignerEmail&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"alexgayle@boldsign.dev"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;SignerType&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SignerType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Signer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;FormFields&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;formFields&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;SignerOrder&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;AllowRoleEdit&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;AllowRoleDelete&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;editTemplateRequest&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;EditTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"YOUR_TEMPLATE_ID"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;EnableSigningOrder&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;Roles&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;templateRoles&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;templateClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;EditTemplateAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;editTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;    &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt; 
    &lt;span class="n"&gt;configuration&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;ApiClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;configuration&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;api_client&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; 
        &lt;span class="n"&gt;template_api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;TemplateApi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_client&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
        &lt;span class="n"&gt;form_fields&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; 
            &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; 
                &lt;span class="nb"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Signature1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
                &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sign&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
                &lt;span class="n"&gt;fieldType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Signature&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
                &lt;span class="n"&gt;pageNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
                &lt;span class="n"&gt;font&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Helvetica&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
                &lt;span class="n"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; 
                &lt;span class="n"&gt;isRequired&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt; 
            &lt;span class="p"&gt;)&lt;/span&gt; 
        &lt;span class="p"&gt;]&lt;/span&gt; 
        &lt;span class="n"&gt;role&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;TemplateRole&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; 
            &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
            &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Manager&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
            &lt;span class="n"&gt;defaultSignerName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Alex Gayle&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
            &lt;span class="n"&gt;defaultSignerEmail&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;alexgayle@boldsign.dev&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
            &lt;span class="n"&gt;signerType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Signer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
            &lt;span class="n"&gt;formFields&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;form_fields&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
        &lt;span class="p"&gt;)&lt;/span&gt; 
        &lt;span class="n"&gt;edit_template_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;boldsign&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;EditTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;    
            &lt;span class="n"&gt;enableSigningOrder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
            &lt;span class="n"&gt;roles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; 
        &lt;span class="p"&gt;)&lt;/span&gt; 
        &lt;span class="n"&gt;template_api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;edit_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;template_id&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_TEMPLATE_ID&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;edit_template_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;edit_template_request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PHP&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;    &lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'YOUR_API_KEY'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nv"&gt;$apiInstance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TemplateApi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$config&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nv"&gt;$template_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'YOUR_TEMPLATE_ID'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="c1"&gt;// Create form field &lt;/span&gt;
    &lt;span class="nv"&gt;$signatureField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nv"&gt;$signatureField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFieldType&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Signature'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nv"&gt;$signatureField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setPageNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nv"&gt;$bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; 
    &lt;span class="nv"&gt;$signatureField&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setBounds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$bounds&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
    &lt;span class="c1"&gt;// Create role and assign form field &lt;/span&gt;
    &lt;span class="nv"&gt;$role&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TemplateRole&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nv"&gt;$role&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Signer'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nv"&gt;$role&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setDefaultSignerEmail&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'alexgayle@boldsign.dev'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nv"&gt;$role&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setDefaultSignerName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Alex Gayle'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nv"&gt;$role&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setSignerOrder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nv"&gt;$role&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setIndex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nv"&gt;$role&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setFormFields&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nv"&gt;$signatureField&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; 
    &lt;span class="c1"&gt;// Create edit template request &lt;/span&gt;
    &lt;span class="nv"&gt;$edit_template_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nv"&gt;$edit_template_request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setEnableSigningOrder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nv"&gt;$edit_template_request&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;setRoles&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nv"&gt;$role&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; 
    &lt;span class="nv"&gt;$apiInstance&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;editTemplate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$template_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$edit_template_request&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Java&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nc"&gt;ApiClient&lt;/span&gt; &lt;span class="n"&gt;apiClient&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Configuration&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getDefaultApiClient&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setApiKey&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"YOUR_API_KEY"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="nc"&gt;TemplateApi&lt;/span&gt; &lt;span class="n"&gt;templateApi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TemplateApi&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt; &lt;span class="n"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setX&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setY&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setWidth&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setHeight&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt; &lt;span class="n"&gt;formField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;formField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFieldType&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;SIGNATURE&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;formField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setPageNumber&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;formField&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setBounds&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="nc"&gt;TemplateRole&lt;/span&gt; &lt;span class="n"&gt;role&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TemplateRole&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setIndex&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setName&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Manager"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDefaultSignerName&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Alex"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
        &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setDefaultSignerEmail&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"alexgayle@boldsign.dev"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setSignerOrder&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setSignerType&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;TemplateRole&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;SignerTypeEnum&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;SIGNER&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setFormFields&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;formField&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="nc"&gt;EditTemplateRequest&lt;/span&gt; &lt;span class="n"&gt;editTemplateRequest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditTemplateRequest&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;editTemplateRequest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setEnableSigningOrder&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;editTemplateRequest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setRoles&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Arrays&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;asList&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;role&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;templateId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"YOUR_TEMPLATE_ID"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; 
    &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;templateApi&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;editTemplate&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;templateId&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="n"&gt;editTemplateRequest&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Node js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;    &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;TemplateApi&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;EditTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;TemplateRole&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;FormField&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;boldsign&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;templateApi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TemplateApi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nx"&gt;templateApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setApiKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Rectangle&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;formField&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nx"&gt;formField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fieldType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FieldTypeEnum&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;TextBox&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;formField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pageNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;formField&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bounds&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;editTemplateRequest&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;EditTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nx"&gt;editTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;enableSigningOrder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;role&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;TemplateRole&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
    &lt;span class="nx"&gt;role&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;role&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;defaultSignerEmail&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;alexgayle@boldsign.dev&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;role&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;defaultSignerName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Alex&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;role&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Signer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;role&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;signerOrder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="nx"&gt;role&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;formFields&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;formField&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; 
    &lt;span class="nx"&gt;editTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;roles&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;role&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; 
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;templateId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;YOUR_TEMPLATE_ID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;templateApi&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;editTemplate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;templateId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;editTemplateRequest&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Real-world use cases of the Edit Template API
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1) HR offer letters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; A candidate’s role changes from “Developer” to “Engineer” right before sending the offer.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Update the template roles/messages instantly without recreating or editing in the dashboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Sales contracts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; High-value deals require an additional “Legal Reviewer” role.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Add/reorder roles and enforce signing order programmatically for compliance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Operations &amp;amp; compliance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; A new checkbox/date field becomes mandatory across agreements.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Update form fields programmatically across templates to align with policy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4) Marketing agreements&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scenario:&lt;/strong&gt; Campaign names or project titles change frequently.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Solution:&lt;/strong&gt; Update template metadata dynamically so documents remain current and professional.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary: Managing templates with BoldSign APIs
&lt;/h2&gt;

&lt;p&gt;Templates are foundational when your eSignature workflows must evolve with business needs. With the Edit Template API, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Update titles, descriptions, and messages via partial updates&lt;/li&gt;
&lt;li&gt;  Adjust signer roles and form fields via complete nested updates&lt;/li&gt;
&lt;li&gt;  Reduce drift caused by manual edits&lt;/li&gt;
&lt;li&gt;  Keep templates consistent across environments and teams&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://developers.boldsign.com/how-to-guides/edit-a-template-using-API" rel="noopener noreferrer"&gt;Editing templates programmatically&lt;/a&gt; is a smart way to keep eSignature workflows flexible and stable at scale. Use partial updates for top-level changes and the fetch–modify–update pattern for roles and fields to prevent accidental overwrites. With a few API calls, your team can keep templates current, reduce operational burden, and maintain consistency across environments.&lt;/p&gt;

&lt;p&gt;If you’d like to learn more about &lt;a href="https://account.boldsign.com/signup?planId=1076&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign&lt;/a&gt;, leave a comment, book a &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt;, or connect with our support team through the &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;support portal&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/boldsign-collaborative-fields-api/" rel="noopener noreferrer"&gt;BoldSign Collaborative Fields for Accurate Multi‑Signer API Workflows&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/common-signature-api-challenges/" rel="noopener noreferrer"&gt;What Are the Common Challenges When Using Signature APIs in Software Development&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/visual-studio-enterprise-boldsign-growth/" rel="noopener noreferrer"&gt;Select Visual Studio Enterprise Subscribers: Get 12 Months of BoldSign Growth Plan + 50 API Credits&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt; &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>api</category>
      <category>boldsign</category>
      <category>documents</category>
    </item>
    <item>
      <title>Select Visual Studio Enterprise Subscribers: Get 12 Months of BoldSign Growth Plan + 50 API Credits</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Tue, 31 Mar 2026 07:22:47 +0000</pubDate>
      <link>https://dev.to/boldsign/select-visual-studio-enterprise-subscribers-get-12-months-of-boldsign-growth-plan-50-api-credits-57om</link>
      <guid>https://dev.to/boldsign/select-visual-studio-enterprise-subscribers-get-12-months-of-boldsign-growth-plan-50-api-credits-57om</guid>
      <description>&lt;p&gt;Visual Studio Enterprise subscribers now receive one year of the BoldSign Growth plan as part of their subscriber benefits. This gives developers a low-risk way to embed an eSignature solution, automate document workflows, and test production-ready signing software. SaaS teams can launch native signing experiences without upfront subscription costs for 12 months.&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s included in the benefit
&lt;/h2&gt;

&lt;p&gt;When you &lt;a href="https://aka.ms/VSS/ActivateSyncfusion" rel="noopener noreferrer"&gt;activate the BoldSign benefit&lt;/a&gt;, you unlock the full BoldSign Growth Plan along with API credits, which includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Unlimited reusable &lt;a href="https://developers.boldsign.com/template/create-template/?region=us" rel="noopener noreferrer"&gt;templates&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/embedded-request/create-embedded-request-link/?region=us" rel="noopener noreferrer"&gt;Embedded requesting&lt;/a&gt; (send documents from inside your app).&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/embedded-signing/get-embedded-signing-link/?region=us" rel="noopener noreferrer"&gt;Embedded signing&lt;/a&gt; (users sign without leaving your UI).&lt;/li&gt;
&lt;li&gt;  Custom &lt;a href="https://developers.boldsign.com/branding/create-brand/?region=us" rel="noopener noreferrer"&gt;branding&lt;/a&gt; and &lt;a href="https://support.boldsign.com/kb/article/52/configure-email-custom-domain" rel="noopener noreferrer"&gt;custom email domain&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/teams/create-team/?region=us" rel="noopener noreferrer"&gt;Team management&lt;/a&gt; and roles.&lt;/li&gt;
&lt;li&gt;  Full &lt;a href="https://developers.boldsign.com/api-overview/getting-started/?region=us" rel="noopener noreferrer"&gt;API&lt;/a&gt; and &lt;a href="https://developers.boldsign.com/sdks/overview/?region=us" rel="noopener noreferrer"&gt;SDK&lt;/a&gt; access.&lt;/li&gt;
&lt;li&gt;  50 API document credits included.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How do API usage and pricing work?
&lt;/h2&gt;

&lt;p&gt;The 12-month benefit period includes full access to BoldSign:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  First 50 API documents are included.&lt;/li&gt;
&lt;li&gt;  Additional API sends cost $0.75 per document.&lt;/li&gt;
&lt;li&gt;  A credit card is required only for verification.&lt;/li&gt;
&lt;li&gt;  You will be charged only if you exceed the included credits.&lt;/li&gt;
&lt;li&gt;  After 12 months, the plan renews at $5 per month (cancel at any time).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This setup is ideal for evaluation, prototyping, and early-stage launches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do developers choose BoldSign for embedded workflows?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Native, in-app signing.&lt;/li&gt;
&lt;li&gt;  Seamless experience with no redirects or external signing pages.&lt;/li&gt;
&lt;li&gt;  Fast developer onboarding.&lt;/li&gt;
&lt;li&gt;  Sandbox, templates, embedded signing, and webhooks setup can be completed in a single day.&lt;/li&gt;
&lt;li&gt;  Consistent product experience.&lt;/li&gt;
&lt;li&gt;  Unified branding across signer pages, emails, and workflows.&lt;/li&gt;
&lt;li&gt;  Scalable automation.&lt;/li&gt;
&lt;li&gt;  Flexible mix of manual, template-based, and API-driven flows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Do all users need a BoldSign account?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Required:&lt;/strong&gt; Anyone who sends, manages, or requests signatures.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Not required:&lt;/strong&gt; People who only sign documents. (Signers do not need an account, which reduces friction.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What should I know about BoldSign security and compliance?
&lt;/h2&gt;

&lt;p&gt;BoldSign is built with enterprise-grade security:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  End-to-end encryption.&lt;/li&gt;
&lt;li&gt;  Secure, regulatory-compliant document storage.&lt;/li&gt;
&lt;li&gt;  Detailed audit logs.&lt;/li&gt;
&lt;li&gt;  SOC 2-aligned processes.&lt;/li&gt;
&lt;li&gt;  Fine-grained organization access controls.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All document actions are fully traceable and tamper evident.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is a valuable one-year opportunity
&lt;/h2&gt;

&lt;p&gt;The included 12-month access period gives developers enough time to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Build complete, embedded eSignature workflows. &lt;/li&gt;
&lt;li&gt;  Automate recurring document processes. &lt;/li&gt;
&lt;li&gt;  Test signing inside their apps. &lt;/li&gt;
&lt;li&gt;  Validate API integrations. &lt;/li&gt;
&lt;li&gt;  Scale usage without upfront subscription commitments. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a practical, low-risk way to integrate eSignatures into SaaS products or internal workflows. &lt;/p&gt;

&lt;h2&gt;
  
  
  Want to build embedded eSignature workflows in minutes? Start here:
&lt;/h2&gt;

&lt;p&gt;If you want to get started on building an end-to-end embedded signing experience, our technical guides cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/api-overview/developer-sandbox-account/?region=us" rel="noopener noreferrer"&gt;Sandbox setup&lt;/a&gt;  &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/template/create-template/?region=us" rel="noopener noreferrer"&gt;Template creation and management&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/how-to-guides/integrate-embedded-signing-in-your-website-or-application/" rel="noopener noreferrer"&gt;Generating embedded signing URLs&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/webhooks/introduction/?region=us" rel="noopener noreferrer"&gt;Handling callbacks, events, and webhooks&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to activate your BoldSign account through the Visual Studio subscriber benefits portal:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; Open your &lt;a href="https://aka.ms/VSS/ActivateSyncfusion" rel="noopener noreferrer"&gt;Visual Studio Subscriber Benefits&lt;/a&gt; page.&lt;/li&gt;
&lt;li&gt; Find the BoldSign benefit tile.&lt;/li&gt;
&lt;li&gt; Select Activate.&lt;/li&gt;
&lt;li&gt; Complete the signup.&lt;/li&gt;
&lt;li&gt; Start sending documents immediately.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/common-signature-api-challenges" rel="noopener noreferrer"&gt;What Are the Common Challenges When Using Signature APIs in Software Development&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/boldsign-collaborative-fields-api/" rel="noopener noreferrer"&gt;BoldSign Collaborative Fields for Accurate Multi‑Signer API Workflows&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/free-esignature-plan-a-win-win-strategy-for-both-users-and-boldsign/" rel="noopener noreferrer"&gt;Free eSignature Plan: A Win-Win Strategy for Both Users and BoldSign&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>api</category>
      <category>visualstudio</category>
      <category>boldsign</category>
    </item>
    <item>
      <title>Introducing BoldSign’s Snapchat QR Code Generator</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Mon, 30 Mar 2026 09:32:36 +0000</pubDate>
      <link>https://dev.to/boldsign/introducing-boldsigns-snapchat-qr-code-generator-1o01</link>
      <guid>https://dev.to/boldsign/introducing-boldsigns-snapchat-qr-code-generator-1o01</guid>
      <description>&lt;p&gt;A Snapchat QR code allows anyone to open your profile instantly with a single scan. With BoldSign’s free Snapchat QR code generator, you can convert any Snapchat link into a scannable QR code within seconds with no signup, no watermark, and no usage limits.&lt;/p&gt;

&lt;p&gt;Whether you are boosting your brand, growing a creator audience, connecting with customers, or adding Snapchat to your digital identity, this guide covers how Snapchat QR codes work and how to use them effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Snapchat QR code
&lt;/h2&gt;

&lt;p&gt;A Snapchat QR code is a scannable code that opens your Snapchat profile, public account, or Snap-specific link when someone points their smartphone camera at it. You can link to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A Snapchat profile&lt;/li&gt;
&lt;li&gt;  A public creator page&lt;/li&gt;
&lt;li&gt;  A Snap code URL&lt;/li&gt;
&lt;li&gt;  A direct add me link&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why it matters:&lt;/strong&gt; It removes the friction of searching usernames manually or dealing with typos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why use a Snapchat QR code
&lt;/h2&gt;

&lt;p&gt;A Snapchat QR code makes sharing your profile faster, simpler, and more effective across social media, marketing materials, and offline channels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Benefits&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Instant audience growth- People can follow your Snapchat account in one scan.&lt;/li&gt;
&lt;li&gt;  Better engagement – Useful at events, booths, stores, or meetups where quick access matters.&lt;/li&gt;
&lt;li&gt;  Stronger digital identity – Add it to websites, posters, product packaging, portfolios, or social bios.&lt;/li&gt;
&lt;li&gt;  Smartphone friendly – Modern cameras scan QR codes natively without any extra apps.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to create a Snapchat QR code for free
&lt;/h2&gt;

&lt;p&gt;Creating your Snapchat QR code takes less than a minute. Just follow these steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you will need&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Your Snapchat link&lt;/li&gt;
&lt;li&gt;  Any desktop or mobile browser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step by step&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Copy your Snapchat URL&lt;/strong&gt;
Use your profile link, public page URL, or Snap code link.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Paste it into BoldSign’s Snapchat QR code generator&lt;/strong&gt;
Your QR code appears instantly.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Customize your QR code&lt;/strong&gt;
Adjust options such as:

&lt;ul&gt;
&lt;li&gt;  Pattern color &lt;/li&gt;
&lt;li&gt;  Background color &lt;/li&gt;
&lt;li&gt;  QR code size &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;  &lt;em&gt;&lt;strong&gt;&lt;em&gt;Download and share&lt;/em&gt;&lt;/strong&gt;&lt;/em&gt;
Export your QR code as*&lt;em&gt;:&lt;/em&gt;*

&lt;ul&gt;
&lt;li&gt;  PNG&lt;/li&gt;
&lt;li&gt;  JPEG&lt;/li&gt;
&lt;li&gt;  SVG&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftyszv0rz2vzi6gqu5tj3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftyszv0rz2vzi6gqu5tj3.png" alt="" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why choose BoldSign’s Snapchat QR code generator
&lt;/h2&gt;

&lt;p&gt;BoldSign’s tool is built for privacy, speed, and clean professional output.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;100% free forever:&lt;/strong&gt; No fees, no watermarks, no limits.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Privacy first:&lt;/strong&gt; Your Snapchat link never leaves your browser. We do not store or track your data.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Instant results:&lt;/strong&gt; Create high-quality QR codes in seconds.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Works on any device:&lt;/strong&gt; Compatible with Windows, macOS, Linux, iOS, and Android.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Best ways to use a Snapchat QR code
&lt;/h2&gt;

&lt;p&gt;Snapchat QR codes can elevate your digital presence across both online and physical spaces. Here are powerful ways to use them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Business cards:&lt;/strong&gt; Make your contact card instantly scannable.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Product packaging:&lt;/strong&gt; Let customers access offers, tutorials, or behind-the-scenes content.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Websites and landing pages:&lt;/strong&gt; Add it to your portfolio, link in bio, or homepage.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Events and pop ups:&lt;/strong&gt; Display it at booths, banners, or digital screens for instant audience connection.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Print marketing:&lt;/strong&gt; Add it to posters, flyers, menus, brochures, or store signage.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Creator branding:&lt;/strong&gt; Great for merch, stickers, giveaways, and creator kits.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;A Snapchat QR code makes it easier for people to find and follow you instantly. It boosts visibility, enhances your brand identity, and removes the friction of searching usernames manually.&lt;/p&gt;

&lt;p&gt;Create your &lt;a href="https://boldsign.com/snapchat-qr-code-generator?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Snapchat QR Code&lt;/a&gt; with BoldSign today and start building stronger, smarter connections.&lt;/p&gt;

&lt;p&gt;Ready to simplify your document workflows? Start your free &lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign&lt;/a&gt; trial or connect with our &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;support team&lt;/a&gt; for a personalized &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/generate-whatsapp-qr-code-online/" rel="noopener noreferrer"&gt;Free WhatsApp QR Code Generator for Instant Chat Links&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/generate-twitter-qr-code-online/" rel="noopener noreferrer"&gt;Introducing BoldSign’s Twitter QR Code Generator&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/generate-qr-code-for-wifi/" rel="noopener noreferrer"&gt;Generate a Wi-Fi QR Code: Free, Simple, and Secure&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt; &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>qrcode</category>
      <category>snapchat</category>
      <category>boldsign</category>
    </item>
    <item>
      <title>Electronic Signature in Healthcare: Where They Help Most</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Fri, 27 Mar 2026 06:21:46 +0000</pubDate>
      <link>https://dev.to/boldsign/electronic-signature-in-healthcare-where-they-help-most-1gn6</link>
      <guid>https://dev.to/boldsign/electronic-signature-in-healthcare-where-they-help-most-1gn6</guid>
      <description>&lt;p&gt;A busy clinic receptionist needs a patient’s signed consent before a simple procedure, but the paper consent form is missing from the file. Filling, printing, chasing signatures, and scanning eat-up time and frustrate patients. What they really need is a quick, secure way to collect signatures digitally that fit into clinical workflows without extra hassle. Tools like BoldSign can step in as a simple helper to collect, track, and store those signatures securely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why e‑signatures matter in healthcare
&lt;/h2&gt;

&lt;p&gt;Health providers handle lots of forms that must be signed correctly and stored securely. Paper slows care, increases errors, and makes audits harder. E-signatures reduce friction, improve traceability, and support faster patient flow, helpful for clinics, hospitals, telehealth providers, and billing teams. &lt;/p&gt;

&lt;h2&gt;
  
  
  Simple real-life scenario
&lt;/h2&gt;

&lt;p&gt;A small dental practice sees six patients per hour. Each patient must sign an intake form, a consent for treatment, and a privacy notice. The clinic currently uses paper forms on a clipboard. Sometimes forms are illegible, sometimes a printed form is misplaced, and staff must reprint or call patients. The practice needs a simple, secure digital signing flow so patients can sign a tablet in the waiting room or finish at home before the appointment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common paper-based workflow
&lt;/h3&gt;

&lt;p&gt;Some clinics try to solve this by scanning signed paper into a shared folder or emailing PDFs back and forth. Problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Extra manual steps: scan, rename, move files. &lt;/li&gt;
&lt;li&gt;  Hard to track whether a form is signed or which version is current. &lt;/li&gt;
&lt;li&gt;  Security and access control are inconsistent. &lt;/li&gt;
&lt;li&gt;  Audits become time-consuming because records are scattered. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  A better digital workflow
&lt;/h3&gt;

&lt;p&gt;Design a simple e-sign workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Create a single template for each form type (intake, consent, release). &lt;/li&gt;
&lt;li&gt; Collect patient data once and send a secure link or present a tablet for on-site signing.&lt;/li&gt;
&lt;li&gt; Save the signed document directly into the patient’s record with access logs. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Benefits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Faster check-in. &lt;/li&gt;
&lt;li&gt;  Fewer filing errors and lost forms. &lt;/li&gt;
&lt;li&gt;  Clear audit trail (who signed, when, where). &lt;/li&gt;
&lt;li&gt;  Patients can sign remotely before their appointment. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How tools like BoldSign support this workflow
&lt;/h2&gt;

&lt;p&gt;E-signature platforms provide the building blocks for the workflow above, templating, field pre-fill, signer authentication, secure storage, and audit logs. Below is a simple, generic example of workflow:&lt;/p&gt;

&lt;p&gt;Typical steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Upload or create a template for consent forms. &lt;/li&gt;
&lt;li&gt;  Send a secure signing link to the patient (or open on a clinic tablet). &lt;/li&gt;
&lt;li&gt;  Receive the signed document and store it in the patient’s record with an audit trail. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Key Takeaway: Use templates and pre-fill fields to cut patient time-to-sign and avoid manual data entry. &lt;/p&gt;

&lt;h2&gt;
  
  
  Security and privacy considerations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Use secure authentication for accessing e-sign tools. &lt;/li&gt;
&lt;li&gt;  Limit who can view or send sensitive forms. &lt;/li&gt;
&lt;li&gt;  Ensure transport (HTTPS) and storage are encrypted.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Best practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Create reusable templates for each form type. &lt;/li&gt;
&lt;li&gt;  Pre-fill fields from the EHR to reduce typing and errors. &lt;/li&gt;
&lt;li&gt;  Provide multiple signing options. Ex: on-tablet, email link. &lt;/li&gt;
&lt;li&gt;  Use signer authentication appropriate to the risk level (Email OTP, SMS OTP, Access code). &lt;/li&gt;
&lt;li&gt;  Keep an audit trail, signer identity, timestamp, IP address, etc. &lt;/li&gt;
&lt;li&gt;  Train staff on the new workflow so they can assist patients quickly. &lt;/li&gt;
&lt;li&gt;  Test the signing process on common device types (phones, tablets) before rolling out.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;E-signatures simplify many administrative tasks in healthcare by cutting down waiting times, reducing errors, and giving a clear audit trail. When combined with templates and proper authentication, they fit naturally into clinical workflows, improving patient experience and freeing staff to focus on care. &lt;/p&gt;

&lt;p&gt;Get started today! Sign up for a free &lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign&lt;/a&gt; account and begin managing tasks with just a few steps. For questions or assistance, visit our &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;support portal&lt;/a&gt; or book a &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/electronic-signatures-for-healthcare-consent-forms/" rel="noopener noreferrer"&gt;Electronic Signatures for Healthcare Consent Forms&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/esignatures-for-healthcare-digitizing-medical-records/" rel="noopener noreferrer"&gt;Digitizing Medical Records: Secure and HIPAA-Compliant eSignatures for Healthcare Providers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/ai-for-healthcare-claude-openai/" rel="noopener noreferrer"&gt;How Claude and OpenAI Are Redefining AI for Healthcare and eSignature Workflows&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>healthcare</category>
      <category>privacy</category>
      <category>documents</category>
    </item>
    <item>
      <title>Join Our Webinar: Find Any Contract in Seconds with BoldSign’s AI Search</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Wed, 25 Mar 2026 09:27:31 +0000</pubDate>
      <link>https://dev.to/boldsign/join-our-webinar-find-any-contract-in-seconds-with-boldsigns-ai-search-1a6a</link>
      <guid>https://dev.to/boldsign/join-our-webinar-find-any-contract-in-seconds-with-boldsigns-ai-search-1a6a</guid>
      <description>&lt;p&gt;As document volume grows, teams spend more time filtering and searching instead of moving work forward. AI Search solves this by understanding natural language queries, applying the correct filters automatically, and ranking results so the most relevant documents appear first.&lt;/p&gt;

&lt;p&gt;Led by Gayathri Annamalai, a Software Developer at Syncfusion, this session will walk you through real-world examples of how AI Search helps teams follow up faster, reduce manual checks, and work more efficiently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Webinar details
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Date: March 27, 2026&lt;/li&gt;
&lt;li&gt;  Time: 10:00 AM ET&lt;/li&gt;
&lt;li&gt;  Duration: 40 minutes + live Q&amp;amp;A&lt;/li&gt;
&lt;li&gt;  Speaker: Gayathri Annamalai&lt;/li&gt;
&lt;li&gt;  Registration: &lt;a href="https://boldsign.com/webinars/find-contracts-instantly-with-ai-search/register?utm_source=webinar_boldsign_blog_pt&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Register now&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Who this webinar is for
&lt;/h2&gt;

&lt;p&gt;This session is ideal for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Operations teams managing process efficiency and document throughput&lt;/li&gt;
&lt;li&gt;  Sales and customer success leaders who depend on fast follow ups and SLA driven workflows&lt;/li&gt;
&lt;li&gt;  Legal and contract teams handling agreements, reviews, and high volumes of documents&lt;/li&gt;
&lt;li&gt;  BoldSign administrators who oversee user management, workflow setup, and organization-wide search&lt;/li&gt;
&lt;li&gt;  High volume teams that need quick access to pending, expiring, or time sensitive documents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your work depends on finding the right documents quickly and minimizing manual filtering, this webinar is for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agenda: What we will cover
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Why AI Search now
&lt;/h3&gt;

&lt;p&gt;How traditional filtering breaks down as document volume increases, and why teams need a smarter way to locate contracts.&lt;/p&gt;

&lt;h3&gt;
  
  
  How AI Search works
&lt;/h3&gt;

&lt;p&gt;A simple overview of how natural language intent becomes automatically applied filters and ranked results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Natural language query examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here are some examples of real queries you can type directly into AI Search:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Documents waiting for my signature&lt;/li&gt;
&lt;li&gt;  Contracts sent last month that are still pending&lt;/li&gt;
&lt;li&gt;  Show completed contracts from last month&lt;/li&gt;
&lt;li&gt;  Find agreements updated in the last 7 days&lt;/li&gt;
&lt;li&gt;  NDA documents sent by John this month&lt;/li&gt;
&lt;li&gt;  Expired documents between January 1 and January 15&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Live demo
&lt;/h3&gt;

&lt;p&gt;Real examples showing how teams can use everyday language to find what they need in seconds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best practices
&lt;/h3&gt;

&lt;p&gt;How to write effective queries for accuracy, speed, and better prioritization.&lt;/p&gt;

&lt;h3&gt;
  
  
  Q&amp;amp;A
&lt;/h3&gt;

&lt;p&gt;Get your questions answered live.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why attend?
&lt;/h2&gt;

&lt;p&gt;You will get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A clear understanding of how AI Search reduces manual filtering&lt;/li&gt;
&lt;li&gt;  Live, practical examples of everyday queries across teams&lt;/li&gt;
&lt;li&gt;  Simple techniques to make searching faster and more accurate&lt;/li&gt;
&lt;li&gt;  Insights from BoldSign experts who work directly on product and engineering&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What you will be able to do after the webinar
&lt;/h2&gt;

&lt;p&gt;After this session, you should be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Search in plain English to find documents by status, date, signer, template, and more&lt;/li&gt;
&lt;li&gt;  Combine multiple conditions in a single query, including status, date range, owner, and document type&lt;/li&gt;
&lt;li&gt;  Prioritize work faster using AI ranked results that surface what matters most&lt;/li&gt;
&lt;li&gt;  Accelerate follow ups by instantly finding pending, expiring, or stalled documents&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reserve your spot
&lt;/h2&gt;

&lt;p&gt;Don’t miss this opportunity to experience the new AI Search capabilities in BoldSign.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://boldsign.com/webinars/find-contracts-instantly-with-ai-search/register?utm_source=webinar_boldsign_blog_pt&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Register now&lt;/a&gt; to see how natural language queries and AI-driven ranking can dramatically speed up your daily workflows.&lt;/p&gt;

&lt;p&gt;For questions, contact us at &lt;a href="mailto:support@boldsign.com"&gt;support@boldsign.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/embed-esignature-workflows-dotnet-app/" rel="noopener noreferrer"&gt;Webinar Show Notes: Embed eSignature Workflows in .NET App&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/boldsign-new-features-webinar-recap/" rel="noopener noreferrer"&gt;Webinar Show Notes: What’s New in BoldSign&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/boldsign-zapier-integration-webinar-recap/" rel="noopener noreferrer"&gt;Webinar Show Notes – Automate Google Sheets with BoldSign &amp;amp; Zapier&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>aisearch</category>
      <category>contract</category>
      <category>documentsigning</category>
    </item>
    <item>
      <title>What Are the Common Challenges When Using Signature APIs in Software Development</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Tue, 24 Mar 2026 06:47:21 +0000</pubDate>
      <link>https://dev.to/boldsign/what-are-the-common-challenges-when-using-signature-apis-in-software-development-elb</link>
      <guid>https://dev.to/boldsign/what-are-the-common-challenges-when-using-signature-apis-in-software-development-elb</guid>
      <description>&lt;p&gt;Signature APIs usually work flawlessly in development, but start failing the moment they hit real production traffic, real documents, and real recipients. The reason is simple: eSignature workflows aren’t “one API call.” They’re distributed, stateful, multistep systems that break at predictable failure points like authentication, PDF rendering inconsistencies, webhook handling, template drift, deliverability issues, compliance gaps, and retry storms.&lt;/p&gt;

&lt;p&gt;This guide breaks down the seven most common reasons Signature API integrations fail in production and the engineering patterns that prevent them. You’ll see exactly where real-world systems fail, what reliable teams do differently, and how BoldSign’s builtin capabilities eliminate these reliability gaps from day one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do Signature API integrations fail after they reach production
&lt;/h2&gt;

&lt;p&gt;Because a signing workflow is not “one API call.”&lt;/p&gt;

&lt;p&gt;It’s an orchestration system with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Authentication&lt;/li&gt;
&lt;li&gt;  Document rendering&lt;/li&gt;
&lt;li&gt;  Field placement&lt;/li&gt;
&lt;li&gt;  Notifications&lt;/li&gt;
&lt;li&gt;  Webhooks&lt;/li&gt;
&lt;li&gt;  Lifecycle state changes&lt;/li&gt;
&lt;li&gt;  Evidence collection&lt;/li&gt;
&lt;li&gt;  Compliance storage&lt;/li&gt;
&lt;li&gt;  Retries and rate limits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most failures aren’t caused by the provider being “down.”&lt;/p&gt;

&lt;p&gt;They happen because implementations don’t include defensive patterns for real-world conditions.&lt;/p&gt;

&lt;p&gt;If your workflow depends on a single success response, it’s not production-ready.&lt;/p&gt;

&lt;h2&gt;
  
  
  What authentication mistakes cause random 401 errors in Signature APIs
&lt;/h2&gt;

&lt;p&gt;Authentication failures usually don’t show up during testing because sandbox flows are short and clean.&lt;/p&gt;

&lt;p&gt;In production, failures come from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Access tokens expiring mid-process&lt;/li&gt;
&lt;li&gt;  Refresh token logic missing or unsafe&lt;/li&gt;
&lt;li&gt;  Multiple servers refreshing at the same time (“refresh storms”)&lt;/li&gt;
&lt;li&gt;  Sandbox and production credentials getting mixed&lt;/li&gt;
&lt;li&gt;  Clock skew causing “expired/not valid yet” surprises&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What reliable teams do instead&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Choose &lt;a href="https://developers.boldsign.com/authentication/introduction/?region=us" rel="noopener noreferrer"&gt;auth&lt;/a&gt; based on your workflow: API key for backend automation, OAuth2 for user-consented access&lt;/li&gt;
&lt;li&gt;  Refresh early (before expiry), not only when it breaks&lt;/li&gt;
&lt;li&gt;  Ensure only one refresh happens at a time&lt;/li&gt;
&lt;li&gt;  Log failures with context (without leaking secrets)&lt;/li&gt;
&lt;li&gt;  Keep sandbox and prod credentials strictly separated&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How BoldSign helps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Scoped &lt;a href="https://developers.boldsign.com/authentication/api-key" rel="noopener noreferrer"&gt;API keys&lt;/a&gt; that reduce blast radius&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/authentication/oauth-2-0" rel="noopener noreferrer"&gt;OAuth2&lt;/a&gt; guidance and supported flows so you don’t “invent auth”&lt;/li&gt;
&lt;li&gt;  Clear documentation for setting up OAuth2 correctly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Concrete Action:&lt;/strong&gt; Add the header X-API-KEY: {your-api-key} to every API request to authenticate securely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more:&lt;/strong&gt; &lt;a href="https://developers.boldsign.com/authentication/api-key/" rel="noopener noreferrer"&gt;API Key Authentication&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; If your access token refresh can trigger from multiple servers at once, you need a single-source refresh mechanism.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do signature fields shift or render incorrectly on PDFs
&lt;/h2&gt;

&lt;p&gt;This is one of the most common “it worked yesterday” failures.&lt;/p&gt;

&lt;p&gt;Fields shift because PDFs are not consistent across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Generators (Word → PDF, Google Docs → PDF, print-to-PDF, scanners)&lt;/li&gt;
&lt;li&gt;  Page sizes, rotation, and scaling rules&lt;/li&gt;
&lt;li&gt;  Page boxes (CropBox/MediaBox differences)&lt;/li&gt;
&lt;li&gt;  Font substitution and layout changes&lt;/li&gt;
&lt;li&gt;  Tiny template edits that change coordinates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What reliable teams do instead&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Treat placement like layout engineering, not guesswork&lt;/li&gt;
&lt;li&gt;  Avoid hard-coded coordinates whenever possible&lt;/li&gt;
&lt;li&gt;  Test with multiple PDF types (scanned, rotated, different sizes)&lt;/li&gt;
&lt;li&gt;  Add a repeatable QA step: “compare final rendered doc vs expected placement”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How BoldSign helps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/how-to-dynamically-position-form-fields-in-esignature-requests-using-api?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Text tags&lt;/a&gt; so fields can anchor to content instead of brittle X/Y math &lt;/li&gt;
&lt;li&gt;  A single switch (UseTextTags=true) enables tag-based placement when &lt;a href="https://support.boldsign.com/kb/article/19195/how-to-request-signature-with-text-tags-for-dynamic-documents-in-boldsign-api" rel="noopener noreferrer"&gt;sending a document&lt;/a&gt;, making field rendering consistent across all PDF types. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Concrete Action:&lt;/strong&gt; Enable text-tag anchoring by setting UseTextTags=true in the /v1/document/send request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more:&lt;/strong&gt; &lt;a href="https://developers.boldsign.com/text-tags/introduction/" rel="noopener noreferrer"&gt;Text Tags Introduction&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; If a tiny PDF edit breaks your field coordinates, you need text-tag-based anchoring instead of X/Y positioning. &lt;/p&gt;

&lt;h2&gt;
  
  
  What causes webhook failures and missing document updates
&lt;/h2&gt;

&lt;p&gt;Webhooks are where production workflows live or die.&lt;/p&gt;

&lt;p&gt;Failures come from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Slow endpoints that timeout&lt;/li&gt;
&lt;li&gt;  Deploys that drop events&lt;/li&gt;
&lt;li&gt;  Duplicate deliveries that double-update states&lt;/li&gt;
&lt;li&gt;  Out-of-order events leading to the wrong final state&lt;/li&gt;
&lt;li&gt;  Skipping signature verification (a security risk)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What reliable teams do instead&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Respond fast, process later (acknowledge quickly, handle asynchronously)&lt;/li&gt;
&lt;li&gt;  Make handlers idempotent (duplicates should do nothing)&lt;/li&gt;
&lt;li&gt;  Verify authenticity before trusting payloads&lt;/li&gt;
&lt;li&gt;  Model state transitions so late events can’t “rewind” the document&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How BoldSign helps&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/webhooks/verify-webhook-events" rel="noopener noreferrer"&gt;Webhooks with signature verification&lt;/a&gt; using X-BoldSign-Signature (HMAC SHA256) &lt;/li&gt;
&lt;li&gt;  Guidance on webhook event &lt;a href="https://developers.boldsign.com/webhooks/introduction" rel="noopener noreferrer"&gt;types and scope&lt;/a&gt;  &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/webhooks/webhook-configuration-and-lifecycle" rel="noopener noreferrer"&gt;Clear operational requirement&lt;/a&gt; : webhooks should respond quickly (designed to push you toward reliable receivers) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Concrete Action:&lt;/strong&gt; Validate incoming webhook payloads using the X-BoldSign-Signature HMAC-SHA256 header.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more:&lt;/strong&gt; &lt;a href="https://developers.boldsign.com/webhooks/verify-webhook-events/" rel="noopener noreferrer"&gt;Verify Webhook Events&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; If a duplicate webhook can change your document state twice, you need idempotent handlers. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why do templates break automated workflows over time
&lt;/h2&gt;

&lt;p&gt;Templates feel stable until someone edits one field and automation breaks across your product.&lt;/p&gt;

&lt;p&gt;Common failures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Roles or fields changed in a live template&lt;/li&gt;
&lt;li&gt;  Automation assumes templates are ready instantly after creation&lt;/li&gt;
&lt;li&gt;  No record of which template version was used&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What reliable teams do instead&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Treat templates like code: version names, changelogs, controlled rollout &lt;/li&gt;
&lt;li&gt;  Never mutate a template silently, create a new version &lt;/li&gt;
&lt;li&gt;  Keep roles consistent and mapped to your app’s signer types &lt;/li&gt;
&lt;li&gt;  Account for asynchronous readiness after creation &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How BoldSign helps&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Role-based templates that fit automation patterns&lt;/li&gt;
&lt;li&gt;  Clear &lt;a href="https://developers.boldsign.com/template/create-template" rel="noopener noreferrer"&gt;template endpoints&lt;/a&gt; and support for template lifecycle behaviors&lt;/li&gt;
&lt;li&gt;  Webhook-style readiness approach for async template processing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Concrete Action:&lt;/strong&gt; Create templates via POST /v1/template/create and track readiness using the TemplateCreated webhook event.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more:&lt;/strong&gt; &lt;a href="https://developers.boldsign.com/template/create-template/" rel="noopener noreferrer"&gt;Create Template&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; If editing a template can break your automation, you need versioned, immutable templates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do email, SMS, and WhatsApp delivery failures break signing
&lt;/h2&gt;

&lt;p&gt;The most painful production issue isn’t API errors.&lt;/p&gt;

&lt;p&gt;It’s “the signer never received anything.”&lt;/p&gt;

&lt;p&gt;Delivery issues happen because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Email goes to spam or bounces&lt;/li&gt;
&lt;li&gt;  Phone numbers are invalid or missing country codes&lt;/li&gt;
&lt;li&gt;  Carrier filtering blocks SMS&lt;/li&gt;
&lt;li&gt;  WhatsApp numbers may be inactive/unregistered&lt;/li&gt;
&lt;li&gt;  Teams assume “sent = delivered”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What reliable teams do instead&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Separate “document created” from “recipient notified”&lt;/li&gt;
&lt;li&gt;  Track notification attempts and signer progress separately&lt;/li&gt;
&lt;li&gt;  Provide repair paths: update contact info, resend, switch channels&lt;/li&gt;
&lt;li&gt;  Prefer embedded signing for product-led, in-app flows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How BoldSign helps&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://support.boldsign.com/kb/article/20343/what-are-the-delivery-methods-available-in-boldsign" rel="noopener noreferrer"&gt;Multiple delivery modes&lt;/a&gt; : Email, SMS, Email+SMS, WhatsApp &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/documents/send-reminder" rel="noopener noreferrer"&gt;Reminders endpoint&lt;/a&gt; for follow-ups &lt;/li&gt;
&lt;li&gt;  Ability to &lt;a href="https://developers.boldsign.com/how-to-guides/disable-email-notifications" rel="noopener noreferrer"&gt;disable platform notifications&lt;/a&gt;  when you want full in-app control &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/embedded-signing/get-embedded-signing-link" rel="noopener noreferrer"&gt;Embedded signing&lt;/a&gt; support to bypass deliverability entirely &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Concrete Action:&lt;/strong&gt; Recover stuck signers by calling the reminders endpoint POST /v1/document/remind?documentId={documentId}.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more:&lt;/strong&gt; &lt;a href="https://developers.boldsign.com/documents/send-reminder/" rel="noopener noreferrer"&gt;Send Reminder&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; If a signer who didn’t receive the message stops the entire workflow, you need repair paths like resend + update contact info.&lt;/p&gt;

&lt;h2&gt;
  
  
  What compliance gaps create “we can’t prove it” disputes
&lt;/h2&gt;

&lt;p&gt;Compliance isn’t just storing the signed PDF.&lt;/p&gt;

&lt;p&gt;Teams get stuck when they can’t answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Who signed&lt;/li&gt;
&lt;li&gt;  When they signed&lt;/li&gt;
&lt;li&gt;  What events occurred&lt;/li&gt;
&lt;li&gt;  What was presented at signing time&lt;/li&gt;
&lt;li&gt;  What evidence exists if a signature is challenged&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What reliable teams do instead&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Decide what to retain upfront (PDF + event evidence)&lt;/li&gt;
&lt;li&gt;  Automatically fetch evidence when documents complete&lt;/li&gt;
&lt;li&gt;  Implement retention rules aligned with your industry&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How BoldSign helps&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/documents/download-audit-trail" rel="noopener noreferrer"&gt;Audit trail download via API&lt;/a&gt;    &lt;/li&gt;
&lt;li&gt;  Guidance for retrieving &lt;a href="https://developers.boldsign.com/how-to-guides/retrieve-esignature-document-history" rel="noopener noreferrer"&gt;document history/evidence&lt;/a&gt;  &lt;/li&gt;
&lt;li&gt;  Option to &lt;a href="https://developers.boldsign.com/how-to-guides/combine-audit-trail-and-signed-document-API" rel="noopener noreferrer"&gt;combine signed document + audit trail&lt;/a&gt; into a single package (when enabled) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Concrete Action:&lt;/strong&gt; Automatically store event evidence by downloading the audit log using GET /v1/document/downloadAuditLog?documentId={id}.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more:&lt;/strong&gt; &lt;a href="https://developers.boldsign.com/documents/download-audit-trail/" rel="noopener noreferrer"&gt;Download Audit Trail&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; If you cannot prove who signed, when they signed, and what happened, you need automated audit trail storage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do rate limits and retries create duplicate signature requests
&lt;/h2&gt;

&lt;p&gt;Rate limits don’t hurt because they exist.&lt;/p&gt;

&lt;p&gt;They hurt because apps respond badly to them.&lt;/p&gt;

&lt;p&gt;What goes wrong:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Aggressive retries cause storms&lt;/li&gt;
&lt;li&gt;  Timeouts trigger “create again” logic (duplicates)&lt;/li&gt;
&lt;li&gt;  Teams retry 4xx validation errors without fixing requests&lt;/li&gt;
&lt;li&gt;  Sandbox limits differ from production, so load tests lie&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What reliable teams do instead&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Throttle bursts before they hit the API&lt;/li&gt;
&lt;li&gt;  Retry only transient failures (timeouts, network errors, 5xx, 429)&lt;/li&gt;
&lt;li&gt;  Don’t retry 4xx unless the request changes&lt;/li&gt;
&lt;li&gt;  Add “create safety”: track your own request IDs to prevent duplicates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How BoldSign helps&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/api-overview/rate-limit" rel="noopener noreferrer"&gt;Published rate limits&lt;/a&gt; (sandbox vs production) &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/how-to-guides/managing-boldsign-api-rate-limits" rel="noopener noreferrer"&gt;Practical guidance&lt;/a&gt; to design within limits  &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.boldsign.com/api-overview/getting-started" rel="noopener noreferrer"&gt;Sandbox&lt;/a&gt; environment for safer testing &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Concrete Action:&lt;/strong&gt; Implement client-side throttling using BoldSign published limit of &lt;em&gt;2000 requests/hour&lt;/em&gt; to avoid 429 errors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more:&lt;/strong&gt; &lt;a href="https://developers.boldsign.com/api-overview/rate-limit/" rel="noopener noreferrer"&gt;Rate Limit Documentation&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Checkpoint:&lt;/strong&gt; If a timeout can create two signature requests, you need idempotent “create” logic in your app. &lt;/p&gt;

&lt;h2&gt;
  
  
  What are the 7 Signature API challenges you should design for first
&lt;/h2&gt;

&lt;p&gt;If you only remember one thing, remember this list: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Auth expiry + refresh safety&lt;/li&gt;
&lt;li&gt; PDF placement stability&lt;/li&gt;
&lt;li&gt; Webhook reliability + idempotency&lt;/li&gt;
&lt;li&gt; Template version safety&lt;/li&gt;
&lt;li&gt; Deliverability + repair paths&lt;/li&gt;
&lt;li&gt; Audit trail evidence storage&lt;/li&gt;
&lt;li&gt; Rate limits + retry discipline&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These are the points where “it works in testing” becomes “it breaks in production.”&lt;/p&gt;

&lt;h2&gt;
  
  
  What production-readiness checks should every eSignature integration pass
&lt;/h2&gt;

&lt;p&gt;A production-ready eSignature workflow must be resilient across authentication, documents, webhooks, templates, notifications, compliance, and rate limits. The checklist below lets engineering teams verify at a glance, whether their integration can withstand realworld traffic, real documents, and real signer behavior.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;What You Must Validate Before Going Live&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Ready for Production When…&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Authentication Safety&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;• Token refresh happens &lt;em&gt;before&lt;/em&gt; expiration&lt;br&gt;• Only one service instance handles refresh&lt;br&gt;• Sandbox &amp;amp; production keys are isolated&lt;br&gt;• Clock skew is accounted for&lt;br&gt;• API key vs OAuth2 chosen intentionally&lt;/td&gt;
&lt;td&gt;Your system never generates multiple refreshes and avoids intermittent 401s.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PDF Rendering &amp;amp; Field Placement Stability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;• No brittle hard-coded coordinates&lt;br&gt;• Text-tags anchor fields reliably&lt;br&gt;• Tested across mixed PDF generators (Word, Google Docs, scanned, rotated)&lt;br&gt;• Final signed PDF matches expected placement&lt;br&gt;• Template edits don’t cause movement&lt;/td&gt;
&lt;td&gt;A small document or template change cannot shift or break field positions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Webhook Reliability &amp;amp; Duplicate Safety&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;• HMAC SHA256 verification is enforced&lt;br&gt;• Handlers acknowledge fast and process async&lt;br&gt;• Duplicate events do nothing (idempotent)&lt;br&gt;• Out-of-order events can’t revert state&lt;br&gt;• Deployments don’t drop events&lt;/td&gt;
&lt;td&gt;A webhook delivered twice behaves exactly like one delivery.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Template Version Control&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;• Templates use explicit versioning&lt;br&gt;• No silent edits to live templates&lt;br&gt;• Template readiness checked before use&lt;br&gt;• Roles align with your signer types&lt;br&gt;• System records which template version was used&lt;/td&gt;
&lt;td&gt;Template changes cannot break automation or field mapping.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Deliverability &amp;amp; Recovery Paths&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;• Email, SMS, WhatsApp delivery tracked&lt;br&gt;• Contacts can be fixed mid-process&lt;br&gt;• Resend and follow-up flows implemented&lt;br&gt;• Embedded signing available as fallback&lt;br&gt;• “Sent” and “Delivered” treated separately&lt;/td&gt;
&lt;td&gt;A signer who didn’t receive the message cannot stall the workflow.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Compliance Evidence Storage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;• Signed PDFs stored securely&lt;br&gt;• Audit trails auto-downloaded&lt;br&gt;• Retention rules match your industry&lt;br&gt;• Evidence ties to exact document version&lt;br&gt;• Full event history is retrievable any time&lt;/td&gt;
&lt;td&gt;You can prove who signed, when, and what happened without gaps.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Rate Limits, Retries &amp;amp; Idempotency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;• Retries only for transient failures (429/5xx/timeouts)&lt;br&gt;• 4xx never retried without fixing request&lt;br&gt;• Client-side throttling implemented&lt;br&gt;• Request IDs prevent duplicate creations&lt;br&gt;• Sandbox vs production limits tested&lt;/td&gt;
&lt;td&gt;A timeout can never create duplicate documents or retry storms.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Final Takeaway: What should you take away before you ship a Signature API integration?
&lt;/h2&gt;

&lt;p&gt;Signature APIs don’t usually fail because the provider is unreliable. They fail because production systems expose the weak spots: expired auth, fragile PDF placement, webhook duplicates, template drift, deliverability gaps, missing audit evidence, and retry storms. If you design for these seven failure points up front, you don’t just “integrate eSignatures”. You build a workflow that stays stable under real load, real documents, and real recipients.&lt;/p&gt;

&lt;p&gt;For detailed implementation guidance, refer to the &lt;a href="https://developers.boldsign.com/api-overview/getting-started" rel="noopener noreferrer"&gt;BoldSign API documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Start your free 30‑day &lt;a href="https://account.boldsign.com/signup?planId=1076&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign trial&lt;/a&gt; today. If you need support aligning these best practices with your workflow, you can reach out through the &lt;a href="https://support.boldsign.com/id/login?ReturnUrl=%2Fid%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3D14da53e04d2dad770eccf8471c640eee%26scope%3Dopenid%2520profile%2520customer.ai.integration.api%26response_type%3Dcode%26redirect_uri%3Dhttps%253A%252F%252Fsupport.boldsign.com%252Fcallback%26state%3DCfDJ8NnO5A_-DupNmQo1SWjxkiaWDrlN-BJtvbSLt-1KOIPnYim1o6gKyYj5o7GfUhxG8BhF5fo8bWcG_PnssU75DkGpTVgu0cIRrufpjWTzoZy8B86jDkDlUIe2IgFkMI7SXbXagYzdo2roe3hiaELEP-_fs1Ux4asSaO-jEbmIAhMhXfHSN8yTYL59Wpx4NK30rxxCcahFfSKhUGCptXrKdN5-OwO72fSbPUUNCF_cN3saeNAHWhW25YNGXRq0akoWMArKdK7GYY8AP2rPfi0JhRqgnViu1bpaNmAXLLNx7x_Z&amp;amp;locale=en-US" rel="noopener noreferrer"&gt;support portal&lt;/a&gt; or schedule a &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt; with our team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/boldsign-collaborative-fields-api" rel="noopener noreferrer"&gt;BoldSign Collaborative Fields for Accurate Multi‑Signer API Workflows&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/move-users-between-teams-api" rel="noopener noreferrer"&gt;Move Users to Another Team with the BoldSign ChangeTeam API&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/audit-trails-download-api-boldsign" rel="noopener noreferrer"&gt;How to Download an Audit Trail PDF Using the BoldSign API&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>api</category>
      <category>boldsign</category>
      <category>saas</category>
    </item>
    <item>
      <title>How Claude and OpenAI Are Redefining AI for Healthcare and eSignature Workflows</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Mon, 23 Mar 2026 06:17:15 +0000</pubDate>
      <link>https://dev.to/boldsign/how-claude-and-openai-are-redefining-ai-for-healthcare-and-esignature-workflows-3ij9</link>
      <guid>https://dev.to/boldsign/how-claude-and-openai-are-redefining-ai-for-healthcare-and-esignature-workflows-3ij9</guid>
      <description>&lt;p&gt;Healthcare doesn’t have diagnosis problem as much as it has workflow problem.&lt;/p&gt;

&lt;p&gt;Clinicians and staff lose hours to administrative tasks: prior authorizations, claims and appeals, care coordination, intake and consent, document retrieval, and reporting. That’s why two of the biggest AI announcements in early 2026, Claude for Healthcare and OpenAI for Healthcare, read less like “AI replaces doctors” and more like “AI helps healthcare teams move faster without compromising privacy.”&lt;/p&gt;

&lt;p&gt;And it’s also why eSignature is becoming a core part of the healthcare AI stack.&lt;/p&gt;

&lt;p&gt;At BoldSign, we see this shift clearly: when AI helps people find, draft, and route documents faster, the bottleneck quickly becomes the last mile, getting the right forms signed, stored, searchable, and audit-ready. That’s exactly where a &lt;a href="https://boldsign.com/hipaa-overview?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;HIPAA-compliant eSignature platform&lt;/a&gt; with AI-powered document capabilities earns its place.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Claude optimizes healthcare: Access, context, time 
&lt;/h2&gt;

&lt;p&gt;Anthropic’s healthcare announcement emphasizes HIPAA-ready infrastructure and connectors that help clinicians and administrators retrieve and understand information across healthcare systems faster.&lt;/p&gt;

&lt;p&gt;Two themes stand out: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Information retrieval across systems&lt;/strong&gt;: The connector approach is aimed at reducing the friction of searching multiple platforms and compiling reports. (&lt;a href="https://www.anthropic.com/news/healthcare-life-sciences" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Workflow acceleration, not medical decision-making&lt;/strong&gt;: The language focuses on tasks that slow teams down, such as coordination, documentation, and admin workflows, rather than diagnosing patients. (&lt;a href="https://claude.com/solutions/healthcare" rel="noopener noreferrer"&gt;Claude&lt;/a&gt;) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The “so what?” for healthcare ops leaders: AI is moving closer to the systems where work happens, including EHR-adjacent tools, registries, policy libraries, clinical-trial ecosystems, while trying to keep compliance front-and-center.&lt;/p&gt;

&lt;h2&gt;
  
  
  How OpenAI for healthcare improves high-quality operations 
&lt;/h2&gt;

&lt;p&gt;OpenAI’s announcement frames OpenAI for Healthcare as a suite designed to help organizations deliver more consistent, high-quality care while supporting HIPAA compliance requirements. (&lt;a href="https://openai.com/index/openai-for-healthcare/" rel="noopener noreferrer"&gt;OpenAI&lt;/a&gt;) &lt;/p&gt;

&lt;p&gt;That wording matters. In practice, it signals: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Healthcare-specific packaging (not “generic chat for everything”)&lt;/li&gt;
&lt;li&gt;  Enterprise compliance posture designed for regulated environments&lt;/li&gt;
&lt;li&gt;  Operational use cases where speed and consistency matter (documentation, communications, administrative workflows)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s the same pattern: AI as a workflow engine, helping teams standardize and accelerate the non-clinical work that impacts patient experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  The missing link in AI for healthcare: Document execution 
&lt;/h2&gt;

&lt;p&gt;AI can draft the intake form. AI can summarize a coverage policy. AI can help staff find the right template.&lt;/p&gt;

&lt;p&gt;But healthcare still runs on documents that must be signed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Patient consent (treatment, procedures, telehealth, HIPAA acknowledgements) &lt;/li&gt;
&lt;li&gt;  Intake packets and insurance authorizations &lt;/li&gt;
&lt;li&gt;  Release of information (ROI) forms &lt;/li&gt;
&lt;li&gt;  Financial responsibility and payment agreements &lt;/li&gt;
&lt;li&gt;  Clinical trial and research consent &lt;/li&gt;
&lt;li&gt;  Vendor BAAs, HR onboarding, compliance attestations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the signature workflow is slow, or worse, non-compliant, AI-generated efficiency gains get stuck at the finish line.&lt;/p&gt;

&lt;p&gt;This is exactly where BoldSign fits into the new healthcare AI landscape.&lt;/p&gt;

&lt;p&gt;BoldSign’s view: AI accelerates document creation and discovery, and BoldSign completes the workflow securely &lt;/p&gt;

&lt;p&gt;BoldSign is built for organizations that need signing workflows that are fast, auditable, and scalable. For healthcare teams, the bar is higher: documents frequently contain PHI, access must be controlled, and auditability is non-negotiable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) HIPAA compliance isn’t a checkbox; it’s operational readiness&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;BoldSign provides a HIPAA compliance path designed for &lt;a href="https://boldsign.com/solutions/electronic-signature-for-healthcare-solutions?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;healthcare&lt;/a&gt; workflows, including support for being treated as a Business Associate and enabling HIPAA mode via a Business Associate Agreement (BAA).&lt;/p&gt;

&lt;p&gt;BoldSign also publishes practical guidance on &lt;a href="https://boldsign.com/blogs/hipaa-compliant-electronic-signature?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;HIPAA-compliant eSignatures&lt;/a&gt;, helping teams understand what “compliant” means in real signing scenarios (not just marketing claims).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) AI features that reduce document friction (before you even hit “Send”)&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Healthcare is document-heavy, and most delays are caused by “small” things: finding the right form, preparing fields, tracking status, and locating the final signed PDF later. &lt;/p&gt;

&lt;p&gt;BoldSign has been investing in AI features aimed directly at those pain points: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;AI Search for documents and templates&lt;/strong&gt;: &lt;a href="https://boldsign.com/blogs/ai-document-search-in-boldsign?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Search using natural language&lt;/a&gt; to find the right agreement or template without perfect recall of titles and filters.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AI Form Field Detection&lt;/strong&gt;: Upload a document and automatically &lt;a href="https://boldsign.com/esignature-ai-form-field-detection?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;detect and place fields&lt;/a&gt; to speed up preparation, especially useful for intake packets, consent forms, and standardized templates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These capabilities complement the direction Claude and OpenAI are taking: reduce time lost to “finding, formatting, and forwarding.” &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Turning AI assistants into action: BoldSign MCP for eSignature automation&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;One of the most interesting developments in workflow automation is bridging AI assistants to real systems safely.&lt;/p&gt;

&lt;p&gt;BoldSign introduced an &lt;a href="https://boldsign.com/blogs/mcp-server-ai-esignature-automation?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;MCP&lt;/a&gt; (Model Context Protocol) approach that lets AI assistants trigger eSignature actions (e.g., send a document from a template, track status) through the BoldSign API returning structured results for clear confirmations and next steps.&lt;/p&gt;

&lt;p&gt;For healthcare ops, that opens up new automation patterns like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  “Send the patient consent packet for tomorrow’s appointment” &lt;/li&gt;
&lt;li&gt;  “Find all unsigned telehealth consents from last week” &lt;/li&gt;
&lt;li&gt;  “Generate a standard ROI form and route it to the patient + compliance officer”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The point isn’t “AI does everything.” It’s AI reduces the clicks, while your signing and compliance system remains the source of truth. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where this is going: healthcare “workflow stacks” will converge around documents&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Claude for Healthcare and OpenAI for Healthcare reinforce a trend: healthcare AI is being productized around repeatable operational workflows with compliance guardrails. (&lt;a href="https://www.anthropic.com/news/healthcare-life-sciences" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt;) &lt;/p&gt;

&lt;p&gt;In the near future, healthcare organizations will assemble workflow stacks that look like this: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; AI assistant layer (summarize, draft, retrieve, guide staff) &lt;/li&gt;
&lt;li&gt; Core healthcare systems (EHR, scheduling, billing, registries) &lt;/li&gt;
&lt;li&gt; Document execution layer (prepare fields, route for signature, store, audit, retrieve)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;BoldSign lives in (3) and increasingly helps with (1) via AI Search, AI field detection, and MCP-enabled automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical examples: what “AI + BoldSign” can look like in healthcare workflows 
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Patient intake &amp;amp; consent&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  AI helps staff choose the right packet based on appointment type &lt;/li&gt;
&lt;li&gt;  BoldSign auto-detects fields and routes to patient + guardian + provider &lt;/li&gt;
&lt;li&gt;  Signed documents become searchable instantly via &lt;a href="https://boldsign.com/electronic-signature-features/ai-search?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;AI Search&lt;/a&gt; for fast follow-up&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Prior authorizations &amp;amp; administrative documentation&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  AI summarizes payer requirements and drafts the supporting cover sheet &lt;/li&gt;
&lt;li&gt;  BoldSign routes the forms for signatures and keeps a clean audit trail &lt;/li&gt;
&lt;li&gt;  Staff can quickly find “the latest signed version” without digging (&lt;a href="https://claude.com/solutions/healthcare" rel="noopener noreferrer"&gt;Claude&lt;/a&gt;) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Research and life sciences&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  AI accelerates regulatory paperwork preparation and review &lt;/li&gt;
&lt;li&gt;  BoldSign keeps signature workflows standardized for study documents and approvals &lt;/li&gt;
&lt;li&gt;  Teams retrieve the exact signed document version when audits or submissions arise (&lt;a href="https://www.anthropic.com/news/healthcare-life-sciences" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt;) &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A compliance note worth repeating 
&lt;/h2&gt;

&lt;p&gt;Even when products are designed to support HIPAA compliance, implementation decisions matter: what data flows where, who has access, what gets logged, and what’s retained. &lt;a href="https://support.boldsign.com/kb/article/21902/how-to-enable-hipaa-compliance-in-boldsign" rel="noopener noreferrer"&gt;BoldSign’s HIPAA&lt;/a&gt; mode and BAA process are part of building that operational rigor into document workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The BoldSign takeaway 
&lt;/h2&gt;

&lt;p&gt;Claude for Healthcare and OpenAI for Healthcare are strong signals that AI’s biggest near-term impact in healthcare is workflow acceleration, helping teams handle the administrative reality of modern care at scale.&lt;/p&gt;

&lt;p&gt;BoldSign’s role in that future is straightforward:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Make signing and document execution fast &lt;/li&gt;
&lt;li&gt;  Keep workflows HIPAA-ready &lt;/li&gt;
&lt;li&gt;  Use AI to reduce document prep and retrieval friction &lt;/li&gt;
&lt;li&gt;  Enable automation that connects AI assistants to real eSignature actions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your organization is exploring healthcare AI initiatives, it’s worth asking a simple question:&lt;/p&gt;

&lt;p&gt;“Once AI drafts or finds the document, how quickly can we execute it, securely?”&lt;/p&gt;

&lt;p&gt;That’s the gap BoldSign is built to fill.&lt;/p&gt;

&lt;p&gt;Start your free 30‑day &lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign trial&lt;/a&gt; today.&lt;/p&gt;

&lt;p&gt;Connect with our &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;support team&lt;/a&gt; for guidance and request a personalized &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt; to see how BoldSign completes your AI‑powered healthcare eSignature workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/boldsign-skill-claude-code-studio-esignature/" rel="noopener noreferrer"&gt;Ship eSignatures Faster with BoldSign Skill for Code Studio and Claude&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/streamline-certification-signatures-in-healthcare-training/" rel="noopener noreferrer"&gt;How BoldSign Streamlines Certification Signatures in Healthcare Training&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/top-5-hipaa-compliant-electronic-signature/" rel="noopener noreferrer"&gt;HIPAA-Compliant eSignature Software for Healthcare: Top 5 Picks in 2026&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt; &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>claude</category>
      <category>openai</category>
      <category>boldsign</category>
    </item>
    <item>
      <title>Ship eSignatures Faster with BoldSign Skill for Code Studio and Claude</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Thu, 19 Mar 2026 04:05:58 +0000</pubDate>
      <link>https://dev.to/boldsign/ship-esignatures-faster-with-boldsign-skill-for-code-studio-and-claude-4471</link>
      <guid>https://dev.to/boldsign/ship-esignatures-faster-with-boldsign-skill-for-code-studio-and-claude-4471</guid>
      <description>&lt;h2&gt;
  
  
  What is a Skill (and why does eSignature need one)?
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;Skill&lt;/strong&gt; is a structured set of reference files you add to your Code Studio workspace and include in the AI context. When you prompt Claude in Code Studio, the model can use those files to generate code that follows the API’s patterns, naming conventions, and best practices. No hallucinated endpoints. No outdated SDKs. &lt;/p&gt;

&lt;p&gt;eSignature APIs are particularly tricky to integrate from scratch. There’s the asynchronous nature of document sending, the webhook choreography for tracking status, HMAC verification, form-field coordinate math, and multi-signer ordering. Without a Skill, Claude might get the broad strokes right but miss the details that break things in production, such as assuming &lt;code&gt;SendDocument&lt;/code&gt; is synchronous or forgetting to verify webhook signatures.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/boldsign/boldsign-esignature-skills" rel="noopener noreferrer"&gt;BoldSign eSignature Skill&lt;/a&gt; encodes all of this knowledge into a package Claude can reference every time you ask for help. Think of it as giving Claude the entire senior developer onboarding guide before it writes a single line of code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anatomy of the BoldSign Skill
&lt;/h2&gt;

&lt;p&gt;The Skill ships as a folder containing a root &lt;code&gt;SKILL.md&lt;/code&gt; and a set of reference files organized by stack and workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    BoldSign/
    ├── SKILL.md                          ← Main entry point Claude reads first
    ├── references/
    │   ├── stacks/
    │   │   ├── nodejs.md                   ← Node.js / TypeScript SDK
    │   │   ├── python.md                   ← Python SDK
    │   │   ├── dotnet.md                   ← .NET / C# SDK — our focus today
    │   │   └── php.md                      ← PHP SDK
    │   └── workflows/
    │       ├── embedded-saas.md            ← Embedded send + sign in iframes
    │       └── multi-signer.md             ← Sequential, parallel, bulk signing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The root &lt;code&gt;SKILL.md&lt;/code&gt; covers the universal concepts: authentication models, rate limits, sandbox vs live environments, webhook events, form field types, text tags, and the critical “document sending is asynchronous” warning. It then directs Claude to load the right stack file, in our case, &lt;code&gt;references/stacks/dotnet.md&lt;/code&gt;, based on your request.&lt;/p&gt;

&lt;p&gt;This layered structure means Claude loads only what’s relevant. Asking for a C# webhook handler won’t pull in the Node.js or Python references, keeping the context window lean.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing the Skill
&lt;/h2&gt;

&lt;p&gt;Using the BoldSign Skill in Code Studio is straightforward. Here’s the process:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Get the Skill folder&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/boldsign/boldsign-esignature-skills" rel="noopener noreferrer"&gt;Download or clone the BoldSign&lt;/a&gt; folder containing &lt;code&gt;SKILL.md&lt;/code&gt; and the &lt;code&gt;references/&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;*&lt;strong&gt;*2. **Upload to Code studio’s Skill directory&lt;/strong&gt;****&lt;/p&gt;

&lt;p&gt;Place the folder in &lt;code&gt;/.codestudio/skills/&lt;/code&gt;. The Skill is automatically triggered when working on BoldSign or document‑signing related tasks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftismhzzor8vrhxoo1y7p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftismhzzor8vrhxoo1y7p.png" alt="Code Studio Dashboard View" width="800" height="427"&gt;&lt;/a&gt;Code Studio Dashboard View&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Select your AI model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open the model selector at the bottom of Code Studio and choose the model you want to use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flw4z1qknuxwiac0g9ms0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flw4z1qknuxwiac0g9ms0.png" alt="AI Model Selection for Code Studio" width="800" height="427"&gt;&lt;/a&gt;AI Model Selection for Code Studio&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Start prompting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just ask AI to integrate eSignature. Once the &lt;code&gt;BoldSign/&lt;/code&gt; folder is added to the AI context, you can prompt normally without any special commands.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx8tokm3wgtzq2dxurwre.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx8tokm3wgtzq2dxurwre.png" alt="Prompt Input for Executing Request" width="800" height="427"&gt;&lt;/a&gt;Prompt Input for Executing Request&lt;/p&gt;

&lt;h2&gt;
  
  
  Popular AI coding agents that support Skill
&lt;/h2&gt;

&lt;p&gt;Many modern AI coding agents allow developers to load external context folders such as the BoldSign Skill, so the agent can generate accurate, SDK aligned integration code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://www.syncfusion.com/code-studio/" rel="noopener noreferrer"&gt;Syncfusion Code Studio&lt;/a&gt; — AI code editor / IDE for enterprise app development. &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://code.claude.com/docs/en/overview" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt; — Anthropic’s AI coding agent for terminal, IDE, desktop, and browser. &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://cursor.com/" rel="noopener noreferrer"&gt;Cursor&lt;/a&gt; — AI-first code editor. &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://docs.github.com/en/copilot/concepts/agents/coding-agent/about-coding-agent" rel="noopener noreferrer"&gt;GitHub Copilot Coding Agent —&lt;/a&gt; GitHub’s coding agent for project tasks and fixes. &lt;/li&gt;
&lt;li&gt;  &lt;a href="https://developers.openai.com/codex" rel="noopener noreferrer"&gt;OpenAI Codex&lt;/a&gt; — OpenAI’s AI coding partner / agent platform.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quickstart: Generate your first eSignature using the Skill
&lt;/h2&gt;

&lt;p&gt;Once the Skill is installed, getting a working eSignature flow is remarkably fast. Here’s a real conversation flow targeting .NET / C#:&lt;/p&gt;

&lt;p&gt;Prompt&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    "Send a PDF for signature using BoldSign in .NET C# with API Key authentication.
    Then add a webhook handler for this flow in ASP.NET Core.
    Finally, generate an embedded signing link so signers can sign inside my app instead of through email, with each part implemented independently."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Send a document&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Claude uses the BoldSign reference files added to context, systematically pulls in &lt;code&gt;references/stacks/dotnet.md&lt;/code&gt;, and generates an implementation-ready example with the NuGet SDK, form field placement, signer configuration, and the critical reminder that sending is async:&lt;/p&gt;

&lt;p&gt;C#&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;BoldSign.Api&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;BoldSign.Model&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;SendDocumentAsync&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;apiClient&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;ApiClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="s"&gt;"https://api.boldsign.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;Environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetEnvironmentVariable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"BOLDSIGN_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;documentClient&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;DocumentClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;apiClient&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;var&lt;/span&gt; &lt;span class="n"&gt;fileStream&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;OpenRead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"contract.pdf"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;documentFile&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;DocumentFileStream&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;ContentType&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"application/pdf"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;FileData&lt;/span&gt;    &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fileStream&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;FileName&lt;/span&gt;    &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"contract.pdf"&lt;/span&gt;
        &lt;span class="p"&gt;};&lt;/span&gt;
        &lt;span class="c1"&gt;// Define where the signature field appears on the PDF&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;bounds&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;Rectangle&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;X&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Y&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Width&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Height&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;50&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;signatureField&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;FormField&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;FieldType&lt;/span&gt;  &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FieldType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Signature&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;PageNumber&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;Bounds&lt;/span&gt;     &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;bounds&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;IsRequired&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt;
        &lt;span class="p"&gt;};&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;signer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;DocumentSigner&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;         &lt;span class="s"&gt;"John Doe"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;emailAddress&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;"john@example.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;signerType&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;   &lt;span class="n"&gt;SignerType&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Signer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;formFields&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;   &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;FormField&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;signatureField&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;sendRequest&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;SendForSign&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Title&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Service Agreement"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;Message&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Please sign this agreement."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;Signers&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;DocumentSigner&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;signer&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="n"&gt;Files&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;IDocumentFile&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;documentFile&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;};&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;documentClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SendDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sendRequest&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"Document ID: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DocumentId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="c1"&gt;// ⚠️ Async — use webhooks to confirm Sent status&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DocumentId&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Add a webhook handler&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Claude generates an ASP.NET Core controller with raw body reading (required for HMAC), &lt;code&gt;X-BoldSign-Signature&lt;/code&gt; verification, and handlers for &lt;code&gt;Completed&lt;/code&gt;, &lt;code&gt;Declined&lt;/code&gt;, and &lt;code&gt;SendFailed&lt;/code&gt; — including the signed PDF download step that many developers forget:&lt;/p&gt;

&lt;p&gt;C#&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;ApiController&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;Route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"webhooks"&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BoldSignWebhookController&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;ControllerBase&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nf"&gt;HttpPost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"boldsign"&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;IActionResult&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;HandleWebhook&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="c1"&gt;// 1. Read raw body for HMAC verification&lt;/span&gt;
            &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;var&lt;/span&gt; &lt;span class="n"&gt;reader&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;StreamReader&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Body&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;body&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;reader&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ReadToEndAsync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="c1"&gt;// 2. Verify HMAC SHA-256 signature&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;signature&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"X-BoldSign-Signature"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;ToString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;secret&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetEnvironmentVariable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"BOLDSIGN_WEBHOOK_SECRET"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;expectedSig&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ComputeHmac&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;secret&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;signature&lt;/span&gt; &lt;span class="p"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;expectedSig&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;Unauthorized&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="c1"&gt;// 3. Parse and route event&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;JsonSerializer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Deserialize&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;JsonElement&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;eventType&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetProperty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"event"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetProperty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"eventType"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;GetString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;documentId&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetProperty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"document"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetProperty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"documentId"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;GetString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;eventType&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s"&gt;"Completed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;HandleCompleted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                    &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s"&gt;"SendFailed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="c1"&gt;// Alert ops — don't silently swallow failures&lt;/span&gt;
                    &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
                &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s"&gt;"Declined"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                    &lt;span class="c1"&gt;// Notify relevant parties&lt;/span&gt;
                    &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;Ok&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;HandleCompleted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="c1"&gt;// Download signed PDF + audit trail&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;pdf&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;documentClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;DownloadDocument&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteAllBytesAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="s"&gt;$"signed/&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.pdf"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pdf&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;audit&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;documentClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;DownloadAuditLog&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;WriteAllBytesAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                &lt;span class="s"&gt;$"signed/&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;-audit.pdf"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;audit&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nf"&gt;ComputeHmac&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;secret&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;keyBytes&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Encoding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;UTF8&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;secret&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;msgBytes&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Encoding&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;UTF8&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetBytes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;var&lt;/span&gt; &lt;span class="n"&gt;hmac&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;HMACSHA256&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;keyBytes&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;hash&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hmac&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ComputeHash&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;msgBytes&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Convert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ToHexString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;ToLower&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Embed signing in the frontend&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Claude produces the C# backend method that generates a short-lived sign link, ready to be loaded in an &lt;code&gt;&amp;lt;iframe&amp;gt;&lt;/code&gt; on your frontend:&lt;/p&gt;

&lt;p&gt;C#&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="nf"&gt;GetEmbeddedSignLink&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;signerEmail&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;signLinkExpiry&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;UtcNow&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddHours&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;24&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;documentClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetEmbeddedSignLink&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;        &lt;span class="n"&gt;documentId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;signerEmail&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;       &lt;span class="n"&gt;signerEmail&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;signLinkValidTill&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;signLinkExpiry&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;redirectUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;       &lt;span class="s"&gt;"https://yourapp.com/signing-complete"&lt;/span&gt;
        &lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SignLink&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// load in &amp;lt;iframe&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Supported workflows &amp;amp; prompts
&lt;/h2&gt;

&lt;p&gt;Here’s a quick reference of what you can ask for and which parts of the Skill Claude will use:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;What you want&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Example prompt&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Skill files used&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Basic document send&lt;/td&gt;
&lt;td&gt;“Send a PDF for signature using .NET C#”&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;SKILL.md&lt;/code&gt; + &lt;code&gt;dotnet.md&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Template-based send&lt;/td&gt;
&lt;td&gt;“Send from a BoldSign template in C#”&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;SKILL.md&lt;/code&gt; + &lt;code&gt;dotnet.md&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Embedded signing&lt;/td&gt;
&lt;td&gt;“Embed signing in my ASP.NET app via iframe”&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;SKILL.md&lt;/code&gt; + &lt;code&gt;dotnet.md&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Embedded sending&lt;/td&gt;
&lt;td&gt;“Let users prepare and send docs without leaving my app”&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;SKILL.md&lt;/code&gt; + &lt;code&gt;embedded-saas.md&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-signer / sequential&lt;/td&gt;
&lt;td&gt;“Set up a 3-party NDA with sequential signing in C#”&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;SKILL.md&lt;/code&gt; + &lt;code&gt;multi-signer.md&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Webhook setup&lt;/td&gt;
&lt;td&gt;“Add BoldSign webhooks to my ASP.NET Core API”&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;SKILL.md&lt;/code&gt; + &lt;code&gt;dotnet.md&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Download signed PDF&lt;/td&gt;
&lt;td&gt;“Download the completed document and audit trail in C#”&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;SKILL.md&lt;/code&gt; + &lt;code&gt;dotnet.md&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Getting webhooks right
&lt;/h2&gt;

&lt;p&gt;BoldSign’s document operations are asynchronous. The API returns a &lt;code&gt;DocumentId&lt;/code&gt; immediately, but the document isn’t “sent” yet. The Skill makes sure Claude never generates code that treats &lt;code&gt;SendDocument&lt;/code&gt; as synchronous. Instead, it always pairs document sending with a webhook handler.&lt;/p&gt;

&lt;p&gt;The key webhook events you need to handle:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Event&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;When it fires&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;What to do&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Sent&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Document processing complete&lt;/td&gt;
&lt;td&gt;Update status to “sent” in your DB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;SendFailed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Processing failed&lt;/td&gt;
&lt;td&gt;Alert your ops team; do not swallow this&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Signed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;One signer completes&lt;/td&gt;
&lt;td&gt;Track progress; for sequential flows, next signer is auto-notified&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Completed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;All signers done&lt;/td&gt;
&lt;td&gt;Download signed PDF + audit trail → store permanently&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Declined&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A signer declined&lt;/td&gt;
&lt;td&gt;Notify relevant parties; the entire doc halts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Expired&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Document passed its expiry date&lt;/td&gt;
&lt;td&gt;Clean up and optionally resend&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;BoldSign retries webhook delivery for up to 8 hours if your server is down, so you have a generous buffer. But always respond with a &lt;code&gt;200 OK&lt;/code&gt; quickly, and do heavy processing (like PDF downloads) in a background task.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common pitfalls the Skill prevents
&lt;/h2&gt;

&lt;p&gt;One of the biggest advantages of a Skill over raw LLM code generation is that it encodes hard-won lessons. Here are mistakes the BoldSign Skill prevents Claude from making:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Polling instead of webhooks&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Polling burns through your rate limit (50/hr in sandbox, 2,000/hr in prod). The Skill always generates webhook-based status tracking.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Using JSON for file uploads&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;File uploads must use &lt;code&gt;multipart/form-data&lt;/code&gt;, not &lt;code&gt;application/json&lt;/code&gt;. The .NET SDK handles this via &lt;code&gt;DocumentFileStream&lt;/code&gt;, but the Skill ensures Claude uses it correctly.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Assuming SendDocument is synchronous&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The API returns a &lt;code&gt;DocumentId&lt;/code&gt; immediately, but the document is still processing. The Skill adds a comment warning and webhook handler every time.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Skipping HMAC verification&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Without signature verification, anyone can POST fake events to your webhook endpoint. The Skill never generates a controller without &lt;code&gt;HMACSHA256&lt;/code&gt; validation.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Hardcoding API keys&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;By Design, every code sample the Skill produces reads credentials securely via &lt;code&gt;Environment.GetEnvironmentVariable&lt;/code&gt; or &lt;code&gt;appsettings.json&lt;/code&gt;, never inline strings.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Forgetting to set the region base URL&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;EU, AU, and CA accounts require a different base URL. The Skill reminds Claude to configure &lt;code&gt;eu-api.boldsign.com&lt;/code&gt; (or the correct regional endpoint) when the user specifies a non-US region.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced: Embedded send + sign architecture
&lt;/h2&gt;

&lt;p&gt;For apps that want the full white-label experience, where neither the sender nor the signer ever leaves your application, the Skill helps generate an embedded send-and-sign architecture. Here’s the flow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your .NET Application&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 1: Sender prepares document&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;POST /v1/document/createEmbeddedRequest&lt;/code&gt; → Returns &lt;strong&gt;sendUrl&lt;/strong&gt; → Load in : sender drags fields, clicks Send&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 2: Signer signs inside your app&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;GET /v1/document/getEmbeddedSignLink&lt;/code&gt; → Returns &lt;strong&gt;signLink&lt;/strong&gt; → Load in : signer reviews and signs&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 3: Webhook events&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Sent → Signed → &lt;strong&gt;Completed&lt;/strong&gt; → DownloadDocument + DownloadAuditLog → store&lt;/p&gt;

&lt;p&gt;The Skill’s &lt;code&gt;embedded-saas.md&lt;/code&gt; and &lt;code&gt;dotnet.md&lt;/code&gt; references give Claude everything it needs to generate: the &lt;code&gt;EmbeddedDocumentRequest&lt;/code&gt; with &lt;code&gt;ShowToolbar&lt;/code&gt;, &lt;code&gt;ShowSaveButton&lt;/code&gt;, and &lt;code&gt;ShowSendButton&lt;/code&gt; configuration; the sign link generation with expiry and redirect URL; and the ASP.NET Core webhook controller that downloads the signed PDF on &lt;code&gt;Completed&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tip — Template-Based Sending:&lt;/strong&gt; If your documents follow a repeatable structure (contracts, NDAs, offer letters), use BoldSign Templates. Create the template once in the BoldSign web app with pre-placed fields, then send via &lt;code&gt;TemplateClient.SendUsingTemplate&lt;/code&gt;. No coordinate math required. The Skill generates the &lt;code&gt;SendForSignFromTemplate&lt;/code&gt; code with role mapping automatically. &lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next
&lt;/h2&gt;

&lt;p&gt;With the BoldSign Skill added to Code Studio, you can seamlessly start generating implementation‑ready eSignature workflows directly from prompts. Begin by building and testing a basic document‑send flow in the Sandbox environment, then extend it with webhooks, embedded signing, templates, or multi‑signer workflows as your requirements evolve.&lt;/p&gt;

&lt;p&gt;To get started, sign up for a free &lt;a href="https://account.boldsign.com/signup?planId=1076&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign Sandbox account&lt;/a&gt; and explore the available APIs and SDKs in the &lt;a href="https://developers.boldsign.com/api-overview/getting-started/" rel="noopener noreferrer"&gt;BoldSign Developer Documentation&lt;/a&gt;. Use the Skill alongside &lt;a href="https://www.syncfusion.com/code-studio/" rel="noopener noreferrer"&gt;Code Studio&lt;/a&gt; to iterate quickly on your integration.&lt;/p&gt;

&lt;p&gt;If you need help during setup or testing, visit the &lt;a href="https://support.boldsign.com/id/login?ReturnUrl=%2Fid%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3D14da53e04d2dad770eccf8471c640eee%26scope%3Dopenid%2520profile%2520customer.ai.integration.api%26response_type%3Dcode%26redirect_uri%3Dhttps%253A%252F%252Fsupport.boldsign.com%252Fcallback%26state%3DCfDJ8NnO5A_-DupNmQo1SWjxkib_UiBYVCKxGQBbNd4g5KPcj4OiUsqPO_xdex17PuNz4jm_TIMkB5QhNcldwHHftAUKHCXlwKIPd6hFrCORjb7Y_99nZK2Be5l-Pc0yOuQCiB2F7ZCv8D64g5chXk0di5L2njanE6TvmeKwxp4LgrkH57jLs7_g2tOJ-JIqjd7zfCl5aMgykkcCuuwALz9WqhcJ05H1LrWN0mkjub4xvnOTMlQ-kzQ28Rlr_MoVnzRS6g0XB-myBThUZs79Gv8stx-iv9ZsA62H-HtLBw0hmR-L&amp;amp;locale=en-US" rel="noopener noreferrer"&gt;BoldSign support portal&lt;/a&gt; to connect with the team.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/google-sheets-to-signature-zapier-live-webinar" rel="noopener noreferrer"&gt;Google Sheets to Signature: No-Code Automation with Zapier – Webinar&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/integrating-boldsign-esignature-apis-in-asp-net-core-app" rel="noopener noreferrer"&gt;Integrating eSignature Solution into your ASP.NET Core app using BoldSign APIs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/exploring-latest-updates-to-identity-api-endpoints-in-dotnet-8/" rel="noopener noreferrer"&gt;Exploring the Latest Updates to Identity API Endpoints in .NET 8&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt; &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>claude</category>
      <category>api</category>
      <category>boldsign</category>
    </item>
    <item>
      <title>E-Signature Retention: How Long Should You Keep Records</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Wed, 18 Mar 2026 06:25:51 +0000</pubDate>
      <link>https://dev.to/boldsign/e-signature-retention-how-long-should-you-keep-records-46aj</link>
      <guid>https://dev.to/boldsign/e-signature-retention-how-long-should-you-keep-records-46aj</guid>
      <description>&lt;p&gt;Picture this: it’s a normal Tuesday, and then “bam” you get an email saying you’ve been selected for an audit. You locate the contract quickly… but then the follow-up question lands: can you prove who signed it, when they signed it, and what exactly they agreed to? And when you think you’re clear, a privacy review asks the opposite: Did you keep that personal data longer than necessary? &lt;/p&gt;

&lt;p&gt;This is the daily balancing act of modern recordkeeping, retaining electronic signatures long enough for legal enforceability but not so long that you violate privacy rules. &lt;/p&gt;

&lt;p&gt;An electronic signature is any electronic method used to indicate a person’s intent to sign or approve a document. Instead of signing with pen and paper, the signer uses a digital process such as typing their name, clicking a button, drawing a signature on screen, or using a secure digital certificate to show agreement to the document’s content. &lt;/p&gt;

&lt;p&gt;In legal terms, an electronic signature is not about the technology itself, but about intent, consent, and attribution. When properly captured and retained, e‑signatures can be legally binding and enforceable, carrying the same legal effect as handwritten signatures in many jurisdictions. &lt;/p&gt;

&lt;p&gt;Common examples include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Signing a contract through an e‑signature platform&lt;/li&gt;
&lt;li&gt;  Clicking to accept terms and conditions online&lt;/li&gt;
&lt;li&gt;  Electronically approving HR forms, invoices, or consent documents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The short answer is that there is no single universal retention period. Instead, electronic signatures must be retained for as long as the underlying record is legally required to be kept. This article explains how retention requirements work, what laws say and don’t say, and how organizations can build a compliant retention strategy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy law vs. State law: Why retention rules can pull in different directions 
&lt;/h2&gt;

&lt;p&gt;Electronic signature retention is shaped by two overlapping legal forces that do not always align neatly:  &lt;/p&gt;

&lt;p&gt;State laws generally address state record‑keeping laws and privacy or data‑protection laws. How long must records be retained to support enforcement, audits, or litigation? These rules often come from statutes of limitation, labor laws, tax regulations, or sector regulators, and they typically push organizations toward longer retention periods to preserve evidentiary value. &lt;/p&gt;

&lt;p&gt;Privacy laws, by contrast, focus on how long personal data should be kept. Most modern privacy frameworks require organizations to retain personal data only for as long as it is necessary for a legitimate legal or business purpose. Once that purpose expires, continued storage can itself become a compliance risk. &lt;/p&gt;

&lt;p&gt;For electronic signatures, this creates a balancing act: organizations must retain signature records long enough to satisfy legal and regulatory obligations, but not longer than justified once those obligations end. A defensible retention policy clearly links the retention period to a legal requirement and defines when and how signature data is securely disposed of afterward. &lt;/p&gt;

&lt;h2&gt;
  
  
  The role of the audit trail in electronic signatures 
&lt;/h2&gt;

&lt;p&gt;An electronic signature is rarely just a visual mark on a document. Its legal strength comes from the audit trail that accompanies it. &lt;/p&gt;

&lt;p&gt;An audit trail typically records key evidence such &lt;strong&gt;as&lt;/strong&gt; who signed, when they signed, how they were authenticated, and whether the document was altered afterward. This metadata is often critical in audits, disputes, or regulatory reviews, where the question is not merely whether a document exists, but whether the signature can be trusted. &lt;/p&gt;

&lt;p&gt;From a retention perspective, the audit trail must be preserved for the same duration as the signed document itself. Retaining only the signed PDF without its supporting audit data can weaken enforceability, while retaining audit data longer than necessary may raise privacy concerns. Well-designed e‑signature retention practices treat the document and its audit trail as a single evidentiary record, governed by the same retention and disposal rules. &lt;/p&gt;

&lt;h2&gt;
  
  
  Electronic signatures and the law: What is actually required 
&lt;/h2&gt;

&lt;p&gt;In the United States and many other jurisdictions, electronic signatures are legally equivalent to handwritten signatures when certain conditions are met. &lt;/p&gt;

&lt;p&gt;Under key laws such as the Electronic Signatures in Global and National Commerce (ESIGN) Act and the Uniform Electronic Transactions Act (UETA): &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  A contract or signature cannot be denied legal effect simply because it is electronic.&lt;/li&gt;
&lt;li&gt;  If a law requires a record to be retained, an electronic version satisfies that requirement, provided it is accurate, accessible, and reproducible for later reference. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, neither ESIGN nor UETA specifies exact timeframes for retention. Instead, they defer to existing record-keeping requirements, industry regulations, and statutes of limitation.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core principle: Retain the signature as long as the record
&lt;/h2&gt;

&lt;p&gt;An electronic signature should be retained for the same duration as the document it signs.  This principle is widely accepted by regulators, courts, and records management authorities.  &lt;/p&gt;

&lt;p&gt;For example: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  If an employment contract must be kept for 7 years, the e-signature evidence must also be kept for 7 years.&lt;/li&gt;
&lt;li&gt;  If tax records must be retained for audit purposes, the electronic signatures associated with those records must remain accessible during that period.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Destroying the signature data before the document’s retention period ends can undermine enforceability and legal defensibility. &lt;/p&gt;

&lt;h2&gt;
  
  
  Typical retention periods by document type
&lt;/h2&gt;

&lt;p&gt;Although requirements vary by jurisdiction, industry, and organization, the following general guidelines are commonly used:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Commercial contracts&lt;/strong&gt; 
&lt;/h3&gt;

&lt;p&gt;Most jurisdictions tie contract retention to statutes of limitation for enforcement. In many U.S. states, the period is 3 to 6 years for written contracts, with some extending to 10 years for real estate or long-term obligations.  &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Employment and HR records&lt;/strong&gt; 
&lt;/h3&gt;

&lt;p&gt;Employment agreements, offer letters, and policy acknowledgements are often retained 5 to 7 years after termination, depending on labor laws and dispute risk. Regulatory bodies emphasize that electronic signatures must remain readable and retrievable throughout this period.  &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Financial and tax records&lt;/strong&gt; 
&lt;/h3&gt;

&lt;p&gt;Tax authorities typically require retention of supporting records for 3 to 7 years. Electronic signatures on invoices, loan documents, or consent forms must be preserved accordingly. &lt;/p&gt;

&lt;h3&gt;
  
  
   &lt;strong&gt;4. Regulated industries&lt;/strong&gt; 
&lt;/h3&gt;

&lt;p&gt;Industries such as banking, healthcare, and life sciences may be subject to extended retention requirements, typically 7 to 15 years, with strict rules on integrity, audit trails, and access controls.  &lt;/p&gt;

&lt;h2&gt;
  
  
  What must be retained along with the signature
&lt;/h2&gt;

&lt;p&gt;Keeping a signed PDF alone may not be sufficient. To ensure legal defensibility, best practice is to retain: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The signed electronic document&lt;/li&gt;
&lt;li&gt;  Audit trails (date, time, IP address, authentication method)&lt;/li&gt;
&lt;li&gt;  Signer consent records&lt;/li&gt;
&lt;li&gt;  Tamper-evident certificates or logs, where applicable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both ESIGN and UETA stress that electronic records must be capable of accurate reproduction for later reference, which includes the ability to prove &lt;em&gt;how&lt;/em&gt; the signature was created.&lt;/p&gt;

&lt;h2&gt;
  
  
  Electronic signature retention periods by industry 
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Key rule:&lt;/strong&gt; Electronic signatures must be retained for the same length of time as the underlying record, and in a form that is accurate, accessible, and reproducible throughout the retention period.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Industry&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Common documents signed electronically&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Typical retention period&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Regulatory / Legal basis&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;General Commercial / Corporate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sales contracts, NDAs, vendor agreements&lt;/td&gt;
&lt;td&gt;3–6 years after contract termination&lt;/td&gt;
&lt;td&gt;Statutes of limitation for written contracts; ESIGN/UETA require records to remain accessible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Human Resources &amp;amp; Employment&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Employment contracts, offer letters, policy acknowledgements&lt;/td&gt;
&lt;td&gt;5–7 years after termination&lt;/td&gt;
&lt;td&gt;Labor and employment record‑keeping rules; records must remain readable and reproducible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Finance &amp;amp; Banking&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Loan agreements, account openings, customer consents&lt;/td&gt;
&lt;td&gt;5–7 years (often longer for active loans)&lt;/td&gt;
&lt;td&gt;Financial regulations and audit requirements; electronic records must be capable of accurate reproduction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Insurance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Policies, claim forms, beneficiary designations&lt;/td&gt;
&lt;td&gt;6–10 years after policy expiration or claim closure&lt;/td&gt;
&lt;td&gt;Industry‑specific record retention laws and litigation risk periods&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Healthcare &amp;amp; Life Sciences&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Patient consents, clinical trial agreements&lt;/td&gt;
&lt;td&gt;7–15 years (or longer for clinical trials)&lt;/td&gt;
&lt;td&gt;Sector regulations require long‑term integrity, audit trails, and accessibility of electronic records&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Government &amp;amp; Public Sector&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Licenses, permits, citizen forms&lt;/td&gt;
&lt;td&gt;As defined by official records schedules (often 7–10+ years)&lt;/td&gt;
&lt;td&gt;Public records and archives rules; electronic records must remain trustworthy and inspectable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tax &amp;amp; Accounting&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tax filings, invoices, audit confirmations&lt;/td&gt;
&lt;td&gt;3–7 years&lt;/td&gt;
&lt;td&gt;Tax authority audit and compliance requirements; ESIGN allows electronic retention if records are accurate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Real Estate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Leases, purchase agreements, disclosures&lt;/td&gt;
&lt;td&gt;7–10 years or longer&lt;/td&gt;
&lt;td&gt;Property and contract limitation periods; heightened evidentiary requirements&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Storage and access requirements matter&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Retention is not just about time; it’s also about usability. &lt;/p&gt;

&lt;p&gt;Regulatory guidance consistently requires that electronic records:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Remain accessible to authorized parties&lt;/li&gt;
&lt;li&gt;  Are protected against alteration or loss&lt;/li&gt;
&lt;li&gt;  Can be retrieved and reproduced during audits, litigation, or inspections&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Failure to maintain proper access, even if the document technically still exists, can be treated as non-compliance. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data privacy and retention: Finding the balance&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Retention laws must be balanced with data protection principles. Privacy regulations generally require organizations not to retain personal data longer than necessary. &lt;/p&gt;

&lt;p&gt;As a result, many organizations adopt a policy of retaining electronic signatures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  For the full legal or regulatory requirement, and&lt;/li&gt;
&lt;li&gt;  No longer than necessary once that requirement expires&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A defensible retention schedule should clearly define when records are destroyed and why. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best practices for electronic signature retention&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;To manage electronic signature retention effectively: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Align retention periods with record type requirements, not the signature itself. &lt;/li&gt;
&lt;li&gt;  Use e-signature platforms that generate audit trails and tamper-evident records. &lt;/li&gt;
&lt;li&gt;  Integrate e-signature records with your records to manage the mentor document management system. &lt;/li&gt;
&lt;li&gt;  Review retention schedules regularly to reflect legal and regulatory changes. &lt;/li&gt;
&lt;li&gt;  Document your policies and ensure consistent enforcement across departments. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Authoritative records management guidance consistently emphasizes that retention planning should occur before electronic signature adoption, not after.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion 
&lt;/h2&gt;

&lt;p&gt;There is no single answer to how long electronic signatures should be retained, but the guiding rule is simple: retain them for as long as the signed record itself must be kept. Laws like ESIGN and UETA ensure electronic signatures are valid, but they place the responsibility for retention squarely on organizations. &lt;/p&gt;

&lt;p&gt;By aligning electronic signature retention with legal requirements, industry regulations, and sound records management practices, organizations can protect themselves from legal risk while maintaining compliance and efficiency.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;Sign up for a free 30-day trial&lt;/a&gt; on the &lt;a href="https://boldsign.com?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign website&lt;/a&gt; or &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;request a demo&lt;/a&gt; to see it in action.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/schedule-contract-delivery-boldsign-api" rel="noopener noreferrer"&gt;Schedule Contract Delivery with BoldSign API Integration&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/boldsign-scheduling-feature-for-hr-onboarding" rel="noopener noreferrer"&gt;How BoldSign Scheduling Feature eases HR Onboarding Timelines&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/advanced-job-scheduling-quartz-net-guide/" rel="noopener noreferrer"&gt;Quartz.NET in Production: Advanced Job Scheduling for High-Traffic .NET APIs&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>records</category>
      <category>boldsign</category>
      <category>documents</category>
    </item>
    <item>
      <title>BoldSign Launches Salesforce eSignature Integration</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Tue, 17 Mar 2026 08:58:13 +0000</pubDate>
      <link>https://dev.to/boldsign/boldsign-launches-salesforce-esignature-integration-gci</link>
      <guid>https://dev.to/boldsign/boldsign-launches-salesforce-esignature-integration-gci</guid>
      <description>&lt;p&gt;BoldSign now offers a direct eSignature integration for Salesforce. If your team already runs on Salesforce, you can now send documents for signature, track their status, and store signed copies, all without leaving your CRM.&lt;/p&gt;

&lt;p&gt;This guide covers what the integration does, how to set it up, and what your team gains once it’s connected.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the integration actually changes
&lt;/h2&gt;

&lt;p&gt;Without an eSignature integration, document work sits outside Salesforce. Teams prepare files in one tool, send them through another, and then manually update CRM records once signing is done. Files land in the wrong place. Follow-ups get forgotten. Records fall out of sync.&lt;/p&gt;

&lt;p&gt;With BoldSign connected, the full document workflow lives inside Salesforce. Sending a contract, checking its status, and storing the signed copy all happen from the same CRM screen your team already uses every day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key features of the BoldSign Salesforce integration
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Send documents from any Salesforce record
&lt;/h3&gt;

&lt;p&gt;Start a signing request from a Lead, Contact, Account, or Opportunity without leaving that record. Signer names and email addresses pull in from Salesforce automatically, so there is no need to copy data or switch between tabs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Auto-fill documents using Salesforce data
&lt;/h3&gt;

&lt;p&gt;Map BoldSign templates to Salesforce fields and documents fill themselves in before they are sent. Contact names, company details, deal values, and dates populate automatically, reducing preparation time and removing the risk of sending a document with missing or incorrect information.&lt;/p&gt;

&lt;h3&gt;
  
  
  Track signing status in real time
&lt;/h3&gt;

&lt;p&gt;See whether a document has been sent, viewed, or signed directly from the Salesforce record. Your team always knows where each document stands without checking a separate tool, which makes timely follow-ups much easier to manage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Store signed copies back to Salesforce automatically
&lt;/h3&gt;

&lt;p&gt;Once signing is complete, BoldSign attaches the final PDF to the Salesforce record it was sent from. No manual upload is needed. The signed document and its audit trail are saved exactly where they belong.&lt;/p&gt;

&lt;h3&gt;
  
  
  Send one-off documents without a template
&lt;/h3&gt;

&lt;p&gt;For documents that do not follow a fixed format, upload a file and send it for signature directly from Salesforce. This is useful for custom agreements, one-time approvals, or anything outside your standard document types.&lt;/p&gt;

&lt;h2&gt;
  
  
  How signing works step by step
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Open a record in Salesforce&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A team member opens any Opportunity, Lead, Contact, or Account and starts a signing request from within that record.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Select a template or upload a document&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They choose a BoldSign template with mapped Salesforce fields, or upload a document for a one-time send. Mapped templates fill with Salesforce data automatically.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw09ppn5e3x8fte8g977r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw09ppn5e3x8fte8g977r.png" alt="Salesforce Record" width="800" height="370"&gt;&lt;/a&gt;Salesforce Record&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Confirm and send&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They review the document and signer details, then send it. The signer receives a secure link by email.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Signer reviews and signs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The signer clicks the link and signs from any device. No account or software is needed on their end.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Status updates on the record&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The signing status on the Salesforce record updates as the signer opens and completes the document.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpo39xnlzag9lpzxjjqgi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpo39xnlzag9lpzxjjqgi.png" alt="BoldSign - Track Document Status" width="800" height="370"&gt;&lt;/a&gt;BoldSign - Track Document Status&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Signed PDF saves to Salesforce&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once all signatures are collected, the completed PDF is automatically attached to the Salesforce record.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi9s73kw2m6i889os8vf3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi9s73kw2m6i889os8vf3.png" alt="Completed Documents" width="800" height="370"&gt;&lt;/a&gt;Completed Documents&lt;/p&gt;

&lt;h2&gt;
  
  
  How to set up BoldSign in Salesforce
&lt;/h2&gt;

&lt;p&gt;Setup requires no coding and is handled by a Salesforce admin. Most teams are ready to send documents on the same day they install the integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Enable Salesforce in your BoldSign account&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Enable Salesforce integration in BoldSign by going to the Settings menu, opening Integrations, selecting Salesforce, and following the prompts to activate it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr5dphvvu0rmnpak5eu26.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr5dphvvu0rmnpak5eu26.png" alt="Enable Salesforce" width="800" height="370"&gt;&lt;/a&gt;Enable Salesforce&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Install from Salesforce AppExchange&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Find BoldSign on the &lt;a href="https://appexchange.salesforce.com/appxListingDetail?listingId=93ffdf51-9da9-4c2a-9887-4beddc60f4ca" rel="noopener noreferrer"&gt;Salesforce AppExchange&lt;/a&gt; and install it into your org following the standard AppExchange process.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqwflbr3x84u77cnd8edk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqwflbr3x84u77cnd8edk.png" alt="BoldSign in Salesforce AppExchange" width="800" height="371"&gt;&lt;/a&gt;BoldSign in Salesforce AppExchange&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Connect your BoldSign account&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go to the BoldSign integration settings inside Salesforce and link your BoldSign account. New users can sign up for a free trial at this point.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjtk0o0elqkrrq5uhilfg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjtk0o0elqkrrq5uhilfg.png" alt="Connect BoldSign into Salesforce" width="800" height="369"&gt;&lt;/a&gt;Connect BoldSign into Salesforce&lt;/p&gt;

&lt;p&gt;Connect BoldSign into Salesforce&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Assign user permissions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Set access for the team members who will send and manage documents. Permissions can be assigned by role to control who can send, view, and track documents.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvbrn2j2dddr06mky1cw5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvbrn2j2dddr06mky1cw5.png" alt="Inviting Users" width="800" height="372"&gt;&lt;/a&gt;Inviting Users&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Map templates to Salesforce fields&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create your standard document templates in BoldSign and map them to the relevant Salesforce fields. Once mapped, those fields auto-fill every time a document is sent using that template.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7wwj1nbesyrk2tb9eh6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7wwj1nbesyrk2tb9eh6.png" alt="Create Template" width="800" height="370"&gt;&lt;/a&gt;Create Template&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd6ac8i0i94ivsdfi8o2a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd6ac8i0i94ivsdfi8o2a.png" alt="Prepare Template" width="800" height="371"&gt;&lt;/a&gt;Prepare Template&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0el5fnz6427zuchnufz3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0el5fnz6427zuchnufz3.png" alt="Configure Template Field" width="800" height="368"&gt;&lt;/a&gt;Configure Template Field&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnqd2255p1c4jquxx4gb7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnqd2255p1c4jquxx4gb7.png" alt="Map the BoldSign field ID to Salesforce source field" width="800" height="370"&gt;&lt;/a&gt;Map the BoldSign field ID to Salesforce source field&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Send your first document&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Test the setup by sending a document from an Opportunity or Contact record, then roll out access to the rest of your team.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this saves your team
&lt;/h2&gt;

&lt;p&gt;Connecting BoldSign to Salesforce removes several manual steps from the document process. Sender spend less time on document preparation because Salesforce data fills templates automatically. Operations teams spend less time filing because signed copies are stored automatically. And everyone spends less time on follow-up because signing status is visible directly in Salesforce rather than buried in a separate inbox or tool. &lt;/p&gt;

&lt;p&gt;The result is a cleaner CRM, fewer dropped documents, and a shorter gap between agreement and signature with the &lt;a href="https://boldsign.com/integrations/salesforce-esignature?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign Salesforce integration&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get started with BoldSign for Salesforce
&lt;/h2&gt;

&lt;p&gt;If your team lives in Salesforce, signing should happen there too. BoldSign keeps sending, tracking, and saving signed documents inside the record, so deals move faster and nothing gets missed.&lt;/p&gt;

&lt;p&gt;Install BoldSign from the AppExchange and start a &lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;free trial&lt;/a&gt; to send your first document today. If assistance is needed Request a &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt; or visit our &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;Support Portal&lt;/a&gt; for quick help.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/embed-esignature-no-code-integration/" rel="noopener noreferrer"&gt;Embed eSignatures with No-Code Integration in WordPress&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/embed-esignature-no-code-integration/" rel="noopener noreferrer"&gt;REST API vs SDK: Which is Best for eSignature Integration&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/schedule-contract-delivery-boldsign-api/" rel="noopener noreferrer"&gt;Schedule Contract Delivery with BoldSign API Integration&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>esignature</category>
      <category>salesforce</category>
      <category>boldsign</category>
      <category>integration</category>
    </item>
    <item>
      <title>Free WhatsApp QR Code Generator for Instant Chat Links</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Mon, 16 Mar 2026 05:55:29 +0000</pubDate>
      <link>https://dev.to/boldsign/free-whatsapp-qr-code-generator-for-instant-chat-links-ncn</link>
      <guid>https://dev.to/boldsign/free-whatsapp-qr-code-generator-for-instant-chat-links-ncn</guid>
      <description>&lt;p&gt;We are excited to introduce the BoldSign &lt;a href="https://boldsign.com/whatsapp-qr-code-generator?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;WhatsApp QR Code Generator&lt;/a&gt;, a fast and user-friendly tool that lets anyone start a WhatsApp conversation in one quick scan. Whether you want customers to reach your business, clients to message you instantly, or attendees to contact support without typing a number, this tool makes communication simple and immediate. &lt;/p&gt;

&lt;p&gt;Messaging people on WhatsApp should be easy, but manually typing numbers or searching contacts often slows people down. With our WhatsApp QR Code Generator, you can instantly create a scannable code that opens a WhatsApp chat with your chosen phone number. You can also prefill a message along with your number to guide users with a ready-to-send text. Perfect for customer support, sales teams, event staff, service professionals, or anyone who wants faster message based communication. Start chats instantly with a QR code that needs no typing, no searching, and no friction. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why should you try this tool
&lt;/h2&gt;

&lt;p&gt;Here’s why this WhatsApp QR Code Generator stands out as a fast, reliable, and user‑friendly option for anyone who wants instant messaging.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;100% Free, No Hidden Cost:&lt;/strong&gt; Create WhatsApp QR codes without paying anything. No watermarks, no limits. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;No Sign Up Required:&lt;/strong&gt; Just enter your number, generate your QR code, and start sharing instantly. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Instant Message Access:&lt;/strong&gt; One scan opens a WhatsApp chat window with your number prefilled. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Privacy First:&lt;/strong&gt; Everything happens within your browser. Your number is never stored or sent anywhere. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Works on All Devices:&lt;/strong&gt; Compatible with phones, tablets, and computers, using any modern browser. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Fast and Simple:&lt;/strong&gt; Generate shareable WhatsApp QR code in seconds with a clean, easy interface. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Key features 
&lt;/h2&gt;

&lt;p&gt;Optimized for professional use, these features provide everything you need to create a clean, customizable WhatsApp QR code with ease.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Secure Processing:&lt;/strong&gt; Your QR code is created directly in your browser to ensure your number stays private. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Easy to Use:&lt;/strong&gt; A clean, simple layout makes creating your WhatsApp QR code effortless. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Cross Platform Support:&lt;/strong&gt; Works perfectly on Windows, macOS, Linux, iOS, and Android. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Customizable Output:&lt;/strong&gt; Adjust QR code pattern color, background color, and size to match your brand or design. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Preview Before Downloading:&lt;/strong&gt; See your QR code in real time before saving. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Reset with One Click:&lt;/strong&gt; Start over instantly without reentering details. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;High Quality Downloads:&lt;/strong&gt; Save your QR code as PNG, JPEG, or SVG for print or digital use. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to get started 
&lt;/h2&gt;

&lt;p&gt;Creating your WhatsApp QR code is quick and hassle free. Follow these easy steps: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Visit the Tool:&lt;/strong&gt; Open the BoldSign &lt;a href="https://boldsign.com/whatsapp-qr-code-generator?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;WhatsApp QR Code Generator&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Enter your WhatsApp number:&lt;/strong&gt; Add the number you want people to contact instantly. &lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Customize your QR code&lt;/strong&gt;: Adjust the pattern color, background color, and size.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Download Your QR Code:&lt;/strong&gt; Save your final QR code as PNG, JPEG, or SVG. Share it on print or digital platforms. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexhsvjc8f7mcjyeggiti.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fexhsvjc8f7mcjyeggiti.png" alt="" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Best ways to use a WhatsApp QR code 
&lt;/h2&gt;

&lt;p&gt;WhatsApp QR codes help people message you instantly without saving your phone number manually. &lt;/p&gt;

&lt;p&gt;Use them on: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Business cards&lt;/strong&gt; – Let people message you without typing your number. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Storefronts&lt;/strong&gt; – Visitors can instantly contact support or sales. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Flyers and posters&lt;/strong&gt; – Ideal for promotions, bookings, and quick inquiries. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Event booths&lt;/strong&gt; – Easy for attendees to reach your team instantly. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Websites and landing pages&lt;/strong&gt; – Convert visitors instantly with one scan. &lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Social media posts&lt;/strong&gt; – Drive direct WhatsApp conversations from your campaigns. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion 
&lt;/h2&gt;

&lt;p&gt;A WhatsApp QR code makes communication faster and easier. It removes manual steps, prevents typing errors, and allows customers or users to message you instantly with a simple scan. Whether you are running a business, managing support, or promoting a service, this tool ensures seamless and immediate WhatsApp engagement. &lt;/p&gt;

&lt;p&gt;Create your &lt;a href="https://boldsign.com/whatsapp-qr-code-generator?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;WhatsApp QR Code&lt;/a&gt; with BoldSign today and make conversations effortless. &lt;/p&gt;

&lt;p&gt;Want to streamline more workflows? Try a free &lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign&lt;/a&gt; trial and explore our secure e-signature platform. &lt;/p&gt;

&lt;p&gt;For more details about BoldSign’s features, schedule a personalized &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt; or contact our support team via our &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;support portal&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/generate-sms-qr-code-online" rel="noopener noreferrer"&gt;Start Conversations Effortlessly with SMS QR Codes&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/generate-qr-code-for-wifi" rel="noopener noreferrer"&gt;Generate a Wi-Fi QR Code: Free, Simple, and Secure&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/generate-twitter-qr-code-online" rel="noopener noreferrer"&gt;Introducing BoldSign’s Twitter QR Code Generator&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt;  &lt;/p&gt;

</description>
      <category>esignature</category>
      <category>sms</category>
      <category>qrcodes</category>
      <category>boldsign</category>
    </item>
    <item>
      <title>Why SOC 2 Certification Matters for E-Signature Platforms</title>
      <dc:creator>Vijay Amalan</dc:creator>
      <pubDate>Thu, 12 Mar 2026 05:39:35 +0000</pubDate>
      <link>https://dev.to/boldsign/why-soc-2-certification-matters-for-e-signature-platforms-18gc</link>
      <guid>https://dev.to/boldsign/why-soc-2-certification-matters-for-e-signature-platforms-18gc</guid>
      <description>&lt;p&gt;E-signature platform providers operate in a high-risk area. This is due to the fact that they often handle legally binding documents, PII, financial data, and metadata on authentication. E-signature platforms are often considered critical vendors for companies that use them. This means it is essential to choose a software provider that maintains high standards for security and legal compliance.&lt;/p&gt;

&lt;p&gt;A SOC 2 report is one method to validate the security and compliance of an e-signature platform provider. It is a rigorous auditing procedure developed by the American Institute of CPAs (AICPA) that ensures service providers manage data securely to protect the interests of their clients and the privacy of their clients’ customers.&lt;/p&gt;

&lt;p&gt;In this blog, we will explore what customers should verify beyond just “does the provider have a SOC 2 report?” and outline some key items customers should pay attention to when evaluating an e-signature software provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an e-signature
&lt;/h2&gt;

&lt;p&gt;An electronic signature, more often called an “e-signature,” is an increasingly common method of signing one’s name on a document. An e-signature includes typing one’s name into signature box or using a cursor to digitally draw one’s signature onto a document and then clicking “I Accept.” An e-signature can carry legal validity, and as such, it is important to use an e-signature service provider whose technical measures are in line with your compliance requirements to ensure e-signature validity.&lt;/p&gt;

&lt;h2&gt;
  
  
  What SOC 2 is and is not
&lt;/h2&gt;

&lt;p&gt;SOC 2 is an independent assurance report, not merely a certification or badge, issued by a licensed CPA firm using AICPA Trust Services Criteria. SOC 2 evaluates controls, not products or features.&lt;/p&gt;

&lt;p&gt;Trust Services Criteria Overview&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Security&lt;/li&gt;
&lt;li&gt;  Availability&lt;/li&gt;
&lt;li&gt;  Processing&lt;/li&gt;
&lt;li&gt;  Integrity&lt;/li&gt;
&lt;li&gt;  Confidentiality&lt;/li&gt;
&lt;li&gt;  Privacy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For e-signature software providers, Trust Services Criteria are important to pay attention to. Security can mean access control and encryption for protecting contracts and attachments. The availability principle guides providers’ uptime commitments and disaster recovery. Meeting processing and integrity criteria demonstrates accurate execution of signing workflows. Privacy and Confidentiality (especially when PII is involved) address the management of personal information and ensures that it is collected, used, retained, and disclosed in accordance with privacy policies and regulations.&lt;/p&gt;

&lt;h2&gt;
  
  
  SOC 2 Type I vs. Type II: what customers should expect
&lt;/h2&gt;

&lt;p&gt;Customers increasingly expect Type II over Type I reports. There is a clear reason why.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type I:&lt;/strong&gt; Point‑in‑time review of control design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type II:&lt;/strong&gt; Controls tested over time (typically 3–12 months).&lt;/p&gt;

&lt;p&gt;Type I may be acceptable for early‑stage vendors or for providers in the middle of a transition period. However, Type II has an obvious edge due to its ability to provide assurance of operating effectiveness over a longer period.&lt;/p&gt;

&lt;h2&gt;
  
  
  What customers should verify in an e‑signature software provider’s SOC 2 report
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Scope: what systems are actually covered&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The scope description should be reviewed by customers to verify that the specific e-signature platform provider is in scope, not just the overarching corporation. Overly narrow system descriptions can be a red flag as it may indicate the report is not fully encompassing the systems you will be utilizing. On the other hand, an overly broad or vague scope can be a red flag, as the specifics of the platform you are using may not have been reviewed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Audit period and report currency: is the report still valid&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Customers should review the date of the audit report provided to them. SOC 2 reports are valid for 1 year from issuance, so note if the audit was completed within the last 12 months. An outdated report should weaken the assurance you have in a provider. At minimum, customers should inquire as to when or if the provider expects to have a new report published soon. If one is planned, customers should wait and review the new report for the most up-to-date view of the provider’s information security controls.&lt;/p&gt;

&lt;p&gt;Customers should also pay attention to the audit period length: was it short or a meaningful review window? There is a difference between an audit report demonstrating an organization was able to keep its security controls effectively operating for 12 months versus a three-month window.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Complementary controls: does the provider maintain relevant controls&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Customers should look for the controls that align with their needs concerning e-signatures. Some relevant controls to review could be those related to incident responses and breach notifications to ensure proper alignment with your regulatory needs.&lt;/p&gt;

&lt;p&gt;Depending on your location, you may want to review controls that support compliance with e-signature laws within your jurisdiction. These could include controls relating to data integrity, encryption, and audit trails.&lt;/p&gt;

&lt;h2&gt;
  
  
  How SOC 2 fits into vendor due diligence for e‑signatures
&lt;/h2&gt;

&lt;p&gt;SOC 2 reports can be seen as a starting point, not the full security review. Customers can review a report in depth to validate if their requirements are met through the specific controls a company has in their report. This review can accompany security questionnaires, legal reviews, and technical reviews that you may want to conduct.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: Importance of an e‑signature provider’s SOC 2 report
&lt;/h2&gt;

&lt;p&gt;A SOC 2 report should provide a clear scope, include relevant Trust Services Criteria, and have a recent audit period. Customers should be sure to ask informed questions based on their industry, company needs, and compliance requirements. A SOC 2 report is part of building a relationship of trust between e-signature platform providers and their customers. It demonstrates commitment to security and transparency.&lt;/p&gt;

&lt;p&gt;You can review information on BoldSign’s SOC 2 Type II report &lt;a href="https://boldsign.com/soc2-overview?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;here&lt;/a&gt;. Additionally, new and existing customers can use this form to submit a request to review BoldSign’s most recent SOC 2 Type II &lt;a href="https://boldsign.com/soc-2-request-form?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;report&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Want to get your documents signed legally? Try a free &lt;a href="https://account.boldsign.com/signup?planId=1018&amp;amp;utm_source=boldsignblogs&amp;amp;utm_medium=redirect&amp;amp;utm_campaign=boldsign&amp;amp;utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;BoldSign&lt;/a&gt; trial and explore our complete e-signature platform. &lt;/p&gt;

&lt;p&gt;Need help? Schedule a &lt;a href="https://boldsign.com/request-demo?utm_source=devto&amp;amp;utm_medium=referral&amp;amp;utm_campaign=repurposed_blogs" rel="noopener noreferrer"&gt;demo&lt;/a&gt; or contact our support team via our &lt;a href="https://support.boldsign.com/support/tickets/create" rel="noopener noreferrer"&gt;support portal&lt;/a&gt;. You can also visit the &lt;a href="https://support.boldsign.com/kb/category/178" rel="noopener noreferrer"&gt;BoldSign help center&lt;/a&gt; for quick step-by-step guides.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related blogs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/boldsign-g2-top-esignature-solution-2025" rel="noopener noreferrer"&gt;BoldSign Recognized as G2’s Top Trending E-Signature Platform 2025&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/syncfusion-boldsign-is-now-soc-2-type-2-compliant" rel="noopener noreferrer"&gt;Syncfusion’s BoldSign is now SOC 2 Type 2 Compliant&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://boldsign.com/blogs/boldsign-wins-no1-dev-choice-postcon-2025/" rel="noopener noreferrer"&gt;BoldSign Takes Home Postman Developer’s Choice Award 2025&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This blog was originally published at &lt;a href="https://boldsign.com/blogs" rel="noopener noreferrer"&gt;boldsign.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>esignature</category>
      <category>boldsign</category>
      <category>soc2</category>
      <category>certification</category>
    </item>
  </channel>
</rss>
