Install, Setup & Register

30-day free trial!
Install from the AppExchange and configure PDF Butler in 10 minutes. All that needs to be done to get started!

Create your first quote

Create your first quote document in just 15 minutes. Learn the basics of selecting data, replacing mergefields and repeating rows. Use the template document as a starting point!

See, do and learn
Download Template without mergefields
Download Template with mergefields
Full Sales Cloud in minutes 

Get an Out-Of-The-Box Sales Cloud setup, this is a full configuration working on Opportunity.

This is a great way to prepare demo's to customers, prospects, management, ...

 learn how to get a demo setup in minutes


A ConfigType will make the link between data and the action to take on the MergeField in the MS Word Document.

Download demo document here


Use the SINGLE to do 1-on-1 replacements from SFDC Data into the document


The TITLE ConfigType manages name of the generated document. Use MergeFields to control the name.


Every Enter is a Paragraph in MS Word, also bullet-point or numbered lists are paragraphs. You can repeat these or add criteria to show or hide paragraphs.


Repeating rows in a table is key, learn how to repeat rows and give an overview of the products. You can repeat these or add criteria to show or hide rows.


Just as row, repeat entire tables. You can repeat these tables or add criteria to show or hide the table.


A table is a content container in PDF Butler. Show all contents of a table if a DataSource has records.


A row is also a content container in PDF Butler. Show all contents of a row if a DataSource has records.


Add TextArea fields from and format these as expected. TextArea Fields can have enters and parts on new lines. PDF Butler will format these perfectly

New Paragraph for each newline
TextArea's have enter (carriage return, newlines). Normally, we do an in-paragraph break for a newline in a TextArea but with this setting, we create a new paragraph for every newline in the TextArea.


Use complex criterias to decide if you want to process records or show/hide Paragraphs, TableRows or Tables.

SINGLE Criteria Rules

SINGLE ConfigTypes are great, but sometimes there is some logic involved and you need more control on which field or static text to show. Great example is if you have mulitple fields for translations of your product names or descriptions, depending on the language you want to use the correct field.


Sections in MS Word documents help to switch between Landscape and Portrait, change headers, footers, ... . With PDF Butler you can decide to show or hide these complete sections.


Dynamically load pictures from Salesforce into your documents. Linked to records, eg products. Multiple linked to a single record, eg case. And the super complex stuff to add APEX to get exactly what you want.

There are 4 ways to scale an image:

  • NONE: the image will be placed inside the placeholder and keep the exact height and width of the placeholder. If this image does not have the same size as the placeholder, it will be stretched or squeezed to make it fit.
  • BY WIDTH: the width of the placeholder will be kept to fit the image. The height is automatically recalculated
  • BY HEIGHT: the height of the placeholder will be kept to fit the image. The width is automatically recalculated
  • CONTAIN: the image will always be contained inside the placeholder like in option "NONE" but in this case the height or width will be adjusted so the image scales correctly.

Product pictures (not complex):

Product Picture template

Case pictures (medium complex):

Case Pictures template

Logo pictures (very complex):

picture placeholder

Optimize your pictures for size

Emails need pictures. This will explain how to feed the URL of the pictures, coming from Salesforce FILES, to PDF Butler so the email clients will know how to show the email correctly .

Mergefield replace actions

Some Mergefields are only for identifying structures in the document, for instance a Table or a Row. When the document is generated, you do not want to see these anymore. So these will not be replaced via a SINGLE ConfigType.
Of course, you do not want to see these in the resulting document.
PDF Butler allows full control over your mergefields. The lesson shows how to control the removal of MergeFields.

Barcode & QR-code generator

Want to print barcodes on your documents. Use your input data to generate barcodes and QR-codes. There are many types available but the most famous ones are CODE 128 and QR.


Handle SFDC rich text fields. These fields are HTML snippets that can be compiled into the document.
This video will show how to add them to a document and how to more specifically define which styles and classes (remember it is HTML) you want to keep.


SFDC Rich Text fields can have pictures. Overall we a are not a big fan of this but we do support them.
PDF Butler might be the only solution that supports Rich Text Pictures in a robust, rock-solid way.
If you want to use Rich Text Pictures, contact to get our free add-on. Make sure to provide your PDF Butler username and your OrgId when contacting us!
The class to use in the Actionable: PDFButler_Actionable_RichTextPics

Do you require to handle multiple and/or large Rich Text Images you might hit Salesforce Limits.
PDF Butler Image processors can work around the SFDC Limits, also for RichText Images.
Depending on your contract, there might be an extra cost, check with your Account Manager.

  1. The class to use in the Actionable: PDFB_Act_RichTextPicsByUrl
  2. Make sure the Actionable "When" is: After DataSources (BEFORE_BUT_AFTER_DATASOURCES)
  3. Fields for the KeyValue DataSource:
    • pdfbutler_parentId
    • pdfbutler_url


Via the TABLE_COLUMN_REMOVER, you can decide to show or hide certain columns in a table.
For instance, if you want to hide the Discount column when there no discounts, this is perfectly possible.
If the option is disabled, contact support to enable it for free:


Add re-usable MS Word templates, keep documents like product sheets or terms&conditions separately and so much more possibilities.


Need calculations, summations, averages, ... and you do not want to add Formula fields in Salesforce. Use the SINGLE_FOR_FORMULA


Want to replicate a block of information. You can do this with a TABLE but also with a CONTENT_CONTROLLER.

Enable Developer menu item in MS Word: Show Developer tab


Use this ConfigType if your want to replicate multiple rows in a table.


Use these ConfigTypes in a complex setup with parent-child (Nested) DataSources.

A CONTENT_CONTROLLER can be the child of another CONTENT_CONTROLLER. Here we will make an example how a ROWS_CONTROLLER is the child of a CONTENT_CONTROLLER

This is quite a complex example but gives a very good overview of the power of combining and nesting DataSources and ConfigTypes


Repeats columns in a table.

There is also a complex column repeater that can repeat both columns and row in a table. Contact customer success team for more information.



Repeats pictures on the same line.

INLINE_REPEATER for Pictures documentation

SINGLE ConfigType Text Formatting

Format your texts with uppercase, lowercase, capitalize first-char, ....


Check or uncheck checkboxes in MS Word documents.


Dynamically adds other DocConfigs (Additional DocConfigs - Static PDF) to your document. The PDFs of the other DocConfigs, supplied via a DataSource, are generated are glued together with the main document.

With this ConfigType, the DocConfigs do not have to be of type TEMPLATE.

If the DocConfigs that are dynamically added have DataSources, these DataSources must be included in the main DocConfig that you are generating!


Change the text from a text watermark in the document.

Show or hide a text watermark by criteria.

Have multiple sections in your MS Word with each having their text watermark.


A DataSource indicates how to get data from Salesforce but also describes the data.

Download demo document here

picture placeholder

SINGLE DataSource

