Simple Signature implementation guide
Install Simple Signature and take your first signature. Pick how you want to work.
Let AI do it for you
Copy this guide into an AI that works in your browser, such as Claude in Chrome. The AI does the steps in your sandbox. You sign in and approve each change.
Lightning Free and paid setup Applies to version 5.8.x Last updated 9 Oct 2026
1Before you begin
Simple Signature takes signatures inside Salesforce. A user opens a record and clicks Sign. The signer reads the form, fills in a few fields and signs with a finger or a mouse. Salesforce saves the signature as a Signature record, linked to the record the user started from.
The free setup comes first. It takes you from the install to a first signature on a Contact. The paid chapters follow, for orgs with the paid version.

What you need
- A Salesforce org in Professional Edition or higher, with Sales Cloud, Service Cloud or Salesforce Platform.
- A user with admin rights in that org.
- A sandbox, to set Simple Signature up there first.
- Lightning Experience. This guide covers Lightning and the Salesforce mobile app. For Classic, open a case.
Test in a sandbox first
The wording of the form is copied onto every Signature record when someone signs. Get the wording right in a sandbox before you take real signatures.
The ß in the names
Many Simple Signature names start with ß, for example the ß Signatures tab. It is the German letter sharp s, written for ss, the app's initials. It is not a B.
Free and paid
The free version takes up to 100 signatures a year. The paid version adds signature requests by email, PDF documents, Google Docs templates, signatures in Flows and more. Do the free setup first, also with the paid version. Then go on to Turn on the paid version.
2Install Simple Signature
Install into a sandbox first. When the whole guide works there, come back and install into production.
Open the Simple Signature listing on the AppExchange. Click Get It Now.
Go to Simple Signature on the AppExchange. Sign in when the AppExchange asks. It shows a Trailblazer sign-in or a Salesforce login page. A Trailblazer account is the free login for Trailhead and the AppExchange. If the AppExchange lists your orgs and your org is not there, link it to your Trailblazer account first. The top of the site now reads AgentExchange. It is the same marketplace.
Pick your sandbox as the place to install.
A window asks Where do you want to install this package?. Under Connected Salesforce Accounts, pick the login of your sandbox. Then click the install button.
If the window offers only Install in Production, click Cancel. Open the Simple Signature change log and click Install in a sandbox. Sign in to your sandbox, and go on at step 5.
Later, when the whole guide works in the sandbox, repeat these steps and install in production.
If a terms box shows, tick it. Then click Confirm and Install.
Some installs show the box I have read and agree to the terms and conditions. If yours does not, go to the next step.
Sign in to the org, if Salesforce asks.
Salesforce opens the install page. Its title starts with Install Simple Signature, and it shows the version number. When Simple Signature is already in the org, the page offers Upgrade in place of Install.
Approve third-party access. Then click Continue.
A window named Approve Third-Party Access lists the web sites that Simple Signature calls, for features such as QR codes and Google Docs:
- CSP Trusted Site:
https://api.qrserver.com - Websites:
api.addressverificationapp.com,docs.googleapis.com,script.googleapis.comandwww.googleapis.com

Tick Yes, grant access to these third-party web sites. Click Continue.
When the install takes a while, Salesforce says it will email you when it finishes. Installed Packages then lists the app as ß Simple Signature.
- CSP Trusted Site:
Assign Simple Signature (Admin) to each admin who sets up Simple Signature.
Simple Signature has four permission sets. The free setup needs the first two.
Who Permission set What it allows Admins who set up Simple Signature Simple Signature (Admin) Full use of the app, with the admin tasks. Every other user who takes signatures Simple Signature (User) Full use of the app, without the admin tasks. The guest user of a Salesforce Site Simple Signature (Guest) Signing on a Site. The paid signature requests use it. Skip it for now. Users of an Experience Cloud site Simple Signature (Community) Signing on an Experience Cloud site. Skip it if you have no site. Open Setup. In the Quick Find box, type Permission Sets. Click Permission Sets. Click Simple Signature (Admin). Click Manage Assignments, then Add Assignment. Tick each admin. Click Next. Salesforce asks whether the assignment expires. Leave it with no expiration date. Click Assign.
Assign Simple Signature (User) to every other user who takes signatures.
Go back to Permission Sets. Click Simple Signature (User). Assign it the same way.
3Check one Salesforce setting
The signature forms need Lightning Web Security. Without it, a form can show an error when it first opens. In many orgs it is on already. The paid features need two more settings. The paid setup covers them.
Open Session Settings.
Open Setup. In the Quick Find box, type Session Settings. Click Session Settings.
Tick the box. Then click Save.
Lightning Web Security changes how every Lightning component in the org runs. If your org has its own custom components, check them in the sandbox after this change.
4Set the wording of the form
The title and the legal text of the form come from custom labels. A custom label is a piece of text that an app shows on its pages. You change a Simple Signature label with an override in your own language.
Until you change them, the title reads Salesforce.com, inc. Release Form and the legal text is a sample release that names Salesforce.
Set the wording before you take real signatures
When someone signs, Simple Signature copies the wording onto the Signature record. A change later does not change the records already signed.
Open Custom Labels.
Open Setup. In the Quick Find box, type Custom Labels. Click Custom Labels. The list holds the labels of every app in the org. The Simple Signature labels show Signature in the Categories column.
Click Page_Title.
Click the name Page_Title on a row with Signature in Categories. The Custom Label Detail page opens. Its Value reads Salesforce.com, inc. Release Form.
Click New Local Translations / Overrides.
The button sits in the Local Translations / Overrides section at the bottom of the page.

If the page has no such section, the Translation Workbench is off. In the Quick Find box, type Translation Language Settings and open that page. Turn the workbench on. Click Edit beside the language your users work in, for example English. Tick Active, add yourself as a translator, and click Save. Then come back to this step.
The page also shows Packaged Translations: the texts that come with the app in other languages.
Pick your language. Type the title of your form. Then click Save.
The New Translation page opens. In Language, pick the language your users work in, for example English. Do not press Enter in this list. Enter saves the form before you type the title.
In Translation Text, type the title you want at the top of the form, for example
Photo Release Form.
Add an override for each other language your users work in.
A user whose Salesforce language has no override sees the default title, or the packaged translation for that language. Do steps 3 and 4 again for each language. For a language under Packaged Translations, you can also click Override on its row.
Change Long_Legal_Text_1 the same way.
Go back to Custom Labels and click Long_Legal_Text_1. This is the text under the title, above the fields and the signature box. A label holds up to 1,000 characters.
Change Long_Legal_Text_2 the same way.
Put the rest of your legal text here. The form shows it right after Long_Legal_Text_1, on the same line. Today the form shows no space between the two texts, and TAF is fixing that. If your text fits in Long_Legal_Text_1, still move its last sentence here, so the sample text does not show.
Other labels you can change
Change these the same way, if you want other words on the form.
| Label | What it changes |
|---|---|
| Submit_Button | The words on the Save Signature button. |
| Cancel_Button | The words on the Cancel button. |
| City_Field, Date_Field, Date_Field_2 | The labels of the City, Date and Date of Birth fields. |
5Choose the fields on the form
The fields on the form come from a field set named SignatureFields on the Signature object. A field set is a named group of fields that you edit in Setup.
Open the Signature object in Object Manager.
Open Setup. Click Object Manager. Click ß Signature, the object with the API name
signature__Signature__c. Salesforce has other objects with similar names, such as Digital Signature. Leave those alone.Optional: make a new field for the form.
Click Fields & Relationships. Click New, and make the field as usual. On the field-level security page, make the field visible to the profiles of the users who take signatures. Skip this step if the fields you need are already there.
Click Field Sets. Then click SignatureFields.
The field set editor opens. The fields of the Signature object sit at the top. The fields on the form sit in In the Field Set. At first it holds First Name, Last Name, Email and Date.
Click Save.
One field set in the free version
The free version always uses SignatureFields. More field sets, for more than one form, need the paid version.
6Add the Sign button
The Sign button opens the form on a record. That record becomes the parent of the signature. This chapter uses Contact. Lead and Opportunity work the same way.
Another object as the parent
The Signature object comes with lookup fields to Contact, Lead and Opportunity. For another object, make a lookup field to it on the Signature object first, under Fields & Relationships. Make only one lookup to each object.
Open Contact in Object Manager. Click Buttons, Links, and Actions.
Open Setup. Click Object Manager. Click Contact. Click Buttons, Links, and Actions.
Click New Action.
The New Action page opens.
Fill in the action as below. Then click Save.
Field Value Action Type Pick Lightning Component. Lightning Component Pick signature:SignatureFormFree. The list starts on signature:SignatureFormLwc.Height Type 600pxin place of 250px.Label Type Sign.Name Salesforce fills in Signfrom the label.If the first click on Save does nothing, click it again.

Open the Contact page layout.
In the menu on the left, click Page Layouts. Click the layout your users work with, for example Contact Layout. To see which layout each profile uses, click Page Layout Assignment.
Drag Sign into the Salesforce Mobile and Lightning Experience Actions section.
In the palette at the top, click Mobile & Lightning Actions. Drag Sign, the action you made in step 3, into the section Salesforce Mobile and Lightning Experience Actions. Leave the items marked Deprecated.
If that section asks you to override the predefined actions, click the link to do so first.

