Frequently Asked Questions

An answer exists

for every question

Licenses & Pricing

What is the free version of S-Docs?

The free version of S-Docs allows you to create two templates and generate an unlimited number of documents without any restrictions on the number of Salesforce users. They are production ready and do not have an expiration date. The online resources are available for all support related questions.

How do the Starter Packs work?

Starter Packs are for Orgs with between 1 - 25 Salesforce users and are broken down as follows:

Starter Pack A = 1 - 10 Salesforce users, priced at $1,500 per year and includes unlimited templates and documents

Starter Pack B = 11 - 25 Salesforce users, priced at $3,000 per year and includes unlimited templates and documents

Support is restricted to the online resources and available to all. View a full breakdown of the differences between all plans here.

What is S-Docs Unlimited Edition?

S-Docs Unlimited Edition is for Orgs with more than 25 Salesforce users and priced at $16 per user per month billed annually. Discounts start with a purchase of 50 S-Docs licenses. It allows you to create an unlimited number of templates and provides you with full live support. S-Docs Unlimited Edition includes the following features:

  • Access to our pre-built template library
  • Batch processing
  • Automation and workflow
  • Dynamic content rendering
  • Run-time prompts
  • Integrations with Google Drive and Amazon S3
  • Upgradable to the S-Docs & S-Sign bundle for e-signature functionality.

View a full breakdown of the differences between all plans here.

What is the S-Docs & S-Sign Bundle?

The S-Docs & S-Sign bundle package includes S-Docs Unlimited Edition bundled with S-Sign, our 100% native e-signature solution. This package is for mid to large organizations looking for a comprehensive, all-in-one solution that pairs the power of native document generation with native e-signature. With the S-Docs and S-Sign bundle package, users can take advantage of the features of S-Docs Unlimited Edition alongside those of S-Sign, including:

  • Send unlimited S-Sign e-signature requests
  • Send multiple documents to multiple signers
  • Create dynamic signer profiles
  • Add text, checkbox, and picklist fields to your e-signature documents
  • Write signer data directly back to Salesforce
  • Automate your e-signature workflow

View a full breakdown of the differences between all plans here.

Can I purchase S-Sign without S-Docs?

No, currently S-Sign can only be purchased through the S-Docs & S-Sign bundle.

I have more than 10 salesforce users; can I still purchase Starter Pack A for $1500?

Yes. As long as you have 25 or fewer Salesforce users in your org, you can purchase either Starter Pack. Starter Pack A will allow S-Docs access for up to 10 of your Salesforce users.

Can I purchase a Starter Pack if I have more than 25 Salesforce users?

No, orgs with more than 25 Salesforce users need to purchase S-Docs Unlimited Edition.

Is it possible to purchase S-Docs Unlimited Edition if I have less than 25 Salesforce users?

Yes, anyone can upgrade to S-Docs Unlimited edition for a starting price of $4,992 per year

Does everyone in our Org need to be licensed?

No, S-Docs licenses are needed for everyone in the org who creates a document or needs to use, view or send a document within Salesforce. This could mean all users in the org, or just a subset of users. If you have users with functions that do not require any access to the generated documents from within Salesforce, then these users do not require an S-Docs license. However, if you have more than 25 Salesforce users in your Org, you are required to purchase a minimum of 26 S-Docs licenses for access to S-Docs Unlimited Edition.

What edition of Salesforce do I need to use S-Docs?

S-Docs requires the Unlimited Edition (UE), Enterprise Edition (EE), Performance Edition or Developer Edition (DE). It is not compatible with Professional Edition (PE) or Salesforce Essentials.

Can some users be on the free version and some on the paid version?

No, all users need to be on the same version.

Do you offer discounts for nonprofits?

Yes! Nonprofits are eligible for a discount. Please contact sales@sdocs.com for a quote.

Do you offer volume discounts?

Yes! If you have 50 or more Salesforce users, please contact sales@sdocs.com for a quote.

Do S-Docs admins and users have different license types?