Select exactly 1 row from SFDC. This is mostly the row related to your record you are working on: Quote, Opportunity, Case, ...!

LIST DataSource

Select multiple records. Mostly records related to the record you are working on. Eg Opportunity Products, Quote Lines, Assets, ...

Picklist translations DataSource

Get translations on your picklists directly from the Translation Workbench

PICTURE DataSource

Use picture, eg logo or thumbnails, from Salesforce DOCUMENTS, FILES or ATTACHMENTS

Nested DataSources

Select your data in your complex data models. This is one of the most powerful features of PDF Butler but hard to understand. Nested DataSources, the mystery revealed ;-)

Rollup summaries

Rollup summaries in Salesforce are cool but sometimes not available or you have none left. We got you covered.

Overview of the SOQL Builder

Create DataSources via the SOQL Builder. SOQL Builder helps Admins create complex DataSources by configuration!


Adding a field to a DocConfig via the SOQL Builder!

Full SOQL Power

Take control over your DataSource. Write your own SOQL's and use the full power of Use GROUP BY, AVG/SUM/MIN/MAX/.., LIMIT, complex WHERE clauses, ...


KeyValue DataSources can be used to fill data that is generated by logic, eg APEX.

Download documentation here

Static Values

Sometimes it is easier to re-use certain data instead of having it hardcoded in your document templates. Static values can be used for this purpose. For instance company addresses, names of persons, ... . Keep them in an easy to manage and re-usable Static datasource and use them in multiple templates.

Late Binding Dynamic Pictures

Sometimes it is required to load a large amount of pictures. The special thing here is that the pictures are not loaded in Salesforce but directly in PDF Butler. This enables us to bypass certain Salesforce limits and to faster load these pictures when they come in large amounts (up to 300). PDF Butler will load the pictures in parallel to optimize the generation speed.

Filtered DataSources

Create new DataSources from existing DataSources so you only have to select the data from Salesforce one time which will be a performance improvement.

Filtered DataSources
Filtered Child DataSources
Report DataSource

Use Report Data in PDF Butler.
Be aware that Salesforce has to run the Report for us to be able to use the results. Running Reports in Salesforce is slow. So, if you can use a DataSource instead of a Report that would be better for performance.

Report field Label vs Value.
The report will already format the amount, lookups (eg lookup to User or Account), ... . See the video on how you can have the raw value instead of the formatted value. The raw value can be used to use the PDF Butler formatting or to do calculation (see SINGLE_FOR_FORMULA)


Our managed package has a some unique and great Lightning components that have been improved the past 2 years to support almost any process.


Lightning component handles your DocConfigs, your Packs, upload static files, downloads, viewer, ... all in 1 component.

Enabling with Clickjack protection:

Need more control over which DocConfigs to show, which Alternative or locale to set. We give you full control via a Flow. You can define all data by a Flow.

Override Pack Target Type. For instance, generate DOCX files and mail them via the pack.


In some cases, you want to review the document before saving, emailing, signing, ... . The previewer Lightning component shows your document and proposes the actions to take.

Enabling with Clickjack protection:

Delivery Overwrite Options: Never save (BASE64) or Do not save on preview (VIEW_THEN_SAVE):

Enable Previewer toolbar: makes it easy to zoom and print from the previewer

Select of FILE related to your eg Opportunity and use that emailing, signing, ... . The Lightning component shows all files and the actions, PDF Butler Packs, that are related.


Still on Classic, that happens but no worries PDF butler can be called from anywhere.

Translating DocConfig names for the Convertor Component

In multi-language environments, it might be required to translate the DocConfig in the language of the user. With a translation DataSource, this is perfectly possible. Via the Locale of the User, the translation will be selected for each DocConfig.

Lightning Convert Component

Use the Previewer in Lightning Flows, VisualForce, ... . You can just pass in the variables and the component will show the PDF.

This component can be fully tailored by your needs and provides an easy way to show a preview in a Flow

Get the component by contacting:

You can easily provide 5 parameters to the component. These parameters can be passed on to the DataSources for filtering.
Possible Types for parameters (They have to be copied as these are case sensitive):

  • String
  • Double
  • Date
  • DateTime
  • Boolean
  • MultiSelect: for a list of values, these have to be separated by ';' eg abc;123;yxz


Feed KeyValue DataSources into Lightning Convert Component via Flow.

Lightning Quick Action Previewer

Use the Previewer in Lightning Flows, Safari Browsers, Salesforce Mobile, VisualForce, ... .

In this episode learn how easy we made it to define a specific Component that allows to configure a Quick Action.

See the full code example in the Word file you can download below.

Get the component by contacting:

Inline Edit (or Live Edit)

In some cases, you have to make changes to the document or collaborate with your legal, solutioning, ... teams on the document before sending it out.

With this component, you can easily upload your updated DOCX file and continue the process directly from Salesforce. This component will convert the DOCX to a PDF and run your pack. That can be any action like email, digital signature or just storing the PDF in SFDC.

Because you are working with a DOCX file, you have full control over the information in the document you want to change. As you are working in MS Word (or other editors) you have the world's best document editor which makes it much easier for anyone in the team to make changes and on the Word document, you can collaborate with your teams that are not working in Salesforce (eg Legal).


MS Word can have Restricted Editing on most of the content of the document. You can create areas and fields that can still be edited by employees or customers.
When generating a DOCX file with PDF Butler, Restricted Editing is still on in the MS Word document. Now, the document can be edited safely.
Drag the document on the Live Edit component to continue the process, eg send PDF by email or for signing.

MS Word Restricted Editing
DocConfig Selector - logic by flow

Need your users to select mandatory and optional documents to construct a custom quote. The DocConfig Selector allows to build your own logic to decide which DocConfigs are mandatory and optional.


  • input: Apex-Defined -> PDFB_DocConfigByFlowInput, Available for input
  • alternative: Text, Available for output
  • locale: Text, Available for output
  • docConfigs: Text -> Allow multiple values (collection), Available for output
  • optionalDocConfigs: Text -> Allow multiple values (collection), Available for output
  • packs: Text -> Allow multiple values (collection), Available for output

This is an add-on component. Request the latest version via our Customer Success team.


Combining DocConfigs so multiple can be generated in 1 go (and can be merged into 1 document). Adding actionables to docconfigs. Re-using the same docConfig and set it up for different actions, eg pack for mailing, pack for digital signatures, other before/after actionables, running custom code, … .

Create PACK with additional DocConfigs

Create a Pack and combine multiple DocConfigs. Learn how to use separately or merge.


Add Page Numbers and Titles to the merged PDF. Request the add-on package from our Customer Success team.
Class: PB_AddPdfMergeActions

Actionable AUTO_EMAIL

Use your Salesforce email templates to sent out an email with your document attached.

Class to use: cadmus_core.Actionable_AutoEmail

You can also use Lighting Email Templates.

And the Lighting Email Templates support multi-language / multi-locale.