Add the ß Signatures related list. Remove its New button.
In the palette, click Related Lists. Drag ß Signatures into the Related Lists section. Click the wrench icon on the new related list. Click the + beside Buttons to open that part. Untick New, and click OK. A new signature must start from the Sign button, so the New button only confuses users.
Signature Steps is a different related list. You do not need it.
Click Save.
Salesforce asks Save page layout changes?, with a box to overwrite users' personal related list customizations. Leave the box unticked, and save. Do the same on each layout that needs the Sign button.
7Take a test signature
Check the whole setup with one signature on a test Contact.
Open a test Contact.
In a sandbox with no contacts, open the Contacts tab and click New. Type a first name, a last name and an email address. Fill in any other field your org asks for, such as Account Name. Click Save.
Click Sign.
Sign sits with the buttons at the top right of the record, or in the menu under the arrow at the end of the buttons. The form opens with your title, your legal text, the fields First Name, Last Name, Email and Date, a signature box and the Save Signature button.
Fill in the fields.
Type the signer's first name, last name and email. The Date fills itself.
Sign in the box.
Use the mouse, or a finger on a touch screen.
Click Save Signature.
Simple Signature saves the signature and opens the new Signature record.
Sign on a phone
The Sign button works the same way in the Salesforce mobile app.
Paid versionChapters 8 to 27
These chapters need the paid version of Simple Signature. They do not count in the setup progress. With the free version, go on at chapter 28.
8Turn on the paid version Paid
Paid version only. These steps do not count in the setup progress.
The free version takes up to 100 in-person signatures a year on the standard form, with the Simple Signature branding. The paid version adds these features.
| Feature | What it does |
|---|---|
| More signatures | More than 100 signatures a year. |
| Signature requests | Sends a request by email or QR code. The signer signs on a page of your Salesforce Site, on any device. |
| PDF documents | Makes a PDF of the signed document. Saves it to Files and emails it to the signer. |
| Document templates | Builds the PDF from a Google Docs template or a Visualforce page, with Salesforce fields merged in. |
| More forms | Many forms in one org, each with its own fields, settings and wording. |
| Your branding | Your logo and colors on the form. |
| More ways to sign | A typed name, a paper signature that is scanned, a Topaz signature pad, or a checkbox. |
| Signatures in Flows | A signature screen in a screen Flow. |
| Automatic records | Makes a Lead or another record from the form when someone signs. |
| Sites and other apps | Signatures on an Experience Cloud site, and links to other apps. |
| Technical support | Help from TAF with setup and configuration. |
To buy the paid version, email [email protected] or book a demo.
Get an Upgrade Key from TAF.
When you buy the paid version, TAF gives you an Upgrade Key. A key belongs to one org. Ask for a key for each org, for example one for your sandbox and one for production.
Open the Simple Signature Configure page.
Open Setup. In the Quick Find box, type Installed Packages. Click Installed Packages. Click Configure beside ß Simple Signature.
You need the permission set Simple Signature (Admin) for this page. See step 7 of Install.
Click Upgrade.
The Upgrade button sits on the Configure page of the free version. The window License Info opens.
Paste the Upgrade Key. Save it.
Paste the key into the License Info window exactly as TAF sent it, with no space before or after it. Then click the button that saves it.
Check that the paid tabs show.
The Configure page now shows eight tabs, from Home to Maintenance. Among them are Configuration, Experiences, Google Docs Configuration, Site Configuration and Email Templates.
What the paid chapters cover
The paid chapters cover the form options, signature requests, PDF documents and administration. Do only the chapters for the features you use.
9Build a signature experience Paid
Paid version only. These steps do not count in the setup progress.
A signature experience is a saved set of settings for one signature form. It sets which fields show, how the signer signs, where Salesforce goes after the signature, and more. Each experience gets an Experience ID. A Sign button, a record page or a Flow uses that ID to show the form your way.
Open the Configure page. Click the Experiences tab.
Open the Configure page the same way as in step 2 of Turn on the paid version. The Simple Signature app also has a ß Configure tab that opens the same page.
Click Add an Experience. Type a name.
Type a Name, for example
Contact Release. The Description is optional. Use it to say where the form runs.Click Add Parameter. Pick a parameter and set its value.
Each parameter changes one thing on the form. Pick it in the list in the Parameter column. A parameter with a checkbox is on when you tick it. Other parameters take a value. Type it in Hardcoded Value/Field Reference, and leave Is Field Reference? unticked.
If the list in the Parameter column does not open with a click, click it once, type the parameter name and press Enter.

Add the other parameters you need.
The table lists the parameters for the form itself. Add Advanced Parameter opens the parameters that orgs need less often. The parameters for signature requests are in More request options. The parameters for PDF documents are in Document parameters for an experience.
Parameter Button What it does fieldsetAdd Parameter Shows the fields of another field set on the form. The value is the field set name. Without it, the form uses SignatureFields. compactAdd Parameter Puts each label on the same line as its field. fieldreadonlyAdd Parameter Shows the fields you list as read-only. List field API names, with commas between them. fieldheaderAdd Parameter Shows the fields you list as headings. fieldhidelabelAdd Parameter Shows the fields you list with no label. hideblanksAdd Parameter Hides the fields that are blank. defaultvalue_Add Parameter Puts a value in a field of the Signature. Pick the field in Signature Field. Type the value in Hardcoded Value/Field Reference. contactfieldAdd Parameter For a parent record that is not a Contact. Gives the API name of the Contact lookup field on the parent. The PDF and email features need a Contact on the Signature. backtoparentAdd Parameter After the signature, opens the parent record, not the new Signature record. returlAdd Parameter After the signature, opens this web address. hidecancelAdd Parameter Hides the Cancel button. initialsAdd Parameter Adds a second, smaller box for the signer's initials. multisignatureAdd Parameter Shows up to 5 signature boxes. The value is their names, with commas between them. The first box is required. A * in front of a name makes that box required too, for example One,*Two.requestedformAdd Parameter Gives the form a name. The name goes on each Signature record, so you can tell the forms apart. preauthorizedAdd Parameter Skips the eSignature Agreement window for this form. See Brand the form. submissiontypeAdd Advanced Parameter The ways the signer can sign. Click the pencil. In the window Select option, pick one or more. Regular, the default, is a mouse or a finger. Typed lets the signer type a name and pick a font. None shows a checkbox. Paper lets the signer print, sign on paper and upload a scan. Topaz uses a Topaz signature pad. submissiontypedefaultAdd Advanced Parameter The way to sign that shows first, when the form offers more than one. submitbuttonAdd Advanced Parameter The text on the button that saves the signature, for this form only. Paper signatures need one more step
A paper signature saves with the Status Uploaded, not Signed. Simple Signature cannot check the scan. After a person checks it, a Flow or the person sets the Status to Signed.
Click Save.
Save sits at the bottom of the experience.
A form with other fields
The free version always uses the SignatureFields field set. With the paid version, an experience can use another one.
- Open Setup. Click Object Manager. Click ß Signature. Click Field Sets. Click New.
- Type a Field Set Label, for example
Visitor Fields. Salesforce fills in the Field Set Name. Fill in Where is this used?, then click Save. - Drag the fields for this form into In the Field Set. Click Save.
- In the experience, add the parameter
fieldset. Its value is the Field Set Name.
10Add a Sign button for your experience Paid
Paid version only. These steps do not count in the setup progress.
The Sign button from Add the Sign button always shows the standard form. For a button that uses your experience, make a small Lightning component that holds the Experience ID. Then make an action from it. You copy the code from this guide.
Open the Developer Console.
Click the gear icon at the top right. Click Developer Console. It opens in a new window. If no window opens, allow pop-ups for Salesforce in your browser, and click Developer Console again.
Click File, then New, then Lightning Component.
In Name, type
SignContact. Use letters only, with no spaces. Leave the boxes under Component Configuration as they are. Click Submit.Replace the code in the Component tab with this code.
Select all the code in the tab and delete it. Then paste this code.
<aura:component implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" > <aura:attribute name="recordId" type="String" /> <aura:attribute name="experienceId" type="String" default="XXXXXXXXXXXXXXX" /> <div class="slds"> <div class="slds-page-header" role="banner" id="mobHeader"> <div width="100%"> <span><center><img src="{!$Resource.signature__SSLogo}" style="height:25px;" /></center></span> <span class="slds-text-heading--small"><center><b>{!$Label.signature.Page_Title}</b></center></span> </div> </div> </div> <signature:SignatureFormInfo experienceId="{!v.experienceId}" showLegalText="true"></signature:SignatureFormInfo> <!-- THIS CODE CAN BE USED TO INCLUDE A PDF ABOVE THE FIELDS - MAKE UPDATES TO THE width, height, PDF_name - CHANGE THE "Id" PARAMETER AS APPROPRIATE FOR THE PDF - ADD THE NAME OF THE COMMUNITY NAME IF BEING USED IN A COMMUNITY, SUCH AS: /apex/community_name/PDF_name <iframe src="{! '/apex/PDF_name?isLight=yes&Id=' + v.recordId }" width="100%" frameBorder="0" height="500px"/> <br /> // --> <signature:SignatureFormConnector recordId="{!v.recordId}" ExperienceID="{!v.experienceId}" isQuickAction="true"/> <div align="center" style="color:gray"><br/><br />Powered by <i><a href="http://www.simplesignatureapp.com/" target="_blank">Simple Signature</a></i> from To A Finish</div> </aura:component>The code is the file StandaloneSignatureForm-Simple.html in the lightning folder of the Simple Signature sample code on GitHub.
Save the component. Close the Developer Console.
Press Ctrl+S on Windows or Command+S on a Mac. You can also click File, then Save.
Rename the free Sign action.
Open Setup. Click Object Manager. Click Contact. Click Buttons, Links, and Actions. Click the arrow at the end of the Sign row. Click Edit. Change Label to
Sign (free). Click Save.The new button takes the label Sign. The old one leaves the page layout in step 8.
Click New Action. Fill it in as below. Then click Save.
Field Value Action Type Pick Lightning Component. Lightning Component Pick c:SignContact, the component you made.Height Type 600px.Label Type Sign.Name Salesforce fills in Sign. Clear it and type Sign_Experience. The name Sign belongs to the free action.
Swap the actions on the page layout.
Open Page Layouts and the layout from step 4 of Add the Sign button. In the palette, click Mobile & Lightning Actions. Drag Sign (free) out of Salesforce Mobile and Lightning Experience Actions, back to the palette. Drag the new Sign into that section. Click Save.
Take a test signature with the new button.
Follow Take a test signature. The form now follows your experience.

For developers
The same GitHub folder holds a Lightning web component version of this button, StandaloneSignatureFormLWC-Simple, and a full-screen form, Fullscreen_Component. Open a case if you want help with them.
11Show the form on a record page Paid
Paid version only. These steps do not count in the setup progress.
You can also put the form on a tab of the record page, with no code. Any user who can open the record and use Simple Signature can sign there.
The Signature needs a lookup to the object
Contact, Lead and Opportunity have one already. For another object, see Add the Sign button.
Open a test Contact. Click the gear icon at the top right. Click Edit Page.
The Lightning App Builder opens. Components sit in the left panel, the page sits in the middle, and the settings of the item you click sit in the right panel.
Add a new tab beside Details.
Click the tab bar on the page, the bar that holds Activity and Details. In the right panel, click Add Tab. Click the new tab in that list. In Tab Label, pick Custom, and type
Sign.Drag SignatureFormConnector into the new tab.
SignatureFormConnectorFind it under Custom - Managed in the left panel.
Click Save. Activate the page, if Salesforce asks.
Salesforce asks the first time you edit the Lightning page of an object. Click Activate. Click Assign as Org Default. Choose Desktop. Click Next. Salesforce shows a review of the assignment. Click Save.
Click Back. Open the Sign tab and sign.
Back sits at the top right of the Lightning App Builder. The record opens. Click the Sign tab. The form shows there. Take a test signature.
If the first click on the button that saves only moves the page, click the button again.
12Take signatures in a Flow Paid
Paid version only. These steps do not count in the setup progress.
A screen Flow can hold a signature form as one of its screens. Use it when the signature is one step in a longer process, for example a check-in.
Open Flows. Click New Flow. Click Screen Flow.
Open Setup. In the Quick Find box, type Flows. Click Flows. Click New Flow. Flow Builder opens in a new browser tab, with the window New Automation. Under Frequently Used, click Screen Flow. The empty Flow opens at once.
Make a variable named recordId.
Click the Toolbox icon at the top left. Click Manager, then New Resource. Pick Variable as the Resource Type. In API Name, type
recordId, with exactly this case. Pick Text as the Data Type. Under Availability Outside the Flow, tick Available for input. Click Done.When the Flow starts from a record, Salesforce puts the ID of the record in this variable.
Add a screen.
Click the + on the line. The list Add Element opens. Under Interaction, click Screen. Type a Label, for example
Sign Screen. The Label is required.To keep the signer on the form until the signature saves, hide the footer: open Configure Footer and untick Show Footer. It is ticked at first.
Drag Simple Signature Form onto the screen. Fill in its settings.
In the search box above the Components list, type
signature. Drag Simple Signature Form onto the screen. Do not use the one for a Site. Click it on the screen. Its settings show on the right. The screen shows no preview of the form.Setting Value API Name Type a name, for example SignatureForm.Experience ID Paste your Experience ID. Parent ID Pick the variable recordId.Other Parameters Leave it empty. Style Optional. CSS for the size of the form on the screen. When you click into Experience ID, a list of Flow resources opens and can cover Parent ID. Paste the ID, then click an empty part of the panel to close the list.
The Flow form shows no title and no legal text. To show them, drag a Display Text component onto the screen, above Simple Signature Form, and type them there.