No. There is only one S-Docs license type and it covers admins and users alike.

Installation

How do I upgrade to the latest version of S-Docs?

To upgrade S-Docs to the latest version, simply follow the instructions in Upgrading S-Docs to the Latest Version.

How do I install and configure S-Docs?

To install and configure S-Docs, simply follow the instructions in the S-Docs Quick Install & Config Guide.

Capabilities

Where are documents generated by S-Docs stored?

Since S-Docs is 100% native to the Salesforce platform, your documents are stored as records in your Salesforce organization. We call these documents "S-Docs". For any standard or custom object, you can create a related list of S-Docs that displays all the documents that have been generated for a given record. In addition to S-Docs being saved as records in Salesforce, you also have the option to save your S-Docs as Attachments or files on your records. S-Docs is also integrated with Amazon S3, Box and Google Drive in case you require off-platform document storage options.

Where are my templates stored?

By default, all of your Templates and their data are created and stored as data records in Salesforce (object name: S-Docs Templates). S-Docs does not store any data on external servers. For most templates, you create your template directly within the Salesforce UI and save the template content to a S-Docs Template record. If you have existing templates, such as complex DOCX or PDF files, you have the option to upload your existing templates and then map Salesforce merge fields. In this case, your templates are saved as an attachment on the S-Docs Template record.

Does S-Docs work with Salesforce Mobile?

Yes! To learn how to set up S-Docs for Salesforce mobile, please visit:
https://www.sdocs.com/documentation/using-sdocs-with-salesforce1/

Does S-Docs work with Salesforce communities?

Yes! To learn how to set up S-Docs for use with communities, please visit:
https://www.sdocs.com/documentation/using-sdocs-with-communities/

Does S-Docs work with Custom Objects?

Yes! S-Docs works great with custom objects including those in other third party apps. To use custom objects with S-Docs, a bit of configuration is required. Documentation on this matter is provided through the following links:
https://www.sdocs.com/documentation/configuring-s-docs-with-custom-objects/
https://www.sdocs.com/documentation/use-s-docs-with-your-custom-object/

Does S-Docs work with batch processing and workflow automation?

Yes, S-Docs works with batch processing and workflow automation. Documentation on these use cases can be found here.

S-Docs document automation is accomplished through the S-Docs Job object in conjunction with Process Builder, Apex code, or Salesforce flows; with this method, we recommend you use the Salesforce Process Builder instead of workflows, as it is easier to implement.

S-Docs Jobs are also used behind the scenes in the batch document feature. For information on setting up and configuring this feature, please visit:
https://www.sdocs.com/documentation/mass-merge-batch-document-feature/

Does S-Docs support aggregate functions in SOQL queries?

S-Docs supports aggregate functions in SOQL queries. To use this feature, you would need to specify an alias and use that in the column mapping. For example:
<soql>SELECT sum(amount) myAlias FROM opportunity</soql>
<column>myAlias</column>

For more information on this feature, please visit:
https://www.sdocs.com/documentation/using-s-docs-direct-soql-feature-for-related-list/

Does S-Docs support the Salesforce Translation Workbench?

Yes! S-Docs and S-Sign allow you to translate the UI as well as merge fields and field labels.

For more information on translating S-Docs and S-Sign, please visit the following links:

Can S-Docs generate PDFs with fillable fields?

S-Docs does not support the collection of data via PDF files. However, this can be accomplished with the S-Sign add-on product. We strongly recommend that data collection happen in a web form whenever possible. Collecting information via a PDF requires reconciliation and does not allow for data validation or data enrichment. These are better handled by leveraging Salesforce sites/communities and then automatically generating the PDF on submission.

Can S-Docs import pre-existing PDFs into the template editor?

S-Docs does not have a built in functionality for importing PDFs. You will need to convert your PDF to HTML, since S-Doc templates are written in HTML. Here are some resources for converting PDF to HTML:
http://www.zamzar.com/convert/pdf-to-html/
http://www.pdf.investintech.com/
These conversion services may yield inaccurate results, especially for complex PDFs, so some fine-tuning may be necessary.

