FAQ

Licenses & Pricing

What's the difference between S-Docs Free and S-Docs Unlimited?

The free version of S-Docs is production ready - it does not impose any watermarks or have an expiration date. It includes two free templates that allows you to generate an unlimited number of documents without any restrictions on the number of salesforce users. Online documentation is accessable to all and our forum provides support for you to post any questions.

S-Docs Unlimited package allows you to access an unlimited number of templates and provides you with full live support. In addtion, with the included live support, we can help show you how to leverage workflow, batch processing, integrate with Google Drive, Amazon S3 integrations, e-signature solutions and access to our pre-built templates. A full breakdown of the differences between the paid version and free version can be found at www.sdocs.com/pricing.

If you are considering S-Docs Unlimted, but would like to ensure it meets your requirements before committing, please contact sales@sdocs.com to inquire about our Trial Program.

How does licensing work?

S-Docs Unlimited is priced based on your number of users requiring S-Docs in your Salesforce org. We offer starter packages that include 10 user licenses, live support, onboarding help and access to our unlimited template library for under $2,000USD per year.

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).

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 at 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.

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 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. Additionally, an S-Docs user can always email a generated S-Doc to anyone - clearly the recipient would not require a Salesforce nor S-Docs license.

{"single_open":"true","transition_speed":"300"}

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.

{"single_open":"true","transition_speed":"300"}

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 of that object type. In addition to S-Docs being saved as records in Salesforce, you also have the option to save your S-Docs as Attachments on your records. S-Docs is also integrated with Amazon S3 and Google Drive in case you require off-platform document storage.

Does S-Docs work with Salesforce1?

Yes! To learn how to set up S-Docs for Salesforce1, please visit:
http://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:
http://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:
http://www.sdocs.com/documentation/configuring-s-docs-with-custom-objects/
http://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 matters is provided through the following link:
http://www.sdocs.com/doc_category/jobs-rest-api/

In the above link, note that there are two ways you can accomplish batch processing and automation: a preferred method and a legacy method. The legacy method is through the use of the REST API, and we recommend you use this only if you have already implemented this method in the past. The preferred method is through the use of the S-Docs Job object; with this method, we recommend you use the Salesforce Process Builder instead of workflows, as it is more compatible with S-Docs Job records. Salesforce processes can be used to accomplish just about anything that workflows can. Additionally, S-Docs Job records can be used with Apex code and Salesforce flows.

S-Docs Jobs are used behind the scenes in the newer batch document feature. For information on setting up and configuring this feature, please visit:
http://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:
http://www.sdocs.com/documentation/using-s-docs-direct-soql-feature-for-related-list/

Does S-Docs support the Salesforce Translation Workbench?

Yes! Consider the merged field {{!opportunity.nextStep__c }}. You can apply translations to fields using the “translate” attribute like so: {{!opportunity.nextStep__c translate}}

Can S-Docs generate PDFs with fillable fields?

S-Docs does not support the collection of data via PDF files. We strongly recommend that data collection happen in a web form. 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. However this can be accomplished. S-Doc templates are written in HTML, so if you would like to copy a PDF into S-Docs, you can convert your PDF to HTML online and copy the HTML into the S-Docs template source editor. Here are some resources for converting PDF to HTML:
http://www.zamzar.com/convert/pdf-to-html/
http://www.pdf.investintech.com/
http://www.convertpdftohtml.net/
These conversion services may yield inaccurate results, especially for complex PDFs, so some fine-tuning may be necessary.

{"single_open":"true","transition_speed":"300"}

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:
www.sdocs.com/documentation/advanced-features

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:

Rather, you should use:

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 Developer's Guide. 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 S-Docs Cookbook.

Where can I find resources for advanced template development?

For descriptions of advanced template features and Apex parameters, you may refer to the later sections of the S-Docs Developer's Guide. For solutions for complex template designs, such as dynamic images, conditionally rendered values, and the use of SOQL queries within templates, please refer to the S-Docs Cookbook.

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.

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:
http://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:
http://www.sdocs.com/documentation/adding-a-dynamic-signature-image-into-a-contract/

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.

{"single_open":"true","transition_speed":"300"}

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?

If you are testing S-Docs in a sandbox org and emails are not being delivered, you should check your Deliverability settings:
 
Go to: Settings > Email Administration > Deliverability
 
Then, 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 affects the entire sandbox and not just S-Docs.

If you did not receive an email, or if you experience any failed email delivery, it may be due to the S-Docs package not being able to create a a contact record that it requires for email delivery. By default, S-Docs will link outbound emails to a single default contact record with a specific email address. Salesforce requires a contact record for S-Docs to make this linkage. This happens whenever a user sends an email to an unknown email address. S-Docs will attempt to link it to this single default contact record called "No Contact". This contact record is created just once by the S-Docs package to handle this linkage and is done automatically during the first occurrence. However, if your org has implemented validation rules that require additional fields to be completed on a contact record, then the S-Docs package will not be able to create the record, and therefore you must do it manually. Simply create a new contact record named "No Contact Record" and set the email address to "this.email@is.invalid". This process only needs to be done once in an org.
 

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.

{"single_open":"true","transition_speed":"300"}

Troubleshooting

S-Docs works for admins, but not users; the error message is "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-->

{"single_open":"true","transition_speed":"300"}

More about S-Docs

Simple

Incredibly powerful - remarkably simple. One button document creation. Open your record, choose your document template and click generate - it's that simple. Documents are immediately created and automatically added.

Smart

Intelligent document storage allows you to report on document content. Flexible format options includes output to PDF, MS Word, MS Excel, XML or HTML Emails. Supports a large template library that can be searched.

Secure

100% Native Force.com. No third-party web services, no plug-ins, no active-x controls, and no flash files. There are no client downloads or installs. S-Docs Leverages HTML5 (so it even works on the ipad).