Click Done. Save the Flow. Click Activate.
Click Save. In the window, type a Flow Label, for example
Sign Contact. Salesforce fills in the Flow API Name. Click Save. Then click Activate. Salesforce says the automation is active.To change an active Flow later, open it, make the change and click Save As New Version. Save is grey on an active Flow. Then activate the new version.
Make an action that starts the Flow.
Open Setup. Click Object Manager. Click Contact. Click Buttons, Links, and Actions. Click New Action. Pick Flow as the Action Type. Pick your Flow. Type a Label, for example
Sign in Flow. A Flow action has no Height. Click Save.Add the action to the page layout. Test it.
Drag it into Salesforce Mobile and Lightning Experience Actions, the same way as step 5 of Add the Sign button. Then open a test Contact. The new action can sit in the menu under the arrow at the end of the buttons. Click it.
The form opens in a window. Its button reads Done. Done saves the signature and closes the window.

A Flow that shows a PDF first
With a document template, a Flow can make the Signature first, wait for a PDF preview and show it before the signer signs. See Show the PDF in a Flow before the signature.
13Brand the form Paid
Paid version only. These steps do not count in the setup progress.
The paid version lets you put your own logo and colors on the form. You set the colors on the Configuration tab of the Configure page, and the logo in the Sign button component.
Open the Configure page. Click the Configuration tab.
Find the section Form Options. If you open the page from the App Launcher, pick ß Configure. Other TAF apps have Configure tabs too.
Set the form options.
Option What to do Require eSignature Agreement Turn it on to show a window where the signer agrees to sign electronically, before the form opens. Require Location Collection Turn it on to save the location of the signer, as latitude and longitude, with every signature. If the browser blocks the location, the signer must allow it and load the page again. Do not attempt to collect Location Turn it on to never save a location. TAF does not advise it. Hide "Save and New" Button on Signature Form Leave it as it is. TAF retires this option soon. Process Signatures In Page (Synchronously) It shows grey and off. Leave it. The agreement window can put its Agree button below the edge of the window. Scroll down inside the window to reach it.

Upload your logo as a static resource.
Open Setup in a new tab. In the Quick Find box, type Static Resources. Click Static Resources. Click New.
Type a Name, for example
CompanyLogo, with letters, numbers and underscores only. Pick your logo file, for example a PNG. Cache Control starts on Private. Set it to Public. Click Save.Put your logo in the Sign button component.
Open the Developer Console. Click File, then Open Lightning Resources. Type
SignContactin the Filter box. Click c:SignContact, then COMPONENT. Click Open Selected. The tab SignContact.cmp opens.Find
$Resource.signature__SSLogo. Replacesignature__SSLogowith the Name of your static resource, for example$Resource.CompanyLogo. Save the component.To take the line Powered by Simple Signature off the form, delete the line near the end that starts with
<div align="center". Save again. The save shows no message. The * on the tab name goes away.Your browser keeps the old version of the form for a while. Before you test, reload the record page with Ctrl+Shift+R on Windows or Command+Shift+R on a Mac.
Change the colors, if you want.
Each element below takes CSS, the code that styles a web page. The label of each element shows its default value. Change one element at a time. Then test it, because a mistake in CSS can break the form.
Element What it styles Save Button The button that saves the signature. Request Button The button that sends a signature request. Cancel Button The Cancel button. Signature Top Border Left The left part of the colored bar above the signature box. Siganture Top Border Right The right part of the colored bar above the signature box. The label on screen has this typo. Field / Button Area The area with the fields and the buttons. It shows no default. Signature Pad The signature box. It shows no default. For example,
background:navy;color:white;makes a button dark blue with white text.Leave Logo Static Resource and Logo Style empty. They do not change the form of the Sign button.
Click Save Settings. Then check that your values stayed.
The green Save Settings button stays at the same spot on the screen while you scroll. After a save, a green bar with Setting Updated Successfully can show at the top of the page, out of view.
Reload the page and look at your values. If a value is gone, type it again and click Save Settings again.
Take a test signature.
Use the Sign button from Add a Sign button for your experience. Check the logo and the colors. With Require eSignature Agreement on, a window asks the signer to agree first.

14Advanced form options Paid
Paid version only. These steps do not count in the setup progress.
These options serve special cases. Most orgs do not need them.
Different legal text for one form
The labels from Set the wording of the form give every form the same title and legal text. A form type gives one experience its own legal text.
Add the parameter formtype to the experience.
On the Experiences tab, open the experience and click Edit. Click Add Advanced Parameter. Pick
formtype. In Hardcoded Value/Field Reference, type a name for the form type, for exampleVisitor_Release. Click Save.Open Custom Metadata Types. Click Manage Records beside ß Form Type.
Open Setup. In the Quick Find box, type Custom Metadata Types. Click Custom Metadata Types.
Click New. Fill in the record. Then click Save.
Type the Label first. Salesforce fills in ß Form Type Name from it. Then change ß Form Type Name to the formtype value.
Field Value Label A name for the record, for example Visitor Release.ß Form Type Name The same name as the formtype value, for example Visitor_Release.Legal Text The legal text for this form. Signature URL Leave it blank. It serves signature requests. Thank You URL Leave it blank. It serves signature requests. Other fields Leave them blank. If the page does not show all these fields, save the record. Click Edit Layout at the top right, add the fields, and edit the record again.
Take a test signature.
The form shows the legal text of the form type. The title stays as Page_Title sets it.
Longer field labels
A Salesforce field label holds up to 40 characters. The ß Custom Labels setting gives a field on the form a label of up to 255 characters. The longer label shows on every Simple Signature form.
Open Custom Settings. Click Manage beside ß Custom Labels.
Open Setup. In the Quick Find box, type Custom Settings. Click Custom Settings.
Click New. Fill in the record. Then click Save.
Field Value Name Any name that no other record in this list uses. API Name The API name of the field on the form, for example signature__Company__c.Language Code The language of the form, for example enfor English.Label The longer label, up to 255 characters. Add the parameter language to the experience.
Give it the same code as the record, for example
en. Then take a test signature.
Update the parent record after a signature
To change the parent record when someone signs, build a record-triggered Flow on ß Signature. Start it when the Status changes to Signed. For example, the Flow can move an Opportunity to its next Stage.
For values that are not on the form, Simple Signature has the ß Field Updates setting. Code writes a ß Field Updates record before the form opens. When the signer signs, Simple Signature copies the value to the parent record. When the signer cancels, Simple Signature deletes the record. A developer sets this up from the FieldUpdates class in the classes folder of the sample code on GitHub.
15Set up the signature site Paid
Paid version only. These steps do not count in the setup progress.
A signature request sends the signer an email with a link. The link opens a page on a Salesforce Site, a public web site that your org hosts. The signer needs no Salesforce login.
The setup has four parts: the site, the connection between the site and Simple Signature, a button that sends the request, and the emails. Do them in this order.
Ask an admin who knows Sites
A site and its sharing rules control what people outside your org can see. If you have not set up a Salesforce Site before, ask an experienced admin to help, or open a case.
Open Sites. Click New.
Open Setup. In the Quick Find box, type Sites. Under Sites and Domains, click Sites.
The first time, the page asks you to register a domain for your sites, for example
yourcompany.my.salesforce-sites.com. Tick I have read and accepted the Salesforce Sites Terms of Use. Click Register My Salesforce Site Domain. The page then shows your site domain name.Then click New.
Fill in the site as below. Then click Save.
Field Value Site Label A name, for example Signatures. Salesforce fills in Site Name.Site Contact Salesforce fills in your name. Change it if another admin looks after the site. Default Web Address Type a short path in the box after the domain, for example sign. You can leave it empty if no other site uses the domain.Active Tick it. Active Site Home Page Pick SiteSignature, the signing page of Simple Signature.URL Rewriter Class Pick signatureURLRewriter.Cache public Visualforce pages Untick it. It is ticked at first. Other fields Leave them as they are. 
Write down the site address. Keep it for the next chapter.
The site page shows the address in two parts, in the Custom URLs list: Domain Name and Path. Put
https://in front and join them, for examplehttps://yourcompany.my.salesforce-sites.com/sign. Paste it into a text file.Add the two Simple Signature pages to the site.
On the site page, find Site Visualforce Pages. Click Edit. The page Enable Visualforce Page Access opens. Make sure these two pages sit in Enabled Visualforce Pages. Click Save.
signature.SiteSignature, the signing page. It is there already, because it is the home page.signature.TrackEmail, which records when the signer opens the email. Move it across.
Assign Simple Signature (Guest) to the guest user of the site.
Every site has a guest user. People outside your org work as this user on the site.
On the site page, click Public Access Settings. Click View Users. Click the guest user, for example Signatures Site Guest User. In Permission Set Assignments, click Edit Assignments. Add Simple Signature (Guest). Click Save.
The permission set gives the signer access to the fields of the form, for example First Name, Last Name and Email.
Share open Signature records with the guest user.
A guest user sees no records until a sharing rule shares them. Open Setup. In the Quick Find box, type Sharing Settings. Click Sharing Settings. Find ß Signature Sharing Rules. Click New.
Field Value Label A name, for example Open requests for the site. Salesforce fills in Rule Name.Rule Type Pick Guest user access, based on criteria. Criteria Field Status, Operator not equal to, Value Signed. Pick each list value with the mouse. The Enter key saves the form too early, with the error Invalid or empty operator.Share with Pick the guest user of your site. Access Level Read Only. It cannot change. The page shows a yellow warning about guest user access. This rule shares only open requests, and only to read. Click Save. Salesforce can take some minutes to apply the rule. After the signature, the guest user no longer needs the record. This is why the rule leaves out Signed records.