Template Design

How can I format my related list columns to display numbers as currency?

To display a piece of numeric data in your related list as currency, you would set the format-number attribute to "#,###.##" and the prefix attribute to the relevant currency symbol.

For example, consider the following:
<column format-number="#,###.##" prefix="$" >totalprice</column>

In this example, if “totalprice” is 45200.40, the column might look like the following:
$ 45,200.40

Note that your output may vary, as space between “$” and “45200.40” varies depending on the width of the column. Additionally, other HTML positioning attributes that you may have set may affect how your data is displayed.

This feature and other advanced S-Docs template features are explained here:
https://www.sdocs.com/resources/documentation/s-docs-advanced-customization/

Can I place a merged field inside of an HTML tag?

Yes, S-Docs supports the placement of merged fields inside of an HTML tags. In order to do this, you need to make the following replacements in the HTML tags containing merged fields:

Replace < with lt#
Replace > with gt#
Replace " with quot#

For example, if you wanted to generate a document for an account and include a link to that account record's page, you would not use:

<a href="https://na30.salesforce.com/{{!Contact.id}}">Your link text goes here</a>

Rather, you should use:

lt#a href=quot#https://na30.salesforce.com/{{!Contact.id}}quot#gt#Your link text goes herelt#/agt#

Note that you do not need to make these replacements for every HTML tag in the document; these replacements only need to be made for HTML tags containing merged fields.

I'm totally new to template development in S-Docs. What is the best resource for getting started?

The S-Docs Template Editor documentation article contains a basic introduction to the S-Docs template editor, and breaks down all of it parts in detail. Later, if you'd like to explore a wide array of solutions, such as including dynamic images, SOQL queries, or conditionally rendered statements in your templates, you may refer to the Advanced Template Features article.

You can also visit our documentation homepage and search for specific information.

Where can I find resources for advanced template development?

For descriptions of advanced template features and Apex parameters, you may refer to the Advanced Template Features documentation article.

Certain characters display correctly in the template editor, but display incorrectly or disappear the output document.

If this occurs, it is likely that the problematic characters require Unicode enforcement. This is the case for many characters in non-English languages, as well as other special characters.

To resolve this, open your template in the S-Docs template editor and click the “Document Options” tab. Open the “Other Options” dropdown box if it is not already open. Check the box next to “Template contains international characters (Unicode fonts)”, and then select “Strict” from the dropdown menu next to “Unicode Enforcement Level”. Click “Save” to save these edits to your template; the characters should display correctly when you re-generate the documents produced with this template.

Alternatively, you can select the problematic characters in the S-Docs template editor and change their fonts to one of the Unicode fonts found in the Font drop-down menu at the top of the template editor. However, we recommend attempting the first solution if possible, as it is the simplest, cleanest way to include Unicode characters in your documents.

How can I display the date of document generation in my S-Doc?

To display the date that a S-Doc was generated on, insert {{!DocumentDateTime MM/dd/yyyy}} in the desired location in the template editor for the relevant S-Doc. Save the template and regenerate the S-Doc to see your changes. Note: many date formats are supported, but they are case sensitive; for months, the M’s must be capitalized, and for days and years, the d’s and y’s must be lowercase.

Visit the Special Merge Fields documentation article for a list of all special merge fields that S-Docs provides.

How do I insert images into my S-Doc template?

It depends on whether that image is going to be static or dynamic.

Would you like to insert an image into your template that will be the same across all documents generated with that template? Or would you like to insert an image that might change from document to document, since this image might vary from record to record?

If you answered “yes” to the first question, then you’re looking to embed a static image. Instructions for this are provided through the following link:
https://www.sdocs.com/documentation/embedding-static-images-into-your-document/

An example of a static image is a company logo. It would be the same image across all generated documents, regardless of the data in each record, and can therefore be be referenced through a single, static source.