Need a more fancy email then the one Salesforce email templates can produce or need to display data from more sObject in a complex data model? Create your email in MS Word and use all of the PDF Butler goodies to sent out an email with your document attached.

Actionable EMAIL Quick Action

Edit your emails generated by PDF Butler before sending them out. All from Salesforce and directly from the "Send Email" Quick Action!

Via Lightning Email Template:

Class to use: cadmus_core.Actionable_AutoEmailQuickAction


Via Email DocConfig:

Class to use: cadmus_core.Actionable_EmailDocConfigQuickAction

Salesforce changed the Activity view in Spring 23 release and introduced an issue doing so.
We have discussed this issue with Salesforce already in January and they confirmed that with this update Salesforce breaks backwards compatibility with the Email Quick Action functionalities. But, the Salesforce team still went ahead with the release.
The Salesforce team could not give a date nor a roadmap on when this issue they introduced would be resolved or that compatibility with the Email Quick Action would be restored.

So the only option we have is to activate the option "Activity Tabbed View".
 Change back to "Activity Tabbed View"

Actionable SIGN Butler

Create your document and sent it out for digital signature via SIGN Butler for perfectly legal signatures.

Actionable DocuSign

Create your document and sent it out for digital signature via DocuSign.

Actionable AdobeSign

Create your document and sent it out for digital signature via AdobeSign.

Actionable run APEX Class

Customize the PDF Butler process directly in Salesforce. Need to retrieve data from backend, do some serious calculations, prepare variables, take custom actions when the document is generated, ... . We got you covered!

 Download documentation here

 Download example Test Class for BEFORE Actionable


Complex example to transforms JSON data into DataSources. The JSON Data can come from a backend call or from anywhere else. In general, you can transform any data into DataSources.

 Code file


Our vision is to start your document generation process in a single click but we can do even better ;-). How does zero-click sound?

Lightning Flow

Lightning Flow is a great tool to build business logic and represent it visually. You can just plug in PDF Butler in your Flow

Download documentation here

Call PDF Butler from Flow

Do more:

Control your DataSource data via Flow logic
Process Builder

Want to handle events, use the most popular ADMIN tool on the Salesforce platform: Process builder.

Download documentation here

Call PDF Butler via a Button

Lightning components or buttons, we give you the option. You can use both and have the same powerful experience for your user.

Download documentation here

Lighting Flow introduced variables

You might have a use-case in which your end user needs to select data or ranges and you want to use that information to select data for PDF Butler to handle. We got you covered and you do not even have to write APEX!

Download documentation here

Call PDF Butler from APEX

Automation sounds great but you are taking it to the next level... APEX!

Download documentation here

APEX API documentation here

LWC code example:
This example shows how to call PDF Butler from a button in an LWC component and download the generated document.

APEX class that calls PDF Butler

LWC example (zip)

PDF Butler APEX API documentation

Automation sounds great but you are taking it to the next level... APEX!

APEX API documentation here

PDF Butler Aura example with previewer and download

This shows how to create an Aura component that generates a PDF and shows a preview. From the previewer, you can download and call a Pack.

Code example

Aura previewer overview
PDF Butler Lightning Web Component (LWC) example with previewer and download

This shows how to create an LWC that generates a PDF and shows a preview. From the previewer, you can download and call a Pack.

Code example

previewer overview (Aura movie but it is quite the same for LWC)
Use APEX to Add Datasources

We can cover so much in our Datasources but you might have a use case that is even harder! Complex grouping, calculation, integration with backend systems, tranformation of data, ... . With an APEX Actionable, you can prepare your data in APEX before PDF Butler handles it. No need to store your transformed data, calculated Just-In-Time and passed on to PDF Butler.

Download documentation here

Permission Set Groups

A permission set group streamlines permissions assignment and management. Use a permission set group to bundle permission sets together based on user job functions. Users assigned the permission set group receive the combined permissions of all the permission sets in the group. Permission set groups with PDF Butler (but also BULK, COLLABORATION and SIGN Butler) is the best way to use the permissionsets from the managed package without cloning.
Best to setup 2 types of permission set groups:

  • Admin: all permission an Admin, someone who manages the templates and config, requires
  • User: all permission a User, someone who only needs to create documents, requires

Salesforce documentation

Admin Permission Set Group User Permission Set Group
List View Button

On any Salesforce list view, add a button to create multiple documents in 1 go.

It is not possible to configure Lighting Mass Actions yet so the only solution is an sObject specific VisualForce page. We have these for all standard sObjects like Account, Opportunity, ... . Contact support to get this add-on package or a code snippet to easily create your own:

Setup List View Button
Call Flow on AFTER Actionable

When you want to take an action after the document is generated, this action can be executed from an Autolaunched Flow.

Create an Actionable in PDF Butler of recordType "Run Lightning Flow", pass on the API name of your Flow and the class: "cadmus_core.Actionable_RunAfterFlow"

Update the record Save to document to another record


CPQ spells:

  • structuring products,
  • bundles,
  • groups,
  • complex data models.
PDF Butler is designed from the ground up to handle these and to convert your bundles and products into perfectly structured quotes.

Top tip: Make sure to check out our Get Started first: Get Started in 30 mins

Multi-level CPQ products

Transform your view in CPQ "Edit Lines" to your document. Your customers deserve a well-structured quote document that gives a perfect overview.

Download document here

The full video:

Or in smaller chunks:
  • PART 1 - Problem and solution:
  • PART 2 - From scratch to our first PDF:
  • PART 3 - Second level of products:
  • PART 4 - Third level of products:
  • PART 5 - Product logo’s:
  • PART 6 - Wrapping up:
Using CPQ Groups

Using groups in your "Edit Lines" is very powerful. To use these groups to build a better structure and overview in your quote is even more powerful.

Download document here


FSL spells:

  • structuring tasks,
  • service reports,
  • mobile,
  • pictures.
PDF Butler is designed from the ground up to handle these requirements.

Top tip: Make sure to check out our Get Started first: Get Started in 30 mins

In this tutorial, we will guide you step by step to create a Service Report that shows

  • Work Order Data and Work Order related data ,
  • Work Order Pictures,
  • Work Order Line Item Data and Pictures,
  • Child Work Order Line Item Data and Pictures.

Field Service Lightning (FSL) - Service Report

Create the best looking Service Report ever.

Get our thumbnail component via: This is a PDF Butler Actionable that can be easily installed as a package. Comes with comments and unit-tests.

Download document here

  • PART 1 - Work Order Data:
  • PART 2 - Work Order Pictures:
  • PART 3 - Work Order Line Items (WOLI) Data & Pictures:
  • PART 4 - Child WOLI Data & Pictures:


PDF Butler will match your environment setup and development lifecycle. You can have different "stages", you can see these as versions in your development & deployment lifecycle. Map these stages to your Salesforce Orgs. By default everybody will have a PROD and a TEST stage.
If you want more, just sent a mail to:

Following stages are available:

  • PROD
  • UAT
  • TEST
  • TRG
  • INT
  • QA
  • DEMO
  • DEV1
  • DEV2
  • DEV3
  • DEV4
  • DEV5
  • DEV6
  • DEV7
  • DEV8
  • DEV9
  • DEV10
  • DEV11
  • DEV12
  • DEV13
  • DEV14
  • DEV15
  • DEV16
  • DEV17
  • DEV18
  • DEV19
  • DEV20


Deploying your PDF Butler configuration is done in 2 easy steps. You can use the principle in the example below to go in any direction and deploy between any stage.


Learn how PDF Butler can support Agile Project Development and how you can use DEV/TEST/UAT/PROD Orgs in parallel to support your SDLC (Salesforce Development LifeCycle)

Setup new environment ( Org)

When you have registered for PDF Butler, you can reuse the same username and passwords on every environment. PDF Butler will know which configuration you need by the Stage that is set in your Org or Sandbox. Deploying between Stages, and thus Orgs is done by a few clicks (see Deployment)

  • Stage PROD for your Production Org,
  • Stage TEST for your Test Sandbox,
  • Stage DEV1 for your Development Sandbox,
  • ...


Overview of how PDF Butler can solve common questions on Salesforce products.

Service - Case Articles

Provide common Case data and a list of Case Articles.

Download document here

Community - Partner & Customer Community

You can use PDF Butler directly from your lightning community..

Common questions on using PDF Butler in a community:
1) Make sure to configure the sharing rules on the PDF Butler objects for external users. Add these objects:

  • Actionable - Public Read Only
  • Data Source - Public Read Only
  • Doc Config - Public Read Only
  • PDF Butler Pack - Public Read Only
  • Pack DocConfigs - Public Read Only
For SIGN Butler:
  • Sign Request - Public Read/Write
  • Sign request template - Public Read/Write
  • Lightning Email Templates - Public Read Only
2) Make sure to add the System Permission "View All Custom Settings". More info here
3) Make sure the license for PDF Butler is assigned to the community user

Multi-currency Org

If you have Multi-currency enabled on your ORG, you might want to show the currency on the record and format the amounts by the locale of your customer.


Overview of how PDF Butler Doc Config types. Following types are available:

  • EXCEL,
  • EMAIL ,


Start from MS Word to generate your PDF or MS Word documents.

DocConfig email

Reusable MS Word templates, keep documents like product sheets or terms&conditions separately and so much more possibilities.

EXCEL Generator

Create Excel (XLSX) reports with data from Salesforce. Datadumps or complex groupings ... We got you covered.


Need to handle a Salesforce PERCENT field in Excel? Salesforce does not store Percent fields with decimals eg it will store 75% as 75. While Excel expects 0.75 to show 75% for a Percentage field!


Use Static PDF files like brochures, general conditions, ... and use them in your PDF Butler process!


Automate your process and sent mail with your documents automatically!

Auto email
DocConfig email

Re-use PDF documents from your company, affiliate or government. Prefill these PDF Documents with data in your CRM to provide the optimal user experience.

CSV - Character-separated value

Learn how to generate "Character Separated Value" (also called "Comma Separated Value") files.

PPTX - Powerpoint

Learn how to generate Powerpoint files.


A useful overview of TIPS & TRICKS we have used and learned from our customers.

Checkboxes - how to show checked and unchecked boxes

You can use this trick with any image that is inline with a paragraph (or table).

Download document here

Unchecked checkbox

Checked checkbox

Watermarks, show and hide the watermark in MS Word

Sometimes your templates require a watermark, no need to duplicate your templates. Use Criteria to make your watermark conditional.

Page Repeat - Print the same page for every record

Sometimes you have the requirement to print a section of information for several records on multiple pages. This tutorial shows you how.

Download document here

Dynamically load templates

Need to show templates like product sheets or contract add-ons dynamically based on your data and selection. No problem, this tutorial shows how you can control that.

Product Sheet 1: GenWatt Diesel 10kW

Product Sheet 2: GenWatt Propane 100kW


You want to add numbering to your lists. We got you covered, learn how to use MS Word Numbered lists or PDF Butler @Number to provide what you need.
PS: You can use these numbering in different levels. For instance

  • 1 Top Level
  •    1.1 Sub Level

Numbering Demo Doc

Get rid of white-spaces

Generating fully dynamic document in which content must appear or disappear depending on criteria is exactly what you want.
Introducing white-spaces and empty sections along the way is exactly what you do not want!
This video gives some ideas on how to handle this. Working with Criteria on TABLE_ROW/TABLE/PARAGRAPH ConfigTypes can also work to get you that perfect looking document.
We have a solution for every problem, so do not hesitate to contact us:

Home page component

Want to create a document from the Home page? Sure you can do that!
In some cases you want to generated documents or reports that are not dependent on a single record. For instance a Opportunity overview document generated from the Sales Home page.


PDF/A is an ISO-standardized (ISO 19005-1) version of the Portable Document Format (PDF) specialized for use in the archiving and long-term preservation of electronic/digital documents.
When generating PDF/A compliant documents, we targeted for the full conformance level of PDF/A-1a! So this means that we are completely compliant with PDF/A-1a and PDF/A-1b (as this is a subset of PDF/A-1a).

Approval History component

Get all approval steps and related information. This Actionable will collect all Approval History Information and adds it to a KEYVALUE DataSource.

Class: PDFButler_Act_GetApprovalHistory

Fields for the KEYVALUE DataSource:

  • ProcessInstanceId
  • ProcessNodeId
  • ProcessNodeName: the step name, this will be empty for the step that submitted the request
  • CreatedDate
  • StepStatus
  • OriginalActorId
  • OriginalActorName
  • ActorId
  • ActorName
  • Comments

Contact PDF Butler support for more information:

Handling MultiSelect Picklist values

The values of a MultiSelect Picklist are stored as a ";" separated text in Salesforce. That makes it difficult to handle.

This video will show how to retrieve these values in a List.

Class: PDFButler_Actionable_MultiSelect

Fields for the KEYVALUE DataSource:

  • parentId
  • value

Contact PDF Butler support for more information:

Conditional Formatting

Sometimes a color says more then a thousand words. If you want to conditionally give a color to your data, this shows how.

Download document here

DocConfig Document Override

Provide a document to be used against the PDF Butler configuration. The document in the PDF Butler configuration will be ignored and the provided document will be used.

Class to use: PDFB_Actionable_DocConfigOverride

In case you have a DOCX file in Salesforce FIles that you want to inject into the generated document.

MS Word Sections

How to work with Sections in MS Word to have different headers and footers for different Sections in your Word document.

Make sure to unlink every Section from the previous Section. No "Link to Previous"!


PDF Butler Usage Statistics