Your own fields on the request form
Simple Signature (Guest) covers the standard fields of the form. You can add your own field to the field set. The signer then cannot see it or fill it in until you give the guest user access to it.
- On the site page, click Public Access Settings.
- With the new profile editor, click Object Settings, then ß Signatures. With the classic editor, find Custom Field-Level Security and click View beside ß Signature.
- Click Edit. Give Read and Edit access to your fields on the form. Click Save.
The form can show fields of another object, for example the Lead. Then add a sharing rule for that object too, the same way as step 6.
16Connect the site to Simple Signature Paid
Paid version only. These steps do not count in the setup progress.
Simple Signature needs a connection to your org to save the signatures that come in from the site. In this chapter you set the site address, make an External Client App and authorize the connection. An External Client App is the Salesforce record that lets an outside page connect to your org.
The user who authorizes holds the connection
Use an admin user with Simple Signature (Admin), with full access to ß Signature and to the objects you request signatures from. Simple Signature saves the signed PDF as this user. It also sends the email with the signed PDF as this user, unless you set a sender address. See The sender of the emails.
Open the Configure page. Click the Configuration tab.
Open it the same way as in step 2 of Turn on the paid version. Use Lightning Experience for steps 1 to 8.
Paste the site address into Site URL for Signature Requests.
End the address with a slash, for example
https://yourcompany.my.salesforce-sites.com/sign/. The label on the page says so too: include final '/'.Turn on the three options below.
- Process Signatures in Batch Mode. Simple Signature then processes every Signature record, however it is made. TAF advises it strongly.
- Email Requested Signature with PDF Attachment. The request email then carries the PDF to sign. The label ends with (please turn off workflow rule). The old Send Email workflow rules of Simple Signature must stay off.
- Run PDF Automation on Save, under the automation options. Without it, the signer signs, but Simple Signature makes no signed PDF and sends no second email.
In a new install, all three are off.
Check Template VisualForce Page for PDF. Click Save Settings.
Leave it empty to use the standard PDF of Simple Signature. To use a PDF page of your own, type its name with
c__in front, for examplec__Signature_PDF. See Make a PDF page in Visualforce. Withoutc__, Simple Signature cannot find the page.Click Save Settings. Reload the page and check that your values stayed.
Click the Site Configuration tab. Add a remote site, if the tab asks for one.
Under Connected APP Configuration, leave the option on Default. A change there resets the authorization.

The Authorize Site box can ask you to add your org address to the remote site settings, for example
https://yourcompany.my.salesforce.com. Copy the address from the message. Open Setup. In the Quick Find box, type Remote Site Settings. Click New Remote Site. Type a name, for exampleSimpleSignatureSite. Paste the address into Remote Site URL. Click Save.Open External Client App Manager. Click New External Client App.
Open Setup. In the Quick Find box, type External Client App Manager. Click it.
Fill in the app as below. Then click Create.
Section Field Value Basic Information External Client App Name A name, for example Simple Signature Site. Salesforce fills in API Name.Basic Information Contact Email Your email address. It is required. API (Enable OAuth Settings) Enable OAuth Tick it. App Settings Callback URL, in production https://login.salesforce.com/apex/signature__SiteAccessAuthorizeApp Settings Callback URL, in a sandbox https://test.salesforce.com/apex/signature__SiteAccessAuthorizeApp Settings OAuth Scopes Move these three scopes to Selected OAuth Scopes. Manage user data via APIs (api). Manage user data via Web browsers (web). Perform requests at any time (refresh_token, offline_access). Security Require Proof Key for Code Exchange (PKCE) extension for Supported Authorization Flows Leave it ticked. Older guides said to untick it. Salesforce now requires it. Other sections Leave them as they are. 
Copy the Consumer Key and the Consumer Secret.
After Create, the app opens on its Policies tab. Click the Settings tab. Click OAuth Settings to open that section. It is closed at first. Click Consumer Key and Secret. A new browser tab opens. Salesforce sends you a code to check your identity. Type the code.
Copy the two values into a text file. Keep them private. Anyone who has them can try to connect to your org.
If Salesforce shows Insufficient Privileges here, see If something does not work.
Switch to Salesforce Classic.
Click your profile picture at the top right. Click Switch to Salesforce Classic.
The authorization works only in Classic. In Lightning it can fail with no message, or with the message login.salesforce.com refused to connect.
Open the Configure page in Classic. Click the Site Configuration tab.
Classic is the older look of Salesforce. Click Setup at the top right. If a window Welcome to the Improved Setup! opens, close it. In the Quick Find box, type Installed Packages. Click Configure beside ß Simple Signature.
Paste the key and the secret. Click Save Settings.
Under External Client App Settings, paste the Consumer Key into Client Id. Paste the Consumer Secret into Client Secret. Click Save Settings.
Always save before you authorize, also when you changed nothing.
Click Authorize. Sign in and allow access.
Sign in with the admin user from the note at the top of this chapter, if Salesforce asks. The page Allow Access? names your app and the access it asks for. Click Allow.
After a few seconds, the page shows Date, User and Updated By above the Authorize button. No date means no authorization. Then click Authorize again. In some orgs the first click fails. Later, the date changes each time the refresh job runs.

Schedule the refresh job.
In Schedule Refresh Job Interval (Hours), type
1. Click Schedule Refresh Job. The job renews the connection every hour. Without it, the connection can stop.To check the job, open Setup and type Scheduled Jobs in the Quick Find box. The page All Scheduled Jobs lists Refresh Token Job Simple Signature.
Switch back to Lightning Experience.
Click Switch to Lightning Experience at the top of the page.
Authorize the connection again
The connection can stop, for example after a Salesforce outage. The signer then sees the message Site Configuration not done.Please ask Admin to Authorize.
To fix it, do steps 9 to 12 again. Switch to Classic. Open the Site Configuration tab. Click Save Settings. Then click Authorize.
17Send a signature request Paid
Paid version only. These steps do not count in the setup progress.
A request starts when Salesforce gets a new ß Signature record with the Status Requested and an email address. Simple Signature then emails the signer a link to the site.
In this chapter you make a Request Signature button on Leads with a Salesforce action. The same steps work on Contacts and on other objects.
Open Object Manager. Click Lead, then Buttons, Links, and Actions. Click New Action.
Use Lightning Experience, with admin rights.
Fill in the action as below. Then click Save.
Field Value Action Type Pick Create a Record. Target Object Pick ß Signature. Label Type Request Signature. Salesforce fills in Name.Success Message Type Signature Request Created.Other fields Leave them as they are. The page has no field for the link to the Lead. After the save, the action shows Relationship Field Lead.
Put First Name, Last Name and Email on the action layout. Click Save.
Salesforce opens the layout of the action. Drag the three fields into it. The user who sends the request sees these fields, and can change them before the save.
Add the predefined field values below.
Below the layout, find Predefined Field Values. Click New for each row. Pick the Field Name. Set the value in Specify New Field Value. Click Save.
If New opens a blank page, go back to the action and click New again.
Field Name Value What it does Attach PDF to Parent? True Saves the signed PDF on the Lead. Attach PDF? True Saves the signed PDF on the Signature record. Email PDF? True Emails the signed PDF to the signer. Email Lead.EmailThe address that gets the request. First Name Lead.FirstNameThe first name of the signer. Last Name Lead.LastNameThe last name of the signer. Status Requested Starts the request. Type True and the Lead fields, such as
Lead.Email, in Formula Value. Show Formula Editor opens a larger editor, if you need one. For Status, pick Requested in the Specific Value list. If Formula Value then stays empty, type"Requested", with the quote marks.On Contacts, use
Contact.Email,Contact.FirstNameandContact.LastName.
Add the action and two related lists to the Lead page layout.
Click Page Layouts, then the Lead layout. In the palette, click Mobile & Lightning Actions. Drag Request Signature into Salesforce Mobile and Lightning Experience Actions. If that section asks you to override the predefined actions, click the link to do so first.
In the palette, click Related Lists. Drag ß Signatures and Notes & Attachments into the Related Lists section, if they are not there. The requests and the signed PDFs show in them. Click Save.
Open a test Lead with your own email address. Click Request Signature. Click Save.
If the button row is full, Request Signature sits in the menu under the arrow at the end of the row.
The action shows the name and the email of the Lead. Salesforce shows Signature Request Created.
The new record shows in the ß Signatures related list of the Lead. Within a minute, its Status changes from Requested to Emailed.
Open the request email. Open its link in a private browser window.
A private window has no Salesforce login. It shows the page the way your signers see it. In Chrome, press Ctrl+Shift+N on Windows or Command+Shift+N on a Mac. Paste the link there.
The email has the Subject Signature Requested and a Sign Online button. It carries the PDF to sign as an attachment. Until you make your own document, Simple Signature uses its standard PDF. To change the words, see Change the request emails.
The sender can show as an address that ends in
sfcustomeremail.com. Salesforce puts it in place of an address it cannot send from. See The sender of the emails.
Check the result in Salesforce.
Open the Signature record. The Status reads Signed. The fields PDF Attached, PDF Attached to Parent and PDF Emailed show the time.
The signed PDF sits in Notes & Attachments of the Signature and of the Lead. With Use Files instead of Attachments on, it sits in Files. The signer gets a second email with the signed PDF, with the Subject Your Signed Form.
If the dates stay empty, see The signer signed, but no PDF comes.