If you answered “yes” to the second question, then you’re looking to embed a dynamic image. Instructions for this are provided through the following link: https://www.sdocs.com/resources/documentation/adding-dynamic-images-into-templates/

An example of a dynamic image is a signature image that varies from record to record. Depending on the person that each record corresponds to, the image will need to be handled generically in your template. This would allow each unique signature image to display in each document generated with that template.

If your image is externally hosted, then you need to add the domain to the remote site settings through Setup > Administer > Security Controls > Remote Site Settings.

How can I format the numbers in my related list columns or merged fields?

To format the numbers in your related list columns or merged fields, you would use the “format-number” attribute. Format number supports these four exact options:
#,###
#,###.##
#.###
#.###,##
For example, consider the following:

<column format-number="#,###" >quantity</column>
<column format-number="#,###.##">totalprice</column>

In this example, if “quantity” is 32400905 and “totalprice” is 45200.40, the numbers will be displayed as 32,400,905 and 45,200.40, respectively.

We use a similar method for merged fields; for example: {{!opportunity.amount #,###.##}} will display an opportunity amount of 1000 as 1,000.

Please visit this article for a comprehensive list of related list column formatting options.

Emailing

How does S-Docs handle undelivered emails?

By default, S-Docs send emails via the Salesforce email system (meaning they are sent from an email server with a xxx.salesforce.com delivery path, just like regular emails sent using Salesforce).

This also means that Salesforce manages email security and email bounces. To configure this, you'll need to go to Setup > Email Administration > Deliverability. Note that any changes here are org-wide and would affect more than just S-Docs.

There are other options affecting how emails are handled (such as using Salesforce's email relay feature or routing S-Doc emails via services like SendGrid) that can enhance email delivery and management.

My email failed to send. What went wrong?

By default, S-Docs links outbound emails to the contact record with a matching email address; Salesforce requires this linkage. If you try to send an email to an email address that is not listed under any Contact record in your org, S-Docs will attempt to link it to a single dummy contact record called "No Contact Record." This contact record is created automatically by the S-Docs package to handle this linkage, and is immediately deleted once the email is sent.

If your org has implemented validation rules that require additional contact fields to be completed, then the S-Docs package will not be able to create this contact record. In this case, there are two main options.

Option 1 (Recommended)

Create a before insert, before update Apex trigger on the Contact object that automatically changes the fields on the No Contact Record that S-Docs creates so that your validation rules are not triggered. For example, the trigger might look like this if your validation rules prevent the contact field "This_Cannot_Be_Null__c" from being null:

trigger ContactFirstName on Contact (before insert, before update) {
    for (Contact c : trigger.new) {
        if (c.LastName == 'No Contact Record') {
            c.This_Cannot_Be_Null__c = 'some non-null value';
        }
    }
}

With this option, S-Docs will be able to create and delete the No Contact Record, and the email will be sent and logged in Activity History on the base object record.

Option 2

Create the S-Docs No Contact Record manually with all of the fields filled in that are required by your validation rules. The fields that S-Docs requires should be filled in as follows:
First Name: Not Required. We recommend writing S-Docs to avoid confusion.
Last Name: No Contact Record
Email Address: this.email@is.invalid
You then need to add the following parameter to the end of your S-Docs button: &useExistingNoContactRecord=true
Note: This option is not recommended, as the email will not be logged in Activity History on the base object record.

Sandbox Deliverability

If you are testing S-Docs in a sandbox org and emails are not being delivered, you should check Setup > Email Administration > Deliverability, and check that "Access to Send Email" is set to "All email." By default, Salesforce turns off outbound email access when a sandbox is created to reduce the risk of inadvertently sending emails to contacts during development and testing. Be aware that this change effects the entire sandbox and not just S-Docs.

For more on S-Docs email templates and deliverability, please visit this documentation article.

Can I use a previously defined email template to send an S-Doc that I have just generated?

Yes! In fact, the S-Docs email functionality is far superior to Salesforce’s built-in email service. It allows you to include images, custom queries, related lists, and render statements, which are not possible with standard Salesforce email templates. For this reason, we use S-Docs to generate the outbound email content, rather than using Salesforce’s standard email service. Thus, if you have existing Salesforce email templates, you can simply copy and paste them into the S-Docs editor and then update the field mappings as needed.

For more on S-Docs email templates, please visit this documentation article.

Troubleshooting

S-Docs works for admins, but not users; the error message is ``User does not have permission to update field(s) on the following object: OBJECT_NAME``, ``Insufficient privileges``, or ``SObject row was retrieved via SOQL without querying the requested field``.

This is most often experienced by users who are assigned profiles with limited field-level security and/or object-level security. To resolve this, you can assign the user the S-Docs User permission set. If this does not resolve the issue, or if all users on a certain profile are experiencing the issue, please try the following steps:
1) Go to Setup > Administer > Manager Users > Profiles

privileges-fix-1

2) Click the profile name of the profile(s) of the users who are experiencing this error. (For example, if the users who are receiving the error are assigned the "Standard User" profile, you would click the name of this profile on this page).

privileges-fix-2

3) On the profile page, scroll down to "Field-Level Security" and for each S-Doc object, click "View" and check all the Read/Edit checkboxes that Salesforce allows you to check.