Interested in getting more insights in your PDF Butler usage? Just request a extract of your PDF Butler usage.

PDF Butler Async Delivery Option and After Actionables

Run the saving of the document async.


Run AFTER Actionables Async.


PDF Butler Data Inspector (Butler Inspector)

To debug your datasources, it can be very interesting to use our Chrome Plugin: Butler Inspector.

 Demo & Install here
Define your own styles for Hyperlinks

How a Hyperlink is presented in a document is actually set by a Style in the MS Word document. That means you can overwrite this style and define other colors, fonts, sizes, ... for Hyperlinks in your document.

Multi-language, multi-locale, multi-currency, multi-template or multi-branding

A lot of companies have to support multiple languages, brands, templates, ... . No need to re-create the full configuration!

Multi-language, multi-template or multi-branding, just add Alternatives!

How to link multiple templates to the same DocConfig? And more importantly, how to use the correct template automatically?
You will learn all of this in this video.
We will start with the quote from the "Get Started" section and translate that one.

Download French document here

Download German document here

Multi-Country example: we show different options for managing Documents over countries, create country-specific sections, use labels for translations, work with Alternatives and locales for formatting.
We provide the features, you define your architecture!

Picklist translations DataSource

Get translations on your picklists directly from the Translation Workbench

Formatting by customer or user locale

Every country, language, and combination of both have their way of formatting dates, currencies, numbers,...
The combination of language and country is called locale. For instance, in Belgium, we speak Dutch, French, and German. Our locales are:

  • Dutch Belgium: nl_BE
  • French Belgium: fr_BE
  • German Belgium: de_BE

For most countries, they only speak 1 main language so their locale is easier and they have only 1:
  • USA: en_US
  • UK: en_UK
  • Germany: de_DE
  • Netherlands: nl_NL

So supporting documents over multiple countries or in a country that speaks multiple languages. You will need to format the dates, currencies, numbers specifically for those countries.
PDF Butler knows how to format for every locale and will even translate your date (months and days) in the correct language.

Spell out Numbers in words instead of using the numeral.

PHONE Number Formatting

With the PHONE field type in a DataSource, you can format phone number.

This formatting is in the context of the User or the context you define via the locale (see other cards on information on Locales). The phone numbers will be formatted according to international standards for phone number formatting per country.

There are 2 types of format:

  1. INTERNATIONAL: will add the country-code to the number, eg +32 for Belgium, +1 for US, ...
  2. NATIONAL: formats the number for use in the country itself, so not country-code is added.

Custom labels

Get translations for labels and texts in your document. Manage these translation in Salesforce. Learn how to use Custom labels in relation with your customer or users locale.

Get translations for labels from a STATIC VALUES DataSource. These can be easier to manage and do not require any Actionables.

Multi-currency Org

If you have Multi-currency enabled on your ORG, you might want to show the currency on the record and format the amounts by the locale of your customer.

Salesforce CPQ Product Translations/Localizations

CPQ offers powerful tools to translate your products and product information. With our "CPQ Translations" add-on, we can use those translations in your multi-language documents.
It does not matter if it is text, text-area, or rich-text fields. All are by PDF Butler supported!
Use your CPQ Localization config to translate your documents.
Request access to this free package via:


A usefull overview of FAQ we have used and learned from our customers.

FAQ: why do I get error: "Argument 1 cannot be null"

This error is annoying, Salesforce tells us the best practice is to use Protected Custom Settings for confidential information, then it goes and invents a new permission and then it does not allow ISV partner to add it to their permissionsets automatically. Sorry, you have to set it yourself.

Check System Permission “View all Custom Settings”
FAQ: How do I assign Licenses?

Salesforce allows for very easy management of licenses.
You can just assign them via Setup => Installed Packages => PDF Butler => Manage Licenses (Button).

You can automate this process via a Salesforce Flow. Here is an example.

FAQ: How do I Grant Login Access?

PDF Butler support is all about helping! So the best way to help is to access your Org. No need to create a user, you can just allow access for a certain time. This allows us to check your question.
You need to grant login to "CloudCrossing Support", this is the name of the company that owns the PDF Butler product.

FAQ: Does PDF Butler work on a Scratch Org?

Sure it does!
There is a "but" ;-)
Generating documents is always possible but if you want to configure DocConfigs, you will need to create a password for you Scratch Org user and login via the browser

Otherwise, you will see an error like: "Oops, there was an error rendering Canvas application" or "Your Browsing session has ended or is invalid"

You can generate a password via: sfdx force:user:password:generate --targetusername <username>

You can see the password again by running: sfdx force:user:display -u <username>"

If you open the org via your IDE (eg VSCode), you will get the error: "Your browsing session has ended or is invalid" when opening the configpage.

FAQ: When opening the PDF Butler config-screen, I get redirected to the home-page?

Check you Cookie Settings, it might be set to "Block third-party cookies"!

FAQ: Can we handle Library Files?

Of course you can, even better, we have a component to support you. Check out the video!
Class: PDFButler_LibraryFiles

FAQ: Can we handle Encrypted Fields?

Of course we can! Shield Platform Encryption for encrypting fields on standard, custom and even managed package fields is fully supported.
Overall, you can add the encrypted fields to your PDF Butler DataSource. All security and permissions of the roaming user are checked by Salesforce before returning the data. This means when the user has access to the data, it will show unencrypted in your document .... Just as you would expect.
We fully align with the Salesforce platform, this means it capabilities and limits. See this article for more info: General Trade-Offs

FAQ: Password reset or Forgot Password?

PDF Butler has 2 passwords, an ADMIN password and a USER password. Both are send in the initial mail you receive when registering. The mail has subject: "PDF Butler registration completed"
When you require a new set of passwords, no problem! Just follow the video below.

FAQ: How to add a SOQL Parameter By Actionable?

Want to have custom variables set to use in your DataSources. Not a problem! Can be done via an APEX BEFORE Actionable.

FAQ: Why Emails send from Salesforce end up in SPAM folder?

Because you do not allow Salesforce to send emails from your domain name.

An example:
Your domain is "" and the SalesRep's email is "". An automated process in Salesforce sends an email to one of your customers. So, the email is sent by Salesforce but the from-address of the email is "", this is seen as SPAM as the sender servers are not from the domain "". If anybody was able to send emails from your domain ... that would make phishing very easy.

Now, how do you allow Salesforce to send emails from your domain?

The Salesforce Admin must work together with the Domain Admin to set this up in just 10mins. All that is required is:

DKIM (Domain Keys Identified Mail): Article

SPF (Sender Policy Framework): Article

FAQ: How to lock / Encrypt a PDF after generation?

Want to make sure the PDF is locked and encrypted and cannot be edited by PDF Editing tools? This is how!

Want to make sure the PDF is locked and encrypted so it cannot opened without a password? This is how!

FAQ: Can we support Arabic and Right-to-left script?

👇 Sure we can! see a demo on YouTube