Other ways to send a request
Any process that makes a ß Signature record with these values sends a request, for example a Flow, Apex code or a data load. A signature experience can also add a request button to the form. See Request parameters for an experience.
18Change the request emails Paid
Paid version only. These steps do not count in the setup progress.
Simple Signature sends two emails. Both are Classic email templates of the app.
| Template | |
|---|---|
| The request, with the Sign Online button | EmailSignature |
| The email with the signed PDF, after the signature | SignatureReturn |
Change their words, so the signer knows who you are and what to sign.
Open Classic Email Templates. Open the folder Simple Signature. Click EmailSignature.
Open Setup. In the Quick Find box, type Classic Email Templates. Click it. The list opens on another folder. In the folder list at the top, pick Simple Signature.
An icon with the tip Managed - Installed marks the templates of the app.
Click Edit HTML Version.
The page says that you may only edit certain attributes of a managed template. The Subject is one of them.
Change the Subject and the text. Click Save.
Change the words around the button. Do not change the Sign Online button. It holds hidden values that open the right Signature.
Leave in place every merge field near the button. They start with
{!Signature__c.. Simple Signature needs them, for example to record when the signer opens the email.The request email carries the PDF to sign. Say so in the text.
Go back to Classic Email Templates. Click SignatureReturn.
Click Edit HTML Version. Change the Subject and the text. Click Save.
The Subject starts as
Your Signed Form: {!signature__Signature__c.signature__RequestedForm__c}. The part in braces puts in the Requested Form of the Signature. When that field is empty, the Subject ends after the colon. To fill it, add a predefined value for Requested Form to the action, for example"Release Form".Send a test request. Check both emails.
Follow steps 6 to 9 of Send a signature request.
The Email Templates tab of the Configure page
The tab lists these templates and others. For EmailSignature and SignatureReturn, Go to Edit opens a page that says you can't edit a template from a managed package. Use Classic Email Templates, as above. In TAF's test, a change to the Signature Request row did not change the request email.
19More request options Paid
Paid version only. These steps do not count in the setup progress.
These options serve special cases. Read them, and set up only what your process needs.
Request settings on the Configuration tab
| Option | What it does |
|---|---|
| Run PDF Automation on Save | Makes the PDF when the form is signed. |
| Attach PDF After Signature | Saves the PDF on the Signature record. |
| Attach PDF on Parent Record After signature | Saves the PDF on the parent record of the Signature. |
| Attach PDF on Contact Record If Not Parent | Also saves the PDF on the Contact of the Signature, when the Contact is not the parent. |
| Email PDF to Contact After Signature | Emails the PDF to the signer. |
| Use Files instead of Attachments | Saves the signature pictures and the PDFs in Files, not in Notes & Attachments. Salesforce then shows the files in both lists. |
| Turn Off Emails | Stops all emails, except to the addresses and domains on the Whitelist. When it is off, all emails go, except to the Blacklist. |
| Blacklist and Whitelist Emails/Domains | The addresses or domains for Turn Off Emails. |
| Default Signature Request Send Email (Uses Org-Wide Email) | One address that sends the requests and the signed PDFs. See the next section. |
| CC Record Owner When Emailing Signed PDF | Copies the user who made the request on the email with the signed PDF. |
| CC Record Owner's Role Hierarchy When Emailing Signed PDF | Also copies the manager of that user, the manager's manager, and so on. |
| CC Other Email Address When Emailing Signed PDF | Copies one fixed address. |
| BCC Record Owner's Email to Salesforce When Emailing Signed PDF | Logs the email in the activity history, when the user has Email to Salesforce on. |
| Send Email to Partner, Partner Email Address | Only with TAF support, for orgs where TAF hosts the requests, for example Professional Edition. |
The Attach and Email options are defaults. The fields Attach PDF?, Attach PDF to Parent? and Email PDF? on a Signature record change them for that record.
The sender of the emails
The request email comes from the user who sends the request. The email with the signed PDF comes from the user who authorized the site. To send both from a known address, use one of these ways.
- Type one address in Default Signature Request Send Email on the Configuration tab. The address must be a verified Organization-Wide Email Address.
- Or make a verified Organization-Wide Email Address for each user who sends requests. Both emails then come from that user. For a user with no such address, Simple Signature uses the default address, then the user who authorized the site.
To add an address, open Setup and type Organization-Wide Addresses in the Quick Find box. Salesforce sends a verification email to the new address.
If an email comes from an address that ends in sfcustomeremail.com, Salesforce could not send it from the user's own address. This happens when your email domain is not set up for email from Salesforce. A verified Organization-Wide Email Address, and the email authentication in the next section, fix it.
Emails that look like spam
Email programs can mark Salesforce email from your domain as unsafe, with a warning such as Be careful with this message. To stop this, your email admin must let Salesforce send email for your domain. This setup is called email authentication, for example SPF and DKIM. Ask your Salesforce partner, or open a case and TAF points you to help.
Request parameters for an experience
A signature experience can send requests too. Add these parameters to the experience. See Build a signature experience.
| Parameter | What it does |
|---|---|
allowrequest | Adds a button to the form that sends a signature request. Pick In-Person Signature, Signature Request Only, or Signature Request and In-Person Signature. |
embedpdf | Shows the PDF above the form, so the signer can read it before the signature. |
generateqrcode | Makes a QR code for the request and shows it in the window. The signer scans it with a phone to open the signing page. |
multistep | Makes a Step record with the request. See More than one signer. |
emailtemplaterequest | The Name, not the label, of the email template for the request. |
emailtemplatecompletion | The Name of the email template for the email with the signed PDF. |
nosignature | Lets the signer submit the form with no signature. |
rurl | The page on the site that opens after the signature, for example a thank-you page. |
requestedpdfname | The file name of the signed PDF. It can hold fields, for example {!Contact.Name}_Release. |
A form in a Lightning component does not work offline in the Salesforce mobile app. An action does.
More than one signer
A request can collect signatures from several people, one after the other or at the same time. Each signer gets a Step record, a child of the Signature.
Turn on MultiStep for the request.
On an action or in a Flow, set the field
signature__MultipleSteps__cto True. In an experience, tick the parametermultistep.Check the first Step.
Simple Signature makes the first Step record, with Order 1, when it makes the Signature. Requests with steps use the email template ESignMutliContact, not the regular request template. The name has this typo on screen.
Build a Flow that makes the other Steps.
Start the Flow when a Step record with Order 1 is made. Make one Step record for each other signer, with these fields.
Field Value First Name The first name of the signer. The email can show it. Last Name The last name of the signer. Email The address that gets the request. Order 2, 3, 4 and so on. The order of the requests. Email Template The unique name of an email template, if you do not use ESignMutliContact. Then also set emailtemplatecompletion in the experience. Status RequestedWait On Prior Step True sends the request only after the step before it is Signed. False sends it at the same time. Save the Flow. Activate it.
Copy the signatures to the Signature record, if the PDF shows them.
When all Steps are Signed, the Status of the Signature changes to Signed, and Simple Signature makes the PDF. Step 1 copies its date and its signature to the Signature. For the other steps, make your own fields on ß Signature, for example a Rich Text field SignatureImage2__c, a field SignatureDate2__c and a field SignatureName2__c.
Then build a Flow on Step. Start it when the Status of a Step with Order 2 changes to Signed. Copy these values. Do the same for Order 3 and higher.
Signature field Value from the Step SignatureImage2__c signature__SignatureImage__cSignatureDate2__c signature__Signed__cSignatureName2__c signature__Firstname__c, a space andsignature__LastName__cA developer can also read the signatures from the Steps in Apex code for a Visualforce PDF.
Check who signed
People question electronic signatures more often than paper ones. These fields help you check that the right person signed. They cannot prove it.
| Field | What it does |
|---|---|
| Signature MFA | A code that the signer must type before the form shows. Fill it in with a Flow or a trigger. Give the code to the signer another way, for example by phone. |
| Expiration Date | A date in the future. After it, the request is no longer valid. |
| Digital Fingerprint | A 32-character value for the device of the signer, saved at the signature. Two signatures with the same value came from the same device. The component fingerPrintInformation shows the details on a Signature page. |
| Actual Signed IP, Actual Signed IP Info | The IP address of the signer, and its location when Simple Signature can find it. |
| Actual Signed Location | The latitude and longitude of the signer, when the device gives them. |
These formulas make the values easier to read. Make each one as a Text formula field on ß Signature.
A link to the details of the IP address
if ( not ( isblank ( signature__IPWhenSigned__c ) ), signature__IPWhenSigned__c & " " &
HYPERLINK("https://ipapi.co/"+signature__IPWhenSigned__c+"/json/", "info","_blank"), "" )A link to a map of the location
if ( not ( isblank ( signature__ActualSignedLocation__Latitude__s ) ),
text( signature__ActualSignedLocation__Latitude__s )+" "+text(
signature__ActualSignedLocation__Longitude__s ) + " " +
HYPERLINK("http://www.google.com/maps/place/"+text(
signature__ActualSignedLocation__Latitude__s )+","+text(
signature__ActualSignedLocation__Longitude__s ), "map","_blank"), "" )The time from the request email to the signature
if( if( isblank ( signature__ActualSignedTimestamp__c ), Now(),
signature__ActualSignedTimestamp__c ) - if ( isblank ( signature__Emailed__c ),
CreatedDate, signature__Emailed__c ) > 0 , "D:"
& TEXT( FLOOR( if ( isblank ( signature__ActualSignedTimestamp__c ), Now(),
signature__ActualSignedTimestamp__c ) - if ( isblank ( signature__Emailed__c ),
CreatedDate, signature__Emailed__c ) ) ) & " H:"
& RIGHT( "0" & TEXT( FLOOR( MOD( ( if ( isblank ( signature__ActualSignedTimestamp__c ),
Now(), signature__ActualSignedTimestamp__c ) - if ( isblank ( signature__Emailed__c ),
CreatedDate, signature__Emailed__c ) ) * 24, 24 ) ) ),2) & " M:"
& RIGHT( "0" & TEXT( ROUND( MOD( ( if ( isblank ( signature__ActualSignedTimestamp__c ),
Now(), signature__ActualSignedTimestamp__c ) - if ( isblank ( signature__Emailed__c ),
CreatedDate, signature__Emailed__c ) ) * 24 * 60, 60 ), 0 ) ),2), "")The last formula shows days, hours and minutes, for example D:0 H:02 M:15. A blank or strange value needs a check. You can change it to count only days or hours, and then set a limit on the time to sign.
Hide the record ID in the link
The request link holds the ID of the Signature record. A signer who changes the ID could open another request, if the site shares too much. To hide the ID, Simple Signature can put a random 32-character path in the link.
Copy the body of your request email.
On the Email Templates tab, click View beside the request template you use, EmailSignature at first. Select the whole body, with the button. Copy it. Close the window.
Click New. Fill in the template. Paste the body. Click Save.
Fill in Label, Name and Subject. Description is optional. Tick Active. Keep the Name for step 5. Expand HTML Body. Paste the body. Click Save.
Change the link in the code of the new template.
Click Edit beside the new template. Expand HTML Body. Click the code button
</>. Find the two links of the button,data-cke-saved-hrefandhref. Replace the value inside the quote marks of both with this text. Remove any fixed web address in front of it.{!signature__Signature__c.signature__SiteURL__c}/{!signature__Signature__c.signature__Signature_Path__c}Click Save.
Check that the site uses signatureURLRewriter.
You set it in step 2 of Set up the signature site.
Make the request use the new template.
Open the Request Signature action. Under Predefined Field Values, click New. Pick Email Template (Request). Type the Name of the new template in quote marks, for example
"Secure_Request". Click Save.For an experience, use the parameter
emailtemplaterequest.Send a test request.
The link in the email now ends with a random path, not with
?id=and the record ID.
Countersignature
A user can save a signature once. Simple Signature then adds it to the PDF after the signer signs, as a countersignature.
Make a Files library named Simple Signature.
In the App Launcher, type Files. Click Files. Click Libraries. If no library named Simple Signature exists, click New Library. Type
Simple Signature. Click Save.Add the users who countersign to the library.
Open the library. Click Manage Members. Add the users. For many users, add a public group.
Each user saves a signature on the User Signature page.
In the App Launcher, the user types User Signature, opens it and signs.
Add the countersignature to the PDF template.
In a Google Docs template, use the merge code
<ß>User.LibrarySignature-300</ß>. See Merge codes for Google Docs.
Experience Cloud users need the permission Access Libraries for User Signature. It is off at first.
Your own signing page
The standard page SiteSignature serves most orgs. To change more than a few fields, a developer can start from a copy of it.
- Open Setup. In the Quick Find box, type Visualforce Pages. Click New. Type a Label and a Name. Delete the code in the page.
- Copy the code of Custom_SiteSignature from the pages folder of the sample code on GitHub, from
<apex:pageto</apex:page>. Paste it. Click Save. - In the list of Visualforce pages, click Security beside the new page. Give access to the profiles that use Simple Signature. Click Save.
- Edit your signature site. In Active Site Home Page, pick the new page. Click Save.
TAF can write the page for you at its hourly rate. Open a case.
20Check two Salesforce settings for PDF documents Paid
Paid version only. These steps do not count in the setup progress.
PDF documents need two Salesforce settings. Each one changes the whole org. Ask the admin who looks after security settings before you change them.
Untick Adopt updated CSP directives.
Open Setup. In the Quick Find box, type Session Settings. Click Session Settings. Untick Adopt updated CSP directives. Click Save.
Reload the page. Check that the box stays unticked. If it is ticked again, untick it and save again.
With it ticked, some browsers cannot edit or preview Google Docs templates inside Salesforce.
Set .pdf files to Execute in Browser.
Open Setup. In the Quick Find box, type File Upload and Download Security. Click it. Click Edit. In the row for .pdf, set the download behavior to Execute in Browser. Click Save.
The signing page can then show the PDF to sign. With another value, the browser downloads the PDF.
21Make a PDF template in Google Docs Paid
Paid version only. These steps do not count in the setup progress.
A Google Docs template is a Google document with merge codes in it. Simple Signature fills in the Salesforce data and the signature, and saves the result as a PDF. TAF advises Google Docs for most orgs. A free Google account works too.
Use a standard Salesforce user
A user with a Salesforce Platform license cannot connect Simple Signature to Google.
Switch to Salesforce Classic. Open the Configure page.
Click your profile picture at the top right. Click Switch to Salesforce Classic. Click Setup. In the Quick Find box, type Installed Packages. Click Configure beside ß Simple Signature.
The Google connection works only in Classic, the same as the site authorization.
Click the Google Docs Configuration tab. Add the remote sites, if the tab asks for them.
If a message lists remote sites, add each one in Remote Site Settings, the same way as step 5 of Connect the site.
Open Google APP. Check the setting.
Under Template Configuration, click Google APP to open it. Native is ticked and Web Configuration is not. This is the setting at first. Change nothing.
Click Authenticate. Sign in to Google. Paste the code. Click Submit.
Under Authorize Google, click Authenticate. Sign in to the Google account that keeps your templates. Accept the permissions. Google then shows a code. Copy it.
Back in Salesforce, paste the code into Authorization Code. Click Submit.
The section then shows a Revoke button. The connection works. Do not click Revoke now. Click it only to connect again, for example in a sandbox. See step 8 of Set up a sandbox made from production.

Switch back to Lightning Experience. Open ß Templates. Click New.
In the App Launcher, type
Templates. Click ß Templates.Pick Google Docs. Click Next. Pick Create New Template. Click Next.
The two screens are Document Platform and Choose Template.
Fill in the template as below. Then click Save.
Field Value Name Any name. Simple Signature does not use it in code. Google Id Leave it empty. To start from a Google document you have, paste its ID from its web address. Copy Template A + button. Leave it as it is. Use it only with a Google Id. Object Name Pick ß Signature. For a document that nobody signs, pick another object. User Permission Type Pick Any one with link. Other Salesforce users can then use the template. Action Permission Type Pick writer. Other Salesforce users can then edit it. Pick another value to keep the editing to yourself. 
Click Edit Google Doc. Write the document.
Google Docs opens inside the Salesforce page. Write the text, and add tables and pictures as you need.
Simple Signature cannot merge a Microsoft Word file. To use one, open it in Google Docs. Click File, then Save as Google Docs.
Add Salesforce data with merge codes.
Click Show Fields. Browse to a field or a related list. Copy its merge code. Paste it into the document. Other buttons add the signature image and a time stamp of the merge.
Show Fields keeps your last search. Clear the search box before you look for the next field. If a window is wider than the screen, zoom the browser out to reach its buttons.
See Merge codes for Google Docs below.

Copy the ID of the template. Add it to your request.
Click Back. Copy the ID of the template from the address bar of the browser. It has 18 characters, for example
a0Qhm000001oVZVEA2.For an experience, add the parameter
templateswith the ID as its value. For the Request Signature action, add a predefined value for Templates. Type the ID in quote marks. See step 4 of Send a signature request.Pick Templates in the Field Name list with the mouse. The Enter key there saves the form, with an error.
Several templates can go in one value, with commas between their IDs.
Send a test request. Open the signed PDF.
Follow steps 6 to 9 of Send a signature request. The request email carries the PDF to sign.
After the signature, open the signed PDF in Notes & Attachments of the Signature or of the Lead. It has the Name of the template. It shows your data and the signature.

Merge codes for Google Docs
Start with a merge code from Show Fields. Then add options and filters as below. A merge code starts with <ß> and ends with </ß>.
| What it shows | Merge code |
|---|---|
| The first name of the signer | <ß>signature__Name__c</ß> |
| The last name of the signer | <ß>signature__Name_2__c</ß> |
| The email of the signer | <ß>signature__Email__c</ß> |
| The signature image, 300 pixels wide | <ß>signature__Signature__c-300</ß> |
| The signature image, only when the Status is Signed | <ß>signature__Signature__c-300%<signature__Signature__c><signature__Status__c><Signed></ß> |
| The countersignature of the user | <ß>User.LibrarySignature-300</ß> |
| The countersignature, only when the Status is Signed | <ß>User.LibrarySignature-300%<signature__Signature__c><signature__Status__c><Signed></ß> |
| A signature from a Rich Text field on the user | <ß>User.User_Signature__c-300%<User><IsActive><true></ß> |
| The signature date, United States format | <ß>signature__Date__c-<en-US></ß> |
| The signature date, India format | <ß>signature__Date__c-<hi-IN></ß> |
| 5 days after today, United States format | <ß>system.today<day#5><en-US></ß> |
| 5 days before today, India format | <ß>system.today<day-5><hi-IN></ß> |
| 6 days after now, with the time, United States format | <ß>system.now<day#6><en-US></ß> |
| The signature date, only when the First Name is Testing | <ß>signature__Date__c-<en-US>%<signature__Signature__c><signature__Name__c><Testing></ß> |
A filter follows the % sign: the object, the field and the value, each in angle brackets.
Dates, numbers and money
Show Fields adds format tags to date, money, number and location fields: -<LOCALE><CURRENCY>. With more than one tag, put the format tags first, then the filter tags, then the sort tags. Only the first tag starts with a dash. For example:
<ß>signature__Opportunity__r.OpportunityLineItems.TotalPrice-<en-US><USD><#FIL-DEC-3600><#SORT-UP></ß>
To show all the decimals of a number, put a format just before </ß>, for example:
<ß>signature__ActualSignedLocation__Latitude__s-<en-US>#0.00000000#</ß>
Lists of related records
A template can list child records, for example the products of an Opportunity. Show Fields offers two ways. The related list itself gives a table with no format and no filter. TAF does not advise it. Use the second way:
- In Show Fields, click the object name with the > sign, for example Opportunity >. The list shows the merge codes of its fields.
- In Google Docs, click Insert, then Table. Make a table two rows high, with a column for each field.
- Type the column titles in the first row. Paste a merge code into each cell of the second row.
To sort the table, add a sort tag at the end of one cell, once per table: -<#SORT-UP> or -<#SORT-DOWN>. The dash goes in only when it is the first tag in the cell.
To filter the table, add a filter tag at the end of one cell: -<#FIL-TYPE-OPERATOR-VALUE>. TYPE is DEC for decimal numbers, INT for whole numbers, BOL for checkboxes, STR for text, DT for dates or DTT for date and time. VALUE is optional. Without it, the filter compares with a blank value. For dates, TODAY and YESTERDAY also work.
| Operator | Meaning | Works with | Example |
|---|---|---|---|
| EQ | equal | checkbox, text, date, number | <#FIL-STR-EQ-Sample> |
| NEQ | not equal | checkbox, text, date, number | <#FIL-STR-NEQ-Sample> |
| GR | greater than | text, date, number | <#FIL-DEC-GR-100> |
| LS | less than | text, date, number | <#FIL-DEC-LS-100> |
| GREQ | greater than or equal | text, date, number | <#FIL-DEC-GREQ-100> |
| LSEQ | less than or equal | text, date, number | <#FIL-DEC-LSEQ-100> |
| STWH | starts with | text | <#FIL-STR-STWH-Sample> |
| ENWH | ends with | text | <#FIL-STR-ENWH-Sample> |
| CTNS | contains | text | <#FIL-STR-CTNS-Sample> |
Sections that show or hide
A checkbox field can show or hide a part of the document. Put a start tag before the part, with the checkbox field. When the field is True, the part shows. Put an end tag after the part.
<ß>CONDITIONSTART<Display__c><true></ß>
<ß>CONDITIONEND</ß>
Document parameters for an experience
Add these parameters to a signature experience. See Build a signature experience.
| Parameter | What it does |
|---|---|
templates | The ID of one or more templates, with commas between them. Simple Signature makes the PDF from them, before and after the signature. |
pdftemplate | The name of a Visualforce PDF page, with c__ in front. |
attachpdf | Saves the PDF on the Signature record. |
attachpdftoparent | Saves the PDF on the parent record. |
emailpdf | Emails the PDF to the Contact of the Signature. |
embedpdf | Shows the PDF above the form, so the signer can read it first. |
requestedpdfname | The file name of the PDF. It can hold fields, for example {!Contact.Name}_Release. |
requestedpdfnamepreview | Also names the preview PDF in the request email, with _Preview at the end. Google Docs only. |
deletesigantureafter | Deletes the picture of the signature after Simple Signature makes the PDF. The parameter name has this typo. |
22Make a PDF page in Visualforce Paid
Paid version only. These steps do not count in the setup progress.
Use a Visualforce page if you do not use Google Docs. Most Visualforce pages need a developer, because each design is different. TAF builds pages at its hourly rate. Email [email protected].
The pages folder of the sample code on GitHub holds these pages to start from, among others. Their file names end in .html, but they hold Visualforce code.
| Page | What it is |
|---|---|
| SamplePDF_v2 | A copy of the standard PDF page of Simple Signature, BasicSignaturePDF. Change the logo and the layout as you need. |
| SampleAgreementPDF | A simple PDF laid out like a legal document, for example a non-disclosure agreement. |
| SampleOpportunityPDF | A quote from an Opportunity, with its product lines. It needs an Apex controller. See below. |
| SampleOpportunityPDF_noController | The same quote, with no controller. |
| SampleQuotePDF | A quote from a Quote, with its lines. It needs an Apex controller. See below. |
| CustomEmbeddedSignature | Not a PDF. A page for the Signature page layout, in place of the standard one. |
| CustomSignature_hardcoded | Not a PDF. A signing page for in-person signatures inside Salesforce. |
| Custom_SiteSignature | Not a PDF. A signing page for requests on the site. See Your own signing page. |
Open Visualforce Pages. Click New.
Open Setup. In the Quick Find box, type Visualforce Pages. Click Visualforce Pages. If you see no New button, ask your admin for the right to make pages.
Type a Label and a Name. Delete the code in the page.
For example, Label
Signature PDFand NameSignature_PDF. The Name can fill in by itself, with spaces. A Name takes no spaces, so type an underscore in place of each one.Paste the code of a sample page. Click Save.
On GitHub, open the page in the pages folder, for example SamplePDF_v2. Click Raw to see the code without the line numbers. Copy all the code, from
<apex:pageto</apex:page>. Paste it into Visualforce Markup.Give the profiles access to the page.
In the list of Visualforce pages, click Security beside the new page. Add all the profiles, or at least the profiles of the users who work with Simple Signature. Click Save.
Make Simple Signature use the page.
Use the page name with
c__in front, for examplec__Signature_PDF. Withoutc__, Simple Signature cannot find the page.For Where to put it All signatures Template VisualForce Page for PDF on the Configuration tab. See step 4 of Connect the site. One experience The parameter pdftemplate. See Document parameters for an experience.One request action A predefined value for PDF Template, in quote marks. Send a test request. Open the signed PDF.
Follow steps 6 to 9 of Send a signature request. The signed PDF in Notes & Attachments of the Signature now uses your page.
If no signed PDF comes, see The signer signed, but no PDF comes.

The Opportunity and Quote samples
These two samples need an Apex class, so make them in a sandbox and deploy them to production. Production does not let you write Apex directly.
- Open Setup. In the Quick Find box, type Static Resources. Click New. Name it
sampleinvoice. Pick the file SampleInvoice.zip from the resources folder on GitHub. Set Cache Control to Public. Click Save. - Open Apex Classes. Click New. Paste the code of SampleOpportunityPDFController or SampleQuotePDFController from the classes folder on GitHub. Click Save.
- Make one more class with the matching test class from the same folder. Salesforce needs it for the deploy to production.
- Make the page as in steps 1 to 5 above, with the code of SampleOpportunityPDF or SampleQuotePDF.
Other document apps
Simple Signature can also work with a document app such as Salesforce CPQ, S-Docs, Conga Composer or Nintex DocGen. This way needs a lot of technical work, so TAF advises Google Docs. Open a case if you need help.
If the app reads values from one object only, copy the signature to that object:
- On that object, make a Rich Text Area field
SignatureImage__cand a checkbox fieldSigned__c. - On ß Signature, make a lookup field to that object, if none exists.
- Build a Flow on ß Signature. When the Status changes to Signed, copy the Signature field, and the Date field if you need it, to the object.
- Put the new image field into the template of your document app.
A person who knows your document app then does the rest:
- Build a trigger that makes a Signature request from each new document. Start from CreateSignatureOnAttachments or CreateSignatureOnFile in the triggers folder on GitHub. Both expect a parent object named Quote__c. Change it to yours.
- When the Signature is Signed, make the document again, with a Flow or a trigger. The new document holds the signature.
23Show the PDF in a Flow before the signature Paid
Paid version only. These steps do not count in the setup progress.
This screen Flow makes the Signature first. It waits for the PDF from a Google Docs template and shows it. Then it shows the form. The example starts from a Lead.
Before you start
Make a Google Docs template. Then add the parameter templates with its ID to the experience that this Flow uses. See Make a PDF template in Google Docs.
Make a new Screen Flow.
Do it the same way as in step 1 of Take signatures in a Flow.
Make a variable named recordId.
Click the Toolbox icon. Click Manager, then New Resource. Pick Variable. In API Name, type
recordId, with exactly this case. Pick Text as the Data Type. Tick Available for input and Available for output. Click Done.Add a Get Records element for the Lead.
Click the + on the line. Click Get Records. Type a Label. Pick Lead as the object. Add one filter: Lead ID Equals
recordId. Leave the other settings as they are.Add a screen that tells the user what happens.
Add a Screen. Type a Label. Drag Display Text onto it. Type an API Name for it, for example
IntroText. Type the text, for exampleWe are making your document. Then you can read it and sign.Add a Create Records element for the Signature.
Type a Label. Pick Manually for how to set the field values. It starts on another choice. Pick ß Signature as the object. A search for Signature can show other objects first. Click Add Field for each row:
Field Value Lead The variable recordId.Experience ID Your Experience ID. First Name, Last Name, Email The matching Lead fields, from the Get Records element. Attach PDF? {!$GlobalConstant.True}Embed PDF? {!$GlobalConstant.True}Status Requested Templates The ID of your template, the same as in the experience. Send Type None To also save the PDF on the Lead and email it, add Attach PDF to Parent? and Email PDF? with
{!$GlobalConstant.True}.Add a screen with Simple Signature Wait.
Add a Screen. Type a Label. Drag Simple Signature Wait onto it. Fill in its settings:
Setting Value API Name A name, for example WaitPreview.Signature Id Pick the Create Records element, then Record ID. Step Id Leave it empty. It serves signatures with steps. Type Preview. Final waits for the signed PDF instead.Add a screen with Simple Signature Preview. This step is optional.
Add a Screen. Drag Simple Signature Preview onto it. In FileId, pick the Wait element, then fileId. Click Done.
Add a screen with Simple Signature Form.
Add a Screen. Open Configure Footer and untick Show Footer. Drag Simple Signature Form onto it. Fill in its settings:
Setting Value Experience ID Your Experience ID. Parent ID The variable recordId.Other Parameters Type id=and the ID of the record from the Create Records element, for exampleid={!Create_Signature.Id}. Without it, the Flow makes a second Signature.Style Optional. To show the PDF above the form, add
&showattachmentid=and the fileId of the Wait element, for exampleid={!Create_Signature.Id}&showattachmentid={!WaitPreview.fileId}.Show the signed PDF too, if you want.
Repeat steps 6 and 7 after the form, with
Finalas the Type.Make a Flow action on Lead. Add it to the page layout.
Open Object Manager. Click Lead, then Buttons, Links, and Actions. Click New Action. Pick Flow as the Action Type. Pick your Flow. Type a Label. Click Save.
Add the action to the Lead page layout, the same way as in step 5 of Send a signature request.
Open a test Lead. Start the Flow from the action.
The Flow does not run from Flow Builder. Start it from a Lead in Lightning Experience.
The Flow makes the Signature and waits for the PDF. A spinner shows while it waits, for up to a minute. Then the PDF shows. Click Next. If the first click only zooms the PDF, click Next again.
With Require eSignature Agreement on, the agreement window opens before the form.

24Send reminders and clean up old requests Paid
Paid version only. These steps do not count in the setup progress.
Maintenance rules act on old signature requests on a schedule. One scheduled job runs all the rules each time.
| Type | What it does |
|---|---|
| Re-request | Sends the request again, the same as a new request. Any progress is lost, for example a click on the Sign Online button. |
| Notification | Sends a reminder. The Status does not change. |
| Deletion | Deletes the Signature records. Use it for old requests that nobody signed, or for signed requests you no longer need. |
| Clean Up | Deletes the records that a Signature no longer needs: process records, preview PDFs in Files, and private values such as a password. |
Check every rule before you schedule the job
The job can email many signers at once, or delete records that you cannot get back. TAF advises that its support team checks your rules the first time. Open a case.
Open the Configure page. Click the Maintenance tab.
Open it the same way as in step 2 of Turn on the paid version.
Click New Maintenance Rule. Fill in the rule as below.
Field Value Name A name that says what the rule does, for example Reminder after 3 days.Type Deletion, Clean Up, Re-request or Notification. See the table above. Status The rule acts only on Signatures with this Status: Requested, Emailed, Viewed, Clicked, Approved or Signed. For more than one Status, make one rule for each. Deletion and Clean Up mostly use Signed. The other types use earlier statuses. Days The rule acts on a Signature that stays in that Status for more than this number of days. For example, with Status Emailed and 3 Days, the rule acts on day 4 on each request that nobody viewed, clicked or signed. With 0, it acts from the next day. Request Form Optional. Pick a value of Requested Form from the list. The rule then acts only on those Signatures. Use it when you have more than one request process. Email Template Only Re-request and Notification use it. Pick the email template to send. The list holds every email template in the org. Leave it empty to send the standard request email. CC Record Owner Only Re-request and Notification use it. Copies the owner of the Signature, mostly the user who made the request. CC Record Owner's Role Hierarchy Only Re-request and Notification use it. Also copies the managers above the owner, maybe several levels up. Use it with care. BCC Record Owner's Email to Salesforce Only Re-request and Notification use it. Logs the email on the record. The owner must first set up My Email to Salesforce, under My Settings, then Email. Under Type, the window shows a Maintenance Rule Description. It fills in by itself, for example Includes all Signatures in emailed Status more than 3 days since Emailed. Read it to check the rule.

Click Save. Make the other rules you need.
The window closes with no message. The Maintenance tab lists each rule with its Name, Days, Type and Status, and the links Edit and Delete.
Open Apex Classes. Click Schedule Apex.
Open Setup. In the Quick Find box, type Apex Classes. Click Apex Classes. Click Schedule Apex.
Fill in the job. Click Save.
Type a Job Name, for example
Simple Signature Maintenance. In Apex Class, typeSignatureCleanupScheduler, or pick it with the lookup icon.To run the job every day, leave Weekly on and tick every day. End starts one month ahead. The job stops after that date, so set it far ahead. Pick Preferred Start Time with the mouse. The Enter key in that list saves the form.

Check the job.
Open Setup. In the Quick Find box, type Scheduled Jobs. The list shows your job and its next run.
25Print a backup of all signatures Paid
Paid version only. These steps do not count in the setup progress.
The Signature Report makes one PDF, with each signature on its own page. Use it as a backup. It is basic, and it is not made for clients.
Open the Signature Report.
Click the App Launcher at the top left. Type Signature Report. Under Items, click ß Signature Report.
Set the Report Options. Click Run Report.
Option What it does Start Date, End Date The dates of the Signatures to put in the PDF. Requested Form Optional. Only Signatures with this Requested Form. Only Completed Signatures Only signed forms. On at first. Include Legal Text Adds the legal text of each form. On at first. Include Chatter, Include Images, Stretch Images Add more to each page. Off at first. Click Run Report. The PDF opens in a new tab, with one signature on each page.

26Set up a sandbox made from production Paid
Paid version only. These steps do not count in the setup progress.
A sandbox made or refreshed from production holds most of the setup of Simple Signature. Do the steps below there. In a sandbox where you install Simple Signature yourself, follow the whole guide instead.
Switch to Salesforce Classic.
Some of these steps can fail in Lightning. See step 9 of Connect the site.
Copy the address of the signature site.
Open Setup. In the Quick Find box, type Sites. Click Sites. Click the Site URL of your signature site. The site opens in a new tab. Copy its address.
Paste it into Site URL for Signature Requests.
Open the Configure page. Click the Configuration tab. Paste the address into Site URL for Signature Requests. End it with a slash.
Decide about Turn Off Emails.
A sandbox can hold the email addresses of real customers, mostly a Full or Partial Copy sandbox. Then keep Turn Off Emails ticked, and put your own test addresses on the Whitelist. Emails then go to those addresses only.
To add an address, click Blacklist and Whitelist Emails/Domains. Type a Name and the address in Entry. Pick Whitelist as the Type. Click Add.
Untick Turn Off Emails only when the sandbox must send all emails, and it holds no real address. Maintenance rules and large tests can send many emails.
Click Save Settings.
Click the Site Configuration tab. Add the remote site it asks for.
The tab can show a message about the remote site settings, with an address under To Enable Site Access. Copy that address. Add it as a new remote site, as in step 5 of Connect the site. Tick Active.
Authorize the site again.
Do it as in Authorize the connection again. Salesforce can ask you to sign in to the sandbox again. If it fails, see Authorize does not work.
Connect Google Docs again, if you use it.
Click the Google Docs Configuration tab. Click Revoke. A window asks you to sign in to Google. Pick the account that owns your template documents. Accept the permissions. Copy the code. Paste it into Authorization Code. Click Submit.
The tab shows no message after this. The Revoke button shows again.
Make the templates again, in a Developer sandbox.
A Developer or Developer Pro sandbox has no data from production, so it has no ß Templates. A Full or Partial Copy sandbox has them. Skip this step there.
Do this step in Lightning Experience. In Classic, New opens a plain form with no Google Docs choice. For each template in production:
- In production, open the template. Copy its Google Doc Id.
- In the sandbox, open ß Templates. Click New. Pick Google Docs. Click Next. Pick Create New Template. Click Next.
- Paste the Google Id. Fill in the other fields the same as in production. Leave Copy Template as it is. Click Save.
- Copy the ID of the new template from the address bar. Put it in place of the production ID in your actions and experiences. See step 10 of Make a PDF template in Google Docs.
Both orgs then use the same Google document. A change that you make from the sandbox also changes the PDF in production.
Set the email Access level to All email.
Open Setup. In the Quick Find box, type Deliverability. Set Access level to All email. Click Save. A new sandbox starts with System email only.
27Move your setup from a sandbox to production Paid
Paid version only. These steps do not count in the setup progress.
A change set cannot carry most of the setup of Simple Signature. Do these steps in production by hand.
Install Simple Signature in production.
Install it from the AppExchange, as in Install Simple Signature. TAF support can also send you an install link.
Check that both orgs run the same version.
The version shows at the bottom right of the Configure page, and in Installed Packages. If the versions differ, ask TAF support to push the new version to production, or for a link to do it yourself. See Update Simple Signature.
Turn on the paid version in production.
Each org needs its own Upgrade Key. See Turn on the paid version.
Set up the signature site and its connection, if you use requests.
Do Set up the signature site and Connect the site to Simple Signature in production.
Connect Google Docs, if you use it.
Do steps 1 to 4 of Make a PDF template in Google Docs in production.
Set the Configuration tab the same as in the sandbox.
Type each value again. Click Save Settings. Only Site URL for Signature Requests is different: use the address of the production site.
Move the experiences with Export and Import.
In the sandbox, open the Experiences tab. Click Export. The browser downloads
Experience.csv, with all your experiences.In production, open the Experiences tab. Click Import. Under Upload Files, pick the file. Click Upload. The window shows the columns of the file. For each column, pick the matching Field and a Field Type: Experience for Experience Name and Description, Parameter for the others. Click Save.
Then check each experience:
- Each experience gets a new Experience ID in production. Change it everywhere you typed it, for example in the Sign button component, on record pages and in Flows.
- Import does not keep values with commas. Check the parameters
fieldreadonly,hideblankfields,templatesandsubmissiontype. Type their values again.
If the import fails, see Import of experiences fails.
Move your own changes.
Make them again in production, or deploy them with a change set: your own fields, Visualforce pages, Lightning components, actions and Flows. TAF support can help with the deploy.
28If something does not work
The form shows an error when it opens
Check that Lightning Web Security is on. See Check one Salesforce setting.
No Sign button on the record
Check that Sign sits in the actions of the page layout. See step 5 of Add the Sign button. Also check that the user has Simple Signature (User) or Simple Signature (Admin).
If the record page uses Dynamic Actions, the page layout does not decide its buttons. Open the page in the Lightning App Builder, click the highlights panel at the top, and add Sign there.
The form shows the title Salesforce.com, Inc. Release Form
The user works in a language with no override. Add one for that language. See step 5 of Set the wording.
The form ignores your experience
Check the Experience ID in the component, the record page or the Flow. Copy it again from the Experiences tab. Make sure no space sits inside the quote marks. Also check that the org runs the paid version: the Configure page shows the Experiences tab. See Turn on the paid version.
The signer sees Site Configuration not done
The full message reads Site Configuration not done.Please ask Admin to Authorize. The connection stopped. Authorize it again. See Authorize the connection again.
The signing link shows Authorization Required
The guest user of the site lost its permission set. Assign Simple Signature (Guest) again. See step 5 of Set up the signature site.
Authorize does not work
First check three things. You work in Salesforce Classic. You clicked Save Settings just before. Your user has Simple Signature (Admin). Then find what you see below.
| What you see | What to do |
|---|---|
| login.salesforce.com refused to connect | You are in Lightning. Switch to Salesforce Classic. Click Authorize again. |
| Invalid Code Verifier | Click Save Settings on the Site Configuration tab. Then click Authorize again, in Classic. |
| A blank page after you sign in, and no date above the button | Make a new External Client App. Paste its key and secret. Click Save Settings. Click Authorize again. |
| Salesforce logs you out | Log out of Salesforce. A reload is not enough. Log in again as the admin. Click Authorize again. |
| Nothing happens | Click Authorize a second time. |
| You cannot untick PKCE | Leave it ticked. Simple Signature works with it. |
Insufficient Privileges on the External Client App
Some orgs cannot use External Client Apps yet. Open a case with Salesforce support. Ask them to turn on External Client Apps in your org.
The signer signed, but no PDF comes
The Status reads Signed, but PDF Attached and PDF Emailed stay empty. Check these points.
- Run PDF Automation on Save is on. See step 3 of Connect the site.
- A page of your own in Template VisualForce Page for PDF has
c__in front of its name. See step 4. - Open Setup and type Apex Jobs in the Quick Find box. Find the failed job of Simple Signature and read its error.
The error PDF generation failed. Check the page markup is valid. means the PDF page has an error. In TAF's test, one line in SamplePDF_v2 caused it:
<div style="position:fixed; left:0; bottom:0;width:100%;height:100%">
To work around it, make a page of your own from SamplePDF_v2, as in Make a PDF page in Visualforce. Change that line to <div>. Type the page name with c__ in front in Template VisualForce Page for PDF. Then send the request again.
The signer gets no email
- Open the Signature record. Check the Status and the Email field. Read the Processing Log field.
- A Status that stays at Requested can mean a wrong PDF page name. The error in Apex Jobs then reads You have attempted to reach a URL that no longer exists on salesforce.com. Check the
c__in front of the name. - Open Setup. In the Quick Find box, type Deliverability. Access level must be All email. A new sandbox starts with System email only.
- On the Configuration tab, check that Turn Off Emails is off, or that the address is on the Whitelist.
- Ask the signer to look in the spam folder. See Emails that look like spam.
Import of experiences fails
Import reads a comma as a new column, also a comma inside quote marks. A Name, a Description or a value with a comma then breaks the file. The Save can show an error, or a red bar with no text.
To work around it, make the experiences again by hand in production, as in Build a signature experience. Copy each parameter and its value from the sandbox.
You skipped the third-party access at install
Some features cannot reach the web sites they need. Add them by hand in Setup.
- In Trusted URLs, add
https://api.qrserver.com. - In Remote Site Settings, add one remote site for each of
https://api.addressverificationapp.com,https://docs.googleapis.com,https://script.googleapis.comandhttps://www.googleapis.com.
29Update Simple Signature
For later. These steps do not count in the setup progress.
TAF sometimes pushes a new version of Simple Signature into every org. Some orgs are on an exclusion list and do not get these pushes. You can also install the newest version yourself at any time, from the install links on the change log. The AppExchange listing no longer updates an installed app.
Update before you report a bug
TAF works on bugs in the newest version only. Check your version before you open a case, and update if it is old.
Open the Simple Signature change log.
The newest version and its install links sit at the top of the Simple Signature change log. If your version matches the newest one, stop here.
Update a sandbox first.
Click Install in a sandbox. Sign in to your sandbox and follow the install screens. The install page shows Upgrade in place of Install. If a screen asks who to install for, pick Install for All Users.
Salesforce installs the newer version over the one you have. Your labels, fields, buttons and signatures stay in place.
Take a test signature in the sandbox.
Follow Take a test signature. Make sure the form opens and the Signature record saves.
Update production.
Go back to the change log and click Install in production. Sign in to production and follow the same screens.
Check the version again.
Open Installed Packages again. The Version Number now matches the top of the change log.
You cannot go back to an older version
To go back, you must uninstall Simple Signature and set it up again.
30Get help
Open a case if a step does not work. Give the link to the step and paste the exact error text.
Before you report a bug, update to the newest version. TAF works on bugs in the newest version only. See Update Simple Signature.
On the free version, report bugs through a case. Help with setup and configuration comes with the paid version.
See what changed in each release in the Simple Signature change log. Sample code for custom forms and PDF pages sits in the Simple Signature repository on GitHub.
Found a mistake in this guide? Email support with the link to the step.
Rate Simple Signature
If Simple Signature helps you, leave a review on the AppExchange. If something is wrong, open a case first, so TAF can fix it with you.
Stuck on a step?
Open a case and send the link to the step. A person reads every case.