3-privileges-fix

4) Then, scroll to the top of the profile page and click "Edit". Scroll down to "Custom Object Permissions" and give Read/Update/Create/Delete access to all of the S-Docs objects. If you do not want your users editing, creating, or deleting S-Docs templates, you may leave those boxes unchecked for the S-Docs Template object.

privileges-fix-4

I get the following error: ``Line:XFailed to parse XML due to: end tag name must be the same as start tag from line Y``

This error happens when your template source contains HTML tags in the wrong order, or missing corresponding opening/closing tags altogether . Here are two common reasons this error may occur:

  • Tags in the wrong order. Consider the following HTML template:<p><span>This is a template!</p></span>The tags are in the wrong order! This would cause either the "Failed to parse XML" error or an "Invalid Markup" error. Here is how the corrected template would look:<p><span>This is a template!</span></p>
  • Tags placed inside a render tag. For example, say you have a an opening paragraph tag outside of your render tag, but the corresponding closing paragraph tag is inside your render tag. Then, whenever the statement is not rendered, the closing tag will also not be rendered, and your document would have an opening paragraph tag without a corresponding closing tag (which S-Docs interpret as invalid markup). To fix this, make sure that each opening tag within your render statement has a corresponding closing tag within that same render statement, and similarly, make sure that each closing tag within your render statement has a corresponding opening tag within that same render statement.
    For example:<span>
    <!--RENDER={{!Opportunity.Status}}!='Closed'-->
    <strong>Some Text</strong>
    </span>
    <!--ENDRENDER-->
    If {{!Opportunity.Status}} is 'Closed', this statement will not render, and the closing </span> tag will not be in the resulting document since it is inside the RENDER tags. However, the <span> tag is outside of the RENDER block, so it will be in the resulting document no matter what. So, if {{!Opportunity.Status}} is 'Closed', then the opening <span> tag won't have a closing </span> tag, resulting in invalid markup!To fix this, you can move the closing </span> tag outside of the RENDER block, or move the opening <span> tag inside the RENDER block:
    <span>
    <span>
    <!--RENDER={{!Opportunity.Status}}!='Closed'-->
    <strong>Some Text</strong>
    <!--ENDRENDER-->
    </span>
    <!--RENDER={{!Opportunity.Status}}!='Closed'-->
    <span>
    <strong>Some Text</strong>
    </span>
    <!--ENDRENDER-->

I get the following error: ``This page is part of the AppExchange Package SDocs, and requires a license to use.``

This error typically occurs when a user attempts to generate an S-Doc without a valid S-Docs license. If you have purchased S-Docs licenses and they have not expired yet, then it's possible that the users who received this error do not have S-Docs licenses assigned to them. To assign licenses, you can go to Setup > Installed Packages and click the "Manage Licenses" links next to "S-Docs". Here are Salesforce's instructions on assigning licenses:

https://help.salesforce.com/apex/HTViewHelpDoc?id=distribution_assigning_user_licenses.htm

If you have already assigned all of your licenses to other users, or if your licenses have expired, you will need to purchase more licenses.

I get the following error: ``Your SDocs license allows for a maximum of 2 templates.``

A more complete version of this error message looks like this:

Error: Invalid Data.
Review all error messages below to correct your data.
Apex trigger SDOC.SDTemplate caused an unexpected exception, contact your administrator: SDOC.SDTemplate: data changed by trigger for field Document Version: data value too large: Msg8: <MyOrgNameHere>. Your SDocs license allows for a maximum of 2 templates.3 (max length=30)

S-Docs has a 2 template maximum if you are on the free version. If you get this error and you are on the free version, then you have gone over your 2 template maximum. You can fix this by upgrading to the paid version of S-Docs, which allows for an unlimited number of templates. However, if you get this error when creating or saving your first or second template, or if you are on the paid version, then you might be wondering why you're even getting this error. There are two possible causes:

  • You have older versions of your S-Doc templates being counted towards your maximum. To fix this, delete the archived template versions (found in the "Inactive Templates" or "All" S-Docs Template list views) and make sure "Version History Keep Limit" is set to "Disable Version History" for all of your current templates (the version history option can be found in the "Document Options" tab of the template editor).
  • You have old S-Docs templates in the recycling bin that are being counted towards your 2 template maximum. To fix this, permanently delete these templates from your recycling bin.
  • You have the paid version, and there is an issue with your license key. You might not have received it for whatever reason. Please contact us and we'll send you a new license key in no time.

I get the following error: ``PDF generation failed. Check that the page markup is valid.``

If you get this error, the issue is most likely within your template source. There are a variety of HTML markup errors that can cause this; here are the most common markup errors:

  • Rich text fields. Your rich text fields may include invalid markup. To see if this is the cause, clone your document, remove all the rich text fields, and generate a document using the new template that doesn't contain rich text fields. If this new template generates a document without any errors, then your rich text fields are causing the issue, and you'll need to check each rich text field for problematic markup.
  • <tr> tags without <td> tags inside of them. Older versions of S-Docs consider this to be a markup error; to fix this, simply upgrade to the newest version of S-Docs.
  • Tags placed inside a render tag. For example, say you have a an opening paragraph tag outside of your render tag, but the corresponding closing paragraph tag is inside your render tag. Then, whenever the statement is not rendered, the closing tag will also not be rendered, and your document would have an opening paragraph tag without a corresponding closing tag (which S-Docs interpret as invalid markup). To fix this, make sure that each opening tag within your render statement has a corresponding closing tag within that same render statement, and similarly, make sure that each closing tag within your render statement has a corresponding opening tag within that same render statement.
    For example:<span>
    <!--RENDER={{!Opportunity.Status}}!='Closed'-->
    <strong>Some Text</strong>
    </span>
    <!--ENDRENDER-->
    If {{!Opportunity.Status}} is 'Closed', this statement will not render, and the closing </span> tag will not be in the resulting document since it is inside the RENDER tags. However, the <span> tag is outside of the RENDER block, so it will be in the resulting document no matter what. So, if {{!Opportunity.Status}} is 'Closed', then the opening <span> tag won't have a closing </span> tag, resulting in invalid markup!To fix this, you can move the closing </span> tag outside of the RENDER block, or move the opening <span> tag inside the RENDER block:
    <span>
    <span>
    <!--RENDER={{!Opportunity.Status}}!='Closed'-->
    <strong>Some Text</strong>
    <!--ENDRENDER-->
    </span>
    <!--RENDER={{!Opportunity.Status}}!='Closed'-->
    <span>
    <strong>Some Text</strong>
    </span>
    <!--ENDRENDER-->