FAQ: Can we store a file in an AWS S3 bucket?

👇 Sure we can!
You would need:

  • Named Credential: make sure to use "AWS Signature Version 4" as Authentication Protocol
  • Remote Site Setting: Same URL as you use in the Named Credential
  • Class AWSService: you download it below
  • Class Actionable_StoreInS3Bucket: you download it below
  • AFTER Actionable that calls the class above
This is an example that is working perfectly fine. We do not provide support on the configuration in AWS S3 so if you face any issues, make sure to debug them in the APEX together with your AWS Admin.
! The same process can be done for Azure storage or any other storage - ask us for more information !

Download class AWSService
Download class Actionable_StoreInS3Bucket
Named Credential


SIGN BUTLER V2, the complete guide.
Install and access to SIGN Butler via: SIGN Butler AppExchange

You will need some signature placeholders. These look like this:

If you need multiple signers on your document, every signers will require their specific placeholders.
Download a full set here: Signature Placeholders

We highly recommend to setup your Salesforce Email settings so that emails do not end up in SPAM folder. See more info here: "FAQ: Why Emails send from Salesforce end up in SPAM folder"

SIGN BUTLER V2 - Setup, Register & config steps

Learn how to setup SIGN Butler, configure the permission sets and register. To register, make sure to have your PDF Butler username and Admin password.

Class: cadmus_sign2.Actionable_SignButlerSilent

Download documentation here
SIGN BUTLER V2 - Custom Lightning Email Templates

Create branded customer Lightning Email Templates that SIGN Butler will use. Your users and customer are going to be thrilled by these emails. No strange branding in the email but an email directly from your company and your brand.

Make sure to Share the email templates with all users that require SIGN Butler! Also best to Share the default SIGN Butler Email folder.

SIGN BUTLER V2 - Custom Branding

Brand your signing page. Add logo, header color, button color, ...

SIGN BUTLER V2 - Custom emails with extra email fields

You want you own branded emails, more information on the sender/recipient/record/... included? Watch this:

Link your Lighting Email Templates to your SObject to use more mergefield options.


From SIGN Butler, there are also mergefields that can be used in the SIGN Butler emails. Here a list:

  • Sender: The sender as defined by the SIGN Request Template. The sender can be different from the current SFDC user eg Quote Owner.
    • [[!SignButler.Sender.Name!]]: the full name of sender
    • [[!SignButler.Sender.FirstName!]]: the firstname of the sender
    • [[!SignButler.Sender.LastName!]]: the lastname of the sender
    • [[!SignButler.Sender.Email!]]: the name of the sender
    • [[!SignButler.Sender.Title!]]: the title of the sender
  • Recipient: When the Recipient is a Contact, User or Lead, the SFDC Email mergefields can be used, eg {{{Recipient.FirstName}}}. But when using custom email addresses for signing or using Re-assign. Best to use these mergefields
    • [[!SignButler.Recipient.FirstName!]]
    • [[!SignButler.Recipient.LastName!]]
    • [[!SignButler.Recipient.Email!]]
  • Signing:
    • [[!SignButler.SignURL!]]: the actual URL the recipient has to sign with
    • [[!SignButler.DownloadURL!]]: only available for the download email
    • [[!SignButler.MailOTP!]]: only available in the OTP Email
    • [[!SignButler.RejectionReason!]]: only available in the Rejection/Revoke email
    • [[!SignButler.SignRequestName!]]: then name of the SIGN Request as on the record in SFDC

SIGN BUTLER V2 - Upload documents

let your signer upload documents during the signing experience. These documents can be mandatory or optional.

SIGN BUTLER V2 - Receivers

Want your Sales Rep to be notified an any action taken on the SIGN Request?
Setup a Receiver and have the Opportunity Owner or anybody else being notified on any action related to the SIGN Request.

SIGN BUTLER V2 - Form Fields

Need to capture data from your customer while signing the document?
You can add multiple form fields via PDF Butler and have these push data back to Salesforce. Updating the record or records related.

You can set if these fields are required, have validation, lock the fields when they have data, ...

Types of form fields:

  • Single line text
  • Multi line text
  • Checkbox
  • Radiobutton
  • Date field
  • DateTime field
  • Dropdown box

It is also possible to assign Form Fields to specific signers. The following video will explain how:

SIGN BUTLER V2 - Signing URL Expiration

You can decide yourself if you want to have the signing URL, this is the URL in the email button, expiring or not.

SIGN BUTLER V2 - After Signing Actionables

We all know the PDF Butler Actionables and how they can extend functionality.
Now, these Actionables can be used as well after the signing is complete. You want to send an email, call a Flow, custom APEX, ...

SIGN BUTLER V2 - Reassign from the SIGN Request record

Is your signer sick, on holiday, absent, ... . Not a problem, you can reassign to a new signer at any step in the process.

SIGN BUTLER V2 - End Signing URL

Automatically forward to a custom URL after the signer has signed.
For instance, you want to forward to a "Thank you" page, your own website or to a payment gateway.

SIGN BUTLER V2 - Open SIGN Request directly

If you want to see the created SIGN Request directly, you are with multiple Signers and you want to sign immediately, you are launching a SIGN Request from a Community, ... . Here is how you can open the SIGN Request directly.
We call it Non-Silent (NonSilent or Non Silent).

Class to use: cadmus_sign2.Actionable_SignButlerNonSilent

SIGN BUTLER V2 - Signing page translations

Use a translation datasource to translation or change the texts on the signing page.
Add any language or use your own texts. Download an example file with all fields below!

Sign Butler Translation Fields
Sign Butler Full Translation (DE/EN/NL/FR/ES/IT)
Sign Butler Japanese Translation
SIGN BUTLER V2 - Dynamic number of signers

You want multiple people from a related list to sign but you do not know how big your list will be?
You can have up to 10 signers added completely dynamic by combining PDF & SIGN Butler.


Build your own SIGN Butler experience. Here our API overview: Sign Butler V2 API

Need to test you SIGN Butler APEX code:: Sign Butler V2 Unit Testing API

SIGN BUTLER V2 - Embedded Sign

Build your own SIGN Butler experience from internal SFDC, Communities, Guest User Application forms, ... Sign Butler V2 API

See it in action:

Embedded SIGN demo


Example of code for Lightning Web Component:

Code example
SIGN BUTLER V2 - Manual SIGN Request

What if you have one or multiple documents that need to be signed but where not created by SIGN Butler?
No problem, just send them out manually:


Add custom branding to your Emails and Signing page

Setup your SIGN Request Template with the custom branding settings. You can have multiple SIGN Request Templates for different departments and even use Sharing Rules in SFDC to make sure separate departments cannot use each-others SIGN Request Templates and branding

SIGN BUTLER V2 - Custom Lightning Email Templates
SIGN BUTLER V2 - Custom Branding


Permanent or static form-fields on the PDF

If you want your signer to fill out fields every time you send out a PDF for signing? Just add the form-fields to your PDF 1 time and these will be included every time you send out this PDF for signing


Adding Form Fields in the PDF

If you want to add Form Fields to be filled by the signer while you are preparing the PDF to be sent out for signing.


Using pre-defined templates

If you have a PDF that you need to send out regularly, you can create a Template Library and store those templates. Via Sharing of the Library, you can define who in the company has access to the libraries (this is standard SFDC functionality and can be set by the SFDC Admin).
The Library name must start with "SIGN Butler Templates"!
These predefined templates can already have SIGN Placeholders and Form Fields so it will get very easy for a user to send out a SIGN Request.


Linking a Manual SIGN Request to a Salesforce Record

If you want to know for which Contract, Opportunity, ... or any Custom sObject your Manual SIGN Request was for. You can easily link it to a record of choice and the SIGN Request will appear in the related list of that Record.


Receiver on Manual SIGN Request

Setup a Receiver on Manual SIGN Request. A receiver will receive notification on changes, signatures, ... .
SOQL for DataSource to select the Receiver as the owner of the SIGN Request:

SELECT OwnerId, Id, Owner.FirstName, Owner.LastName, Owner.Email FROM cadmus_sign2__Sign_request__c WHERE Id = :signRequestId

 Receiver on Manual SIGN Request
SIGN BUTLER V2 - Postman documentation

Want to connect your external systems to SIGN Butler. Check out our Postman documentation

 SIGN Butler V2 Postman documentation
SIGN BUTLER V2 - SIGN Request Sharing Rules

Want to control who sees which SIGN Request? Maybe different Sales teams want to hide SIGN Requests from other teams

Maybe different departments do not want to share SIGN Request information and so on ...

With SIGN Butler, you can just create Salesforce Sharing Rules to control the visibility on the records in the SIGN Butler objects.

SIGN BUTLER V2 - Upload Image For Signing

Let your signers upload a signature image

SIGN BUTLER V2 - Bulk Signing - My Pending SIGN Requests

Get an overview of all your Pending SIGN Requests so that it is easy to sign these in 1 go without having to search for them.

This is interesting in use-cases where a manager has to sign or you have to sign after your contact already signed.

SIGN Butler V2 - Sign Now

When you sit next to your customer and you only have 1 signer (see In-Person signing for multiple signers), you just want to launch the signing screen so your customer can immediately sign.

Use Actionable class "cadmus_sign2.Actionable_SignButlerSignNow".

Demo on a tablet:

SIGN BUTLER V2 - In-Person Signing

When you are sitting in the same room with all the signers, it makes sense to have have everyone sign on a tablet (or mobile).
SIGN Butler will guide you through the In-Person signing process indicating who is the next signer to pass the divice to to sign.

The Actionable should use class: cadmus_sign2.Actionable_SignButlerSignNow
this makes sure the signing process starts immediately and it is not required to open a mail or the SIGN Request page.

SIGN BUTLER V2 - Control the FROM address for SIGN Butler Emails

Emails for SIGN Butler V2 are send through Salesforce.
So it is important that all emails come from a person that your signer knows!

In this video, we explain the options and indicate it is best to use and OWA (Org Wide Address) or the "User Admin" functionality.

SIGN BUTLER V2 - Add Signers, Receivers and Fillers via Flow

If you need more control, more complex logic on how to select your signers then you can best setup a flow that defines the Signers.
You can write the logic that is required to fetch your signers and order them as required.

Document with information signer/receiver/filler data

SIGN BUTLER V2 - Stand Alone

As SIGN Butler grows in features and user base, we get more & more the question to use it for departments that do not use Salesforce or even at companies without Salesforce.

SIGN Butler Stand Alone article

SIGN Butler V2 - Download unsigned document from SIGN Request page

Your internal staff might need access to the original document that was send out for signing. This can be managed on a per-user or per-team basis with a Custom Permission.

Anyone with the Custom Permission "Show unsigned document on SIGN Request" will be able to download the unsigned document from the SIGN Request page.

SIGN Butler V2 - Expire or Revoke via Flow

Use a Flow action to Expire or Revoke a SIGN Request.


SMS OTP (or One-Time-Password) is incredibly easy to use and provides more proof that the signer is the person you intend, the signer must have their phone close. Via SMS, the signer receives a 6-digit number that can only be used 1 time (only valid to sign a specific document).

Make sure to contact your Account Executive when you want to use SMS OTP!

SIGN Butler V2 - Control SIGN Request actions by User

For some Users you might want to block actions like deleting a SIGN Request or Re-assign.
You can control every action via setting Custom Permissions to the user's Profile or PermissionSet.

  • Manage Sign Request Actions By Permission: Only when this permission is available, the buttons will be controlled by Custom Permissions!
  • Allow Delete Sign Request: Show the Delete button
  • Allow Notify Sign Request: Show the Notify button
  • Allow Quiet Revoke Sign Request: Show the Quiet Revoke button, this to revoke the SIGN Request without sending an email to the stakeholders.
  • Allow Reassign Sign Request: Show the Re-assign button
  • Allow Revoke Sign Request: Show the Revoke button, this will send email to the stakeholders
  • Allow Sign On Sign Request: Show the stamp icon next to the signers to allow the signing on screen
  • Allow Verify Sign Request: Verifies the SIGN Request to see if it was not tampered with
  • Show unsigned document on SIGN Request: Shows the unsinged document

SIGN Butler V2 - Chained SIGN Requests

Chain multiple SIGN Requests so they can be signed, or rejected, directly after each other.

When multiple documents are added to a SIGN Request, all documents must be approved. With a chained SIGN Request, there are separate SIGN Requests for each document. So they can each be signed or rejected separately.

SIGN Butler V2 - Document Filler

If form-fields need to be filled in a document but not by the signer but by another person that does not have to sign. This can be done by a Filler role.

SIGN Butler V2 - Common mistakes - part 1

Common mistakes in SIGN Butler is that the number of signers does not match the number of Sign placeholders in the document.
2 options:

  1. Number of Signers does not match the number of Sign placeholders : Stakeholder not found against the placeholder SIG00X
  2. Number of Sign placeholders does not match the number of Signers : Number of stakeholder not equal to number of sign places

 Complete Video

 Stakeholder not found against the placeholder

 Number of stakeholder not equal to number of sign places

 Making it dynamic


Setup and configuration of COLLABORATION BUTLER for SharePoint.

Setup and Config

Contact our Support department for all COLLABORATION Butler setup documentation, we will respond immediately:

Auto create sub-folders

When creating the folder for the current record. COLLABORATION Butler will create all the required sub-folders in 1 go.

Overview on dynamic site, library & folder config

If you have a Site, a Document Library or Folder per record. COLLABORATION Butler can connect to all dynamically!
Learn in this video how to control the Lightning component to connect to any place in SharePoint.

Overview of other configuration options

The COLLABORATION Butler Lightning component is very extensive and can be configured any way you want.

Rename File or Folder.

Copy File or Folder.

Sharing of a File or Folder.

PDF Butler integration

The COLLABORATION Butler Lightning component is perfectly compatible with all PDF Butler Features
Learn how to generate documents directly from the COLLABORATION Butler Lightning component and store these exactly where you want in SharePoint.

COLLABORATION Butler - Actionable Upload To SharePoint

Use an Actionable to automatically upload your file to SharePoint after generation
Class to use: cadmus_una.Actionable_CollabStoreFile


Here our API overview: COLLABORATION Butler API

For Unit Testing make sure to init the client as in the example in our Apex Docs. A Mock is required in a running test context: COLLABORATION Butler API - createMock

COLLABORATION Butler - Update SharePoint MetaData Columns

Use an Salesforce Lightning Flow to determine which MetaData Columns should be updated after uploading a file to SharePoint

Variables to use:
- recordId: SFDC Id of the record you are working on
- docConfigId: If used, SFDC Id of the DocConfig that was used to generate the document

- ColumnNames: semicolon (;) separated list of column names you want to update
- Variable per column: has the value of the column you want to update

COLLABORATION Butler - Update Document Content Type

Use an Salesforce Lightning Flow to determine which Content Type should be updated after uploading a file to SharePoint

Variables to use:
- recordId: SFDC Id of the record you are working on
- docConfigId: If used, SFDC Id of the DocConfig that was used to generate the document

- ContentTypeId: SharePoint ContentType Identifier

COLLABORATION Butler - Directory Change Control Field

When the path to the directory the record is linking changes, this can be handled automatically. We can move your directories to the new path. For instance, if the AccountName is in the path and this AccountName changes, COLLABORATION Butler notices that and asks if you want to move the folders

COLLABORATION Butler - Show SharePoint MetaData Fields

Configure the COLLABORATION Butler component to show SharePoint MetaData Fields. Specify which fields you want to show and in which order.
Make sure the use the Technical name (API name) of the metadatafields, do not use the labels.

COLLABORATION Butler - Before And After Autolaunched Flows

These flows run Before or After the flows for updating metadata (columns) in SharePoint and setting the ContentType in SharePoint.

These flows run in seperate transactions.

flow input variable (make sure it is available for input!): recordId.

COLLABORATION Butler - File Action

Select a file from SharePoint, through the COLLABORATION Butler component, and call a PDF Butler Pack with an Actionable. This Actionable can be anything like mailing, sending to SIGN Butler, ...
If the selected document is a Word document, it will be converted into a PDF before the Actionable is called.

COLLABORATION Butler - MS Teams Chat Message

Send MS Teams Chat messages directly from Salesforce

COLLABORATION Butler - Filtering files and folders

There are 3 ways to filter files and folders from SharePoint to show in the COLLABORATION Butler component.

Filtering Files


Setup and configuration of FORM BUTLER.

FORM Butler Academy Document
FORM Butler Academy Email
Install & Setup

Contact our Support department for the latest FORM Butler install URL, we will respond immediately:

Create DataSources for Document
FORM Butler Requests - Related List

Add a lookup to the FORM Butler Request SObject to the SObject you are starting from. In our demo, this will be the Opportunity

FORM Butler Requests - Control Who receives the Email

You can control who receives the email from FORM Butler in 3 ways:

  • Create a DataSource that selects a User/Lead/Contact: FORM Butler will use the result of the DataSource to send the email to
  • Use a Lookup Field on a DataSource: The Lookup must be of type User/Lead/Contact
  • Use a Field that returns an email address on the DataSource: FORM Butler will send the mail to this email address

FORM Butler Requests - Lightning Email

Use Lightning email in FORM Butler. These can be easier to maintain and setup

FORM Butler Document Setup (From Main Word Document)

Setup the FORM Butler document, start from a MS Word file and add your first TEXT form-field.

FORM Butler TEXT form-field

Add a TEXT form-field.

FORM Butler TEXTAREA form-field

Add a TEXTAREA form-field.

FORM Butler DATE form-field

Add a DATE form-field.

FORM Butler PickList form-field

Add a CheckBoxes for PickLists and MultiSelect PickLists form-field.

FORM Butler NUMERIC form-field

Add a NUMERIC form-field.

FORM Butler CHECKBOX form-field

Add a CHECKBOX form-field.

FORM Butler Related Lists

Update data in Related Lists.

Create Email DocConfig

To send your form via Email, create and Email DocConfig.

End-2-End Setup and Demo

Create a Pack and an Actionable to launch your FORM Butler request.
The class to use in the Actionable: cadmus_form.Actionable_FormButler

FORM Butler - request electronic signature

If you FORM Butler documents need signoff, that is perfectly possible.
Make sure to use the picture placeholder you can download below, this has a marker so we know where to put the signature.
FYI, this is not using SIGN Butler! This signature is not a digital signature but an electronic signature.

FORM Butler Signature Placeholder
FORM Butler - Create or Update Records via Flow

Use the FORM data to create records or customize the way that updates are done on the Salesforce data.

Create or Update List of Records

Form Butler - Screen Flow Inline Editor

Show the FORM Butler page in a Salesforce Flow so your users can fill in the form immediately in a Screen Flow without getting a popup screen.

FORM Butler - Fine-grained upload of documents

Use this if your form must upload mandatory or optional documents that can be identified by type.

Example JSON from the demo:

[ { "required": true, "documentType": "ID card" }, { "required": false, "documentType": "your own choice" } ]

FORM Butler - Generate Public URL/Link

Generate a public link via a Flow so you can save the URL on a record.
It will use a Pack with a FORM Butler actionable that uses class: cadmus_form.Actionable_FormButlerNow

All settings of the Actionable can be used in the flow. Eg regenerate the PDF on every usage of the URL, remove the submit button, ...
The FORM Request record will only be created the first time the URL is opened in the browser. Not when the URL is generated.

Passing on custom variables for your DataSources.

FORM Butler - Notify Button

Resend the mail to fill in the form from the FORM Request record.

FORM Butler - Custom validation messages

Create custom messages on your form-field validations. Use translations to serve your customers in their preferred language.

Custom and translated validation messages
FORM Butler Document Setup (From Static PDF)

Coming soon -


Setup and configuration of BULK BUTLER.

BULK Butler - Flow Introduced Variables

Use this if you want to run a batch for a set of documents. Eg for Opportunities related to an Account.


Using variables in a Screen Flow (Make sure to request the Lightning Convert Component from our Customer Success team)

Screen Flow introduced variables


List variable via Flow, this allows to pass on a list of, for instance, Ids to be processed by BULK Butler

List variables
BULK Butler - Launch Actionables for each Document

Add Actionables to be executed for each generated Document. These Actionables are run in the context of the record the document was generated against.

BULK Butler - Launch batch from APEX