S-Docs 4.347

Major Updates:

Refreshed Template Editor UI

  • We've cleaned up and standardized the Template Editor from top to bottom to provide a more consistent and intuitive experience for users of all skill levels. Read more about how our sleek new look will streamline your document-building workflows while preserving the user experience you're accustomed to in this blog post.

Callable Apex

  • Need to evaluate complex logic to produce values to merge into your templates? You can now leverage your own custom Apex classes to generate merge field values in your S-Docs templates. Find out more about the Callable Apex feature in this documentation article.

Switch Statements

  • You can now simplify certain conditional statements into just a few lines. The Switch feature allows you to create switch statements that evaluate hundreds of field conditions at once. Find out more about using switch statements in your templates in this documentation article.

Access Deeper Object Relationships

  • You can now merge field data into your templates from objects up to 5 relationships removed from your base object. There's no need to write any syntax yourself; use the Insert Field button and let S-Docs do the work for you.

Document Storage Integrations

  • Automatically storing your documents in Google Drive, Box, or Amazon S3 has never been easier. We've updated our integrations to deliver a more up-to-date and consistent experience.

Minor Updates:


  • Support was added for the Related List Runtime Prompt type. This feature displays records from a related list on the Runtime Prompts page and allows the user to select which records should be merged into the document
    • Usage: Create a new Runtime Prompt and select the Related List type. Copy and paste the generated tags (e.g. <runtimeprompts>RTP-NAME</runtimeprompts>) into the <LineItemsSOQL> block that you want to display on the Runtime Prompts page at runtime. Check out this documentation article for more information
  • Added the “Insert Image” button to the S-Docs Live Edit page
  • Modified the Live Edit “Preview” button verbiage to “Preview Last Save,” allowing you to preview your last saved edits without saving again
    • This also adds the “Revert Last Save” button
    • The temporary document used to accomplish this feature is stored as an attachment on the S-Doc record
  • Support was added for conditional rendering in CSS
  • Support was added for <preprocess>true</preprocess> tags in Callable Apex definitions
    • This will cause the callable apex merge fields to be replaced first, then return the template XML without any other processing
  • Modified the functionality of the Delete Related Attachment upon S-Doc delete checkbox in the template editor to now delete related Salesforce File records upon S-Doc deletion as well
  • Support was added for the useDynamicViewLink parameter
    • Usage: If useDynamicViewLink=’true’, any event involving sending a document to external storage will refresh the View Link button
    • This also updates the View Link field on the SDoc object to be able to be set by a ‘document Uploaded to Box’ event
  • Removed Contact.Title as a default field when the template’s Related To Type is Contact
  • Added new global methods to allow for bulk updates of large numbers of templates via the Salesforce Developer Console
    • Example:
      List<SDOC__SDTemplate__c> sdtemplates = [SELECT Id FROM SDOC__SDTemplate__c];
      for (SDOC__SDTemplate__c sdtemplate : sdtemplates) {
      //modify templates here
      sdtemplate.SDOC__Template_XML__c = sdtemplate.SDOC__Template_XML__c.replace('####','#,###');
      update sdtemplates;
  • Support was added for holding template XML source in an attachment when it’s too long for standard XML fields
  • Support was added for using the XML S-Doc Template Format with Mass Merge
    • This must be a template with a master tag. You can set your master tag in the Document Options tab in the Template Editor (under Mass Merge Settings)
  • Added a new custom setting “Allow Templates With Error to Generate,” which will convert non-critical errors to warnings, allowing users to generate templates that would previously halt upon the error
    • A warning message will still be displayed, but the templates will be able to be generated
  • Added the Product2 (Product2__c) field to the SDoc Relationship object, which prevents users from needing to create the field themselves after running into an Invalid Field error
  • Made noOutputIfEmpty=’true’ the default behavior for <template> tags
  • Ordered Org-Wide Email Addresses by label in the template editor, instead of email
  • The From picklist on the S-Docs email page now sorts by Display Name to Org-Wide Email Addresses
  • Support was added for date arithmetic 
    • Support was added for using YearsBetween with date arithmetic
      • Example: <MATH type="date">YearsBetween({{!Opportunity.createdByDate}},{{!Opportunity.closedate}}</MATH>
      • For more information, view our documentation article on arithmetic functions
  • Added parentheses encoding on Strings within render statements that are between quotes
    • Templates with render statements which are trying to compare strings that involve parentheses will require a new save for this new encoding to be applied
  • Support was added for LineItemsSOQL Render tags in the Named Query feature
  • Support was added for the checkbox=”black” and reverse_checkbox=”black” attribute for merge fields and related lists. This will merge in a checkbox image with a solid black border
    • You can use {{!Object.Field checkbox=”true”}} or {{!Object.Field checkbox}} to render the old checkbox image
    • We recommend using checkbox=”black” in S-Sign templates, as S-Sign will be using the new checkbox image
  • Support was added for re-uploading a PDF for PDF-Upload templates without moving any placed merge/input fields
  • The delete button for records in the S-Docs related list now asks for confirmation in Salesforce Lightning
  • Support was added for images and list styling for multi-level DOCX components
  • Support was added for pagination in the Insert Field, Insert Related List, and Insert Conditional Logic field picklists. This allows you to set how many fields should be displayed on each page of the picklist
    • The size of the page can be configured by setting the template editor Page Size custom setting to the number of fields per page desired. If no value is provided, the default page size is 995
  • Support was added for automatically populating custom lookup fields to the record specified by the S-Docs Jobs Oid__c field
    • This is useful for supporting any base object for the Mailing Labels template from the S-Docs Template Library
    • Example (standard object): Create a lookup field to Opportunity on the S-Docs Job Object with API Name Opportunity__c. When you create an S-Docs Job on an Opportunity, that lookup field will be populated with the corresponding Opportunity record and it can then be referenced in SOQL queries to grab fields from that Opportunity.
      • For custom objects, the lookup field API name should be exactly the same as the custom object name (e.g. if the object name is My_Custom_Obj__c, the lookup field API name should also end up being My_Custom_Obj__c)
      • Note that Account and Contact lookup fields come pre-packaged
  • Support was added for using the doclist parameter in PDF-Upload to generate other documents alongside the one-off
  • Added the “Download most recently uploaded XLSX” button to the Template Editor when the Template Format is XLSX
  • Added the “Download most recently uploaded PPTX” button to the Template Editor when the Template Format is PPTX
  • Support was added for JSON on the LineItemDataXML__c, RecordDataXML__c, and RecordData2XML__c fields for S-Doc Job
  • Support was added for creating new Salesforce Attachments each time a document is edited using the Live Edit feature
    • Usage: Check the Create New Attachment with Each Edit checkbox in the Document Options tab of the Template Editor. Each time you use the Live Edit feature to edit a document generated with that template, the S-Doc record’s data will be updated, a new attachment will be created and labeled with the attachment name and the date/time that the edit was made, and the name of the original document will be changed to mark it as the original
  • Removed querying of certain fields on standard objects by default (specifically linked Contacts and addresses for Account and Opportunity)
    • If someone is using special contact picklist fields, these fields will be queried, and the user will need to have access to all these fields. Otherwise, they are not applied since they are not needed
  • Modified the syntax for RTL styling
    • Usage: Use <rtl> instead of <span dir=”rtl”>
  • Modified the behavior of Mass Merge before email events to allow the user to edit the email and/or the attachment and then click a button to send the email
  • Support was added for merging external lists into S-Docs templates
    • Usage: External lists are specified as <LineItems> in a template and should have the attribute externalList="true" within <listname> tags. They are then populated based on the LineItemDataXML field of the corresponding SDJob. Please view this documentation article for more information
  • Support was added for inserting/updating license keys on the S-Docs License page
  • Support was added for translating the labels for Additional Fields and the drop down menus on the template selection page
  • Support was added for component template attributes
    • These are used to pass merge fields/information values into component templates
    • Usage: {{{{!ComponentName attribute="value"}}}}
    • Example:
      Parent Template: {{{{!Component example="{{!Object.Example__c}}"}}}}
      Component Template: {{!example}}
  • Updated our rich text editor to use pt instead of px
  • Removed Helvetica as a second option to the Arial font family
  • Removed “Yes” and “No” as the default output value for checkboxes. “True” and “False” are now the default output values
    • To opt into using “Yes” and “No” instead, set the yes_no attribute to true
    • Example: <column yes_no=”true”>...</column>

Related List Column Attributes

  • Removed case sensitivity for related list column attributes
  • Support was added for the escapeRenderOutput attribute on columns with a render attribute
    • Usage: If escapeRenderOutput =’false’, the results of the render will not be escaped

Merge Field Attributes

  • Removed case sensitivity for merge field attributes
  • Support was added for the display merge field attribute
    • Usage: If display=”true”, the merge field value will be translated based on translations defined in the Salesforce Translation Workbench. This attribute functions the same as the translate attribute
  • Support was added for translate, tolowercase, and touppercase merge field attributes
    • Example:  {{!Opportunity.Name translate=”true”}}
  • Altered strip-render’s behavior with parentheses to replace the ( and ) characters with their unicode ascii values rather than just removing them, so comparisons can still be made in render statements
    • If a complex render statement isn’t working as intended while using parentheses within a comparison string, you can use &#40; and &#41; in place of ( and ) in that comparison string
  • Applied strip-render to any merge field that has either the strip-render or usedInRender attribute set to true

S-Sign 2.141

Major Updates:

Refreshed S-Sign Panel UI

  • We didn't stop at refreshing the S-Docs Template Editor - the S-Sign panel got a new coat of paint, too. Build e-signature request templates using a modern, refined UI that's consistent with the rest of your document-building workflows.

Document Signing Order

  • Sending multiple documents in a single e-signature request? You can now specify the order in which each one should be signed. To learn more about the flexibility provided by this and other S-Sign template settings, please visit this documentation article.

Increased Flexibility for In-Progress Requests

  • Ever had an e-signature request halt due to a signer being out-of-office or otherwise unreachable? You can now resume an active S-Sign request as the current signer directly from Salesforce and keep the signature process moving.

Minor Updates:


  • Support was added for making S-Sign Date fields required. This will remove auto-population of the current date when the value is empty
  • Support was added for writing back to Salesforce number fields
  • Removed “Delete”, “View All” and “Modify All” permissions on all S-Docs and S-Sign objects in the S-Sign Site Guest User permission set per Salesforce Summer ‘20 requirements
  • Support was added for choosing whether the confirmation email is sent as one email to all signers or an email to each signer
    • This can be configured in the S-Sign panel in the template editor
  • Support was added for using merge fields for the Signed Document name and the Signed Document with Audit Trail name. You can find both fields in the S-Sign template settings
  • Set the owner of documents created during the signing process to the owner of the S-Sign Envelope Document they are related to
  • The Print Documents button on the generated documents page is now only available for in-person sign requests
    • This will only show up if the showSSignPrintDocuments parameter on the S-Docs button is set to “true”
  • Support was added for disabling Text-To-Signature org-wide
    • This can be configured on the S-Sign Configuration page by checking the When signing a S-Sign Request, prevent the signer from using the Text-To-Signature feature checkbox
  • Added the Reply To Email custom setting. This accepts a valid email address, which will be used as the Reply-To address for all S-Sign emails
  • Support was added for additional style on checkbox inputs
    • If adjusting checkbox size, include a height and a width measurement in px 
  • Modified S-Sign checkboxes to use the new solid black bordered checkbox image
    • These can be referenced in S-Docs version 4.314+ by using checkbox=”black”
  • Support was added for disabling the email requirement for Sign In-Person events
  • Support was added for disabling “intermediate” emails (i.e. “there are still X signers remaining…”)
  • Support was added for writing the signer’s typed name (applicable for signature and initial fields) back to Salesforce
  • Support was added for including the bounced email body in the bounced email notification
  • Support was added for modifying the resolution of PDFs on the mobile signing page using the Mobile PDF Page Resolution field in the S-Sign panel
    • The default resolution for desktop is 2.5, and the default value for mobile is 1.0. Higher values can cause longer load times
  • Updated the version of SendGrid used with Verification Code emails sent out from V2 to V3
    • This update was made to proactively avoid “406 Not Acceptable” errors