# Simple Signature implementation guide

> Install Simple Signature, a Salesforce managed package by To A Finish. Set the title, the legal text and the fields of the signature form. Add a Sign button to Contacts and take a first in-person signature. With the paid version, build signature experiences, a Sign button that uses them, a form on a record page, a signature screen in a Flow, and your own branding. Then set up a Salesforce Site and send signature requests by email to signers outside Salesforce. Make PDF documents from Google Docs or Visualforce, send reminders, and move the setup between a sandbox and production.

- Publisher: To A Finish LLC
- Applies to version: 5.8.x
- Last updated: 9 Oct 2026
- Web page: https://www.toafinish.com/support/guides/simple-signature/
- Works in: Salesforce Lightning Experience and the Salesforce mobile app. This guide does not cover Classic.
- Price: free version for up to 100 signatures a year, and a paid version with more features. This guide covers the free setup and the paid features.

## 1. Before 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.

![The Simple Signature form on a Contact: a title, the legal text, the fields First Name, Last Name, Email and Date, a signature box and the Save Signature button.](https://www.toafinish.com/assets/support/guides/simple-signature/signature-form.webp)

### 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](https://www.toafinish.com/support/guides/simple-signature/#paid).

## 2. Install Simple Signature

Install into a sandbox first. When the whole guide works there, come back and install into production.

1. **Open the Simple Signature listing on the AppExchange. Click Get It Now.**

   Go to [Simple Signature on the AppExchange](https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000DqCoUUAV). 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.
2. **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](https://www.toafinish.com/support/changes/simple-signature/#install-newest) 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.
3. **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.
4. **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**.
5. **Pick Install for All Users. Then click Install.**

   The three choices are **Install for Admins Only**, **Install for All Users** and **Install for Specific Profiles**. Only an admin sets Simple Signature up, but every user who takes signatures needs access to its pages.

   ![The Salesforce install screen for Simple Signature, with Install for All Users selected.](https://www.toafinish.com/assets/support/guides/simple-signature/install-all-users.webp)
6. **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.com` and `www.googleapis.com`

   ![The Approve Third-Party Access window: the CSP Trusted Site api.qrserver.com, four websites, and the Yes, grant access box above the Continue and Cancel buttons.](https://www.toafinish.com/assets/support/guides/simple-signature/third-party-access.webp)

   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**.
7. **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**.
8. **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.

## 3. Check 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.

1. **Open Session Settings.**

   Open Setup. In the Quick Find box, type **Session Settings**. Click **Session Settings**.
2. **Find Use Lightning Web Security for Lightning web components and Aura components.**

   It sits in the Lightning Web Security section of the page. If the box is already ticked, you are done with this chapter.

   ![The Session Settings page, with Use Lightning Web Security for Lightning web components and Aura components ticked.](https://www.toafinish.com/assets/support/guides/simple-signature/lws-setting.webp)
3. **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.

## 4. Set 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.

1. **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.
2. **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.
3. **Click New Local Translations / Overrides.**

   The button sits in the **Local Translations / Overrides** section at the bottom of the page.

   ![The Custom Label Detail page for Page_Title, with the New Local Translations / Overrides button.](https://www.toafinish.com/assets/support/guides/simple-signature/label-detail.webp)

   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.
4. **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`.

   ![The New Translation page for Page_Title, with English picked and a new title typed in Translation Text.](https://www.toafinish.com/assets/support/guides/simple-signature/label-override.webp)
5. **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](https://www.toafinish.com/support/guides/simple-signature/#wording-3) again for each language. For a language under **Packaged Translations**, you can also click **Override** on its row.
6. **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.
7. **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. |

## 5. Choose 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.

1. **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.
2. **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.
3. **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.
4. **Drag fields in, out and into order.**

   Drag a field from the top into **In the Field Set** to add it to the form. Drag a field back out to remove it. The order in the field set is the order on the form.

   ![The SignatureFields field set editor, with the Signature fields at the top and the fields of the form below.](https://www.toafinish.com/assets/support/guides/simple-signature/field-set.webp)
5. **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.

## 6. Add 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.

1. **Open Contact in Object Manager. Click Buttons, Links, and Actions.**

   Open Setup. Click **Object Manager**. Click **Contact**. Click **Buttons, Links, and Actions**.
2. **Click New Action.**

   The New Action page opens.
3. **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 `600px` in place of 250px. |
   | Label | Type `Sign`. |
   | Name | Salesforce fills in `Sign` from the label. |

   If the first click on **Save** does nothing, click it again.

   ![The New Action page for Contact: Action Type Lightning Component, the component signature:SignatureFormFree, height 600px and the label Sign.](https://www.toafinish.com/assets/support/guides/simple-signature/sign-action.webp)
4. **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**.
5. **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.

   ![The Contact page layout. The palette shows Mobile & Lightning Actions, and Sign sits in the Salesforce Mobile and Lightning Experience Actions section.](https://www.toafinish.com/assets/support/guides/simple-signature/layout-actions.webp)
6. **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.
7. **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.

## 7. Take a test signature

Check the whole setup with one signature on a test Contact.

1. **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**.
2. **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.
3. **Fill in the fields.**

   Type the signer's first name, last name and email. The Date fills itself.
4. **Sign in the box.**

   Use the mouse, or a finger on a touch screen.
5. **Click Save Signature.**

   Simple Signature saves the signature and opens the new Signature record.
6. **Check the Signature record.**

   The Status reads **Signed**. The record shows the signature, the fields from the form, the title and the legal text the signer agreed to, and a link to the Contact. The record also shows in the **ß Signatures** related list on the Contact.

   ![The top of a ß Signature record: the form title, the legal text, the fields from the form and the signature.](https://www.toafinish.com/assets/support/guides/simple-signature/signature-record.webp)

> **Sign on a phone**
>
> The Sign button works the same way in the Salesforce mobile app.

> **Paid version: chapters 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.

## 8. Turn on the paid version

*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 [sales@toafinish.com](mailto:sales@toafinish.com) or [book a demo](https://calendly.com/toafinishdemo/simple-signature-app).

1. **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.
2. **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](https://www.toafinish.com/support/guides/simple-signature/#install-7).
3. **Click Upgrade.**

   The **Upgrade** button sits on the Configure page of the free version. The window **License Info** opens.
4. **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.
5. **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.

## 9. Build a signature experience

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

1. **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](https://www.toafinish.com/support/guides/simple-signature/#upgrade-2). The Simple Signature app also has a **ß Configure** tab that opens the same page.
2. **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.
3. **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.

   ![The Create New Signature Experience window with five parameters: compact, backtoparent, requestedform, submitbutton and submissiontype.](https://www.toafinish.com/assets/support/guides/simple-signature/experience-params.webp)
4. **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](https://www.toafinish.com/support/guides/simple-signature/#request-parameters). The parameters for PDF documents are in [Document parameters for an experience](https://www.toafinish.com/support/guides/simple-signature/#document-parameters).

   | Parameter | Button | What it does |
   | --- | --- | --- |
   | `fieldset` | Add Parameter | Shows the fields of another field set on the form. The value is the field set name. Without it, the form uses SignatureFields. |
   | `compact` | Add Parameter | Puts each label on the same line as its field. |
   | `fieldreadonly` | Add Parameter | Shows the fields you list as read-only. List field API names, with commas between them. |
   | `fieldheader` | Add Parameter | Shows the fields you list as headings. |
   | `fieldhidelabel` | Add Parameter | Shows the fields you list with no label. |
   | `hideblanks` | Add 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. |
   | `contactfield` | Add 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. |
   | `backtoparent` | Add Parameter | After the signature, opens the parent record, not the new Signature record. |
   | `returl` | Add Parameter | After the signature, opens this web address. |
   | `hidecancel` | Add Parameter | Hides the Cancel button. |
   | `initials` | Add Parameter | Adds a second, smaller box for the signer's initials. |
   | `multisignature` | Add 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`. |
   | `requestedform` | Add Parameter | Gives the form a name. The name goes on each Signature record, so you can tell the forms apart. |
   | `preauthorized` | Add Parameter | Skips the eSignature Agreement window for this form. See Brand the form. |
   | `submissiontype` | Add 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. |
   | `submissiontypedefault` | Add Advanced Parameter | The way to sign that shows first, when the form offers more than one. |
   | `submitbutton` | Add 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.
5. **Click Save.**

   **Save** sits at the bottom of the experience.
6. **Copy the Experience ID.**

   The saved experience shows its **Experience ID**. Click the copy icon beside it. Keep the ID at hand. The next chapters use it.

   ![A saved experience on the Experiences tab, with its Experience ID, the copy icon, its parameters, and the Edit and Delete buttons.](https://www.toafinish.com/assets/support/guides/simple-signature/experience-id.webp)

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

## 10. Add a Sign button for your experience

*Paid version only. These steps do not count in the setup progress.*

The Sign button from [Add the Sign button](https://www.toafinish.com/support/guides/simple-signature/#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.

1. **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.
2. **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**.
3. **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&amp;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](https://github.com/ToAFinish/simplesignature).
4. **Replace XXXXXXXXXXXXXXX with your Experience ID.**

   It sits in the line that starts with `<aura:attribute name="experienceId"`. Keep the quote marks. Put no space inside them.

   ![The Developer Console with the SignContact component. The Experience ID sits in the experienceId line.](https://www.toafinish.com/assets/support/guides/simple-signature/dev-console.webp)
5. **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**.
6. **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.
7. **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. |

   ![The New Action page for Contact with the component c:SignContact, height 600px, the label Sign and the name Sign_Experience.](https://www.toafinish.com/assets/support/guides/simple-signature/paid-sign-action.webp)
8. **Swap the actions on the page layout.**

   Open **Page Layouts** and the layout from [step 4 of Add the Sign button](https://www.toafinish.com/support/guides/simple-signature/#sign-4). 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**.
9. **Take a test signature with the new button.**

   Follow [Take a test signature](https://www.toafinish.com/support/guides/simple-signature/#first-signature). The form now follows your experience.

   ![The form from the new Sign button: labels beside the fields, the Standard and Typed tabs, and the Sign Now button from the experience.](https://www.toafinish.com/assets/support/guides/simple-signature/paid-sign-form.webp)

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

## 11. Show the form on a record page

*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](https://www.toafinish.com/support/guides/simple-signature/#sign-button).

1. **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.
2. **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`.
3. **Drag SignatureFormConnector into the new tab.**

   `SignatureFormConnector`

   Find it under **Custom - Managed** in the left panel.
4. **Paste your Experience ID.**

   Click the component. In the right panel, paste the ID into **Experience ID**.

   ![The Lightning App Builder on a Contact page. SignatureFormConnector sits in the Sign tab, with the Experience ID in the right panel.](https://www.toafinish.com/assets/support/guides/simple-signature/record-page-connector.webp)
5. **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**.
6. **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.

## 12. Take signatures in a Flow

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

1. **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.
2. **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.
3. **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.
4. **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.

   ![The Flow screen editor with the Simple Signature Form component and its settings.](https://www.toafinish.com/assets/support/guides/simple-signature/flow-screen.webp)
5. **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.
6. **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**.
7. **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](https://www.toafinish.com/support/guides/simple-signature/#sign-5). 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.

   ![The Sign in Flow window: the fields, a signature and the Done button. It shows no title and no legal text.](https://www.toafinish.com/assets/support/guides/simple-signature/flow-form.webp)

> **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](https://www.toafinish.com/support/guides/simple-signature/#pdf-flow).

## 13. Brand the form

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

1. **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.
2. **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.

   ![The Form Options on the Configuration tab: five options with Require eSignature Agreement ticked, and the CSS boxes for the buttons, the bar above the signature box and the logo.](https://www.toafinish.com/assets/support/guides/simple-signature/form-options.webp)
3. **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**.
4. **Put your logo in the Sign button component.**

   Open the Developer Console. Click **File**, then **Open Lightning Resources**. Type `SignContact` in the **Filter** box. Click **c:SignContact**, then **COMPONENT**. Click **Open Selected**. The tab SignContact.cmp opens.

   Find `$Resource.signature__SSLogo`. Replace `signature__SSLogo` with 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.
5. **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.
6. **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.
7. **Take a test signature.**

   Use the Sign button from [Add a Sign button for your experience](https://www.toafinish.com/support/guides/simple-signature/#paid-sign). Check the logo and the colors. With Require eSignature Agreement on, a window asks the signer to agree first.

   ![The form from the new Sign button with a test logo above the title, the legal text of a form type and the navy Sign Now button.](https://www.toafinish.com/assets/support/guides/simple-signature/branded-form.webp)

## 14. Advanced form options

*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](https://www.toafinish.com/support/guides/simple-signature/#wording) give every form the same title and legal text. A form type gives one experience its own legal text.

1. **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 example `Visitor_Release`. Click **Save**.
2. **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**.
3. **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.
4. **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.

1. **Open Custom Settings. Click Manage beside ß Custom Labels.**

   Open Setup. In the Quick Find box, type **Custom Settings**. Click **Custom Settings**.
2. **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 `en` for English. |
   | Label | The longer label, up to 255 characters. |
3. **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](https://github.com/ToAFinish/simplesignature).

## 15. Set up the signature site

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

1. **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**.
2. **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. |

   ![The lower part of the site edit page: signatureURLRewriter as the URL Rewriter Class and Cache public Visualforce pages unticked.](https://www.toafinish.com/assets/support/guides/simple-signature/site-settings.webp)
3. **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 example `https://yourcompany.my.salesforce-sites.com/sign`. Paste it into a text file.
4. **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.
5. **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.
6. **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.

   ![The new sharing rule for ß Signature: guest user access, Status not equal to Signed, shared with the site guest user, Read Only.](https://www.toafinish.com/assets/support/guides/simple-signature/sharing-rule.webp)

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

## 16. Connect the site to Simple Signature

*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](https://www.toafinish.com/support/guides/simple-signature/#request-sender).

1. **Open the Configure page. Click the Configuration tab.**

   Open it the same way as in [step 2 of Turn on the paid version](https://www.toafinish.com/support/guides/simple-signature/#upgrade-2). Use Lightning Experience for steps 1 to 8.
2. **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 '/'.
3. **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.
4. **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 example `c__Signature_PDF`. See [Make a PDF page in Visualforce](https://www.toafinish.com/support/guides/simple-signature/#vf-pdf). Without `c__`, Simple Signature cannot find the page.

   Click **Save Settings**. Reload the page and check that your values stayed.
5. **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 Site Configuration tab: Connected APP Configuration with the Default option ticked.](https://www.toafinish.com/assets/support/guides/simple-signature/site-config-default.webp)

   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 example `SimpleSignatureSite`. Paste the address into **Remote Site URL**. Click **Save**.
6. **Open External Client App Manager. Click New External Client App.**

   Open Setup. In the Quick Find box, type **External Client App Manager**. Click it.
7. **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__SiteAccessAuthorize` |
   | App Settings | Callback URL, in a sandbox | `https://test.salesforce.com/apex/signature__SiteAccessAuthorize` |
   | App 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. |

   ![The API (Enable OAuth Settings) section of the new app: Enable OAuth ticked, the callback URL and the three selected OAuth scopes.](https://www.toafinish.com/assets/support/guides/simple-signature/eca-oauth.webp)
8. **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](https://www.toafinish.com/support/guides/simple-signature/#eca-access).
9. **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**.
10. **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.
11. **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.
12. **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.

    ![The Authorize Site box after the authorization: Date, User and Updated By above the Authorize button.](https://www.toafinish.com/assets/support/guides/simple-signature/site-authorized.webp)
13. **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**.
14. **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.

## 17. Send a signature request

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

1. **Open Object Manager. Click Lead, then Buttons, Links, and Actions. Click New Action.**

   Use Lightning Experience, with admin rights.
2. **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.
3. **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.
4. **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.Email` | The address that gets the request. |
   | First Name | `Lead.FirstName` | The first name of the signer. |
   | Last Name | `Lead.LastName` | The 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.FirstName` and `Contact.LastName`.

   ![The Request Signature action on Lead with its seven predefined field values.](https://www.toafinish.com/assets/support/guides/simple-signature/request-values.webp)
5. **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**.
6. **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.
7. **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](https://www.toafinish.com/support/guides/simple-signature/#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](https://www.toafinish.com/support/guides/simple-signature/#request-sender).

   ![The signature request email with the Sign Online button that opens the signing page.](https://www.toafinish.com/assets/support/guides/simple-signature/request-email.webp)
8. **Fill in the form. Sign. Click Save Signature.**

   With Require eSignature Agreement on, the window **Electronic Signature Agreement** opens first. Click **Agree**.

   ![The Electronic Signature Agreement window with the Cancel and Agree buttons.](https://www.toafinish.com/assets/support/guides/simple-signature/request-agreement.webp)

   ![The signing page on the site: the title, the legal text, the fields, a signature and the Save Signature button.](https://www.toafinish.com/assets/support/guides/simple-signature/site-form.webp)

   After the save, the page shows **You may close this page.**
9. **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](https://www.toafinish.com/support/guides/simple-signature/#no-signed-pdf).

   ![The Signature record after the request: Status Signed and the dates of each stage.](https://www.toafinish.com/assets/support/guides/simple-signature/request-signed.webp)

> **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](https://www.toafinish.com/support/guides/simple-signature/#request-parameters).

## 18. Change the request emails

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

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

1. **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.
2. **Click Edit HTML Version.**

   The page says that you may only edit certain attributes of a managed template. The Subject is one of them.
3. **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.
4. **Go back to Classic Email Templates. Click SignatureReturn.**
5. **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"`.
6. **Send a test request. Check both emails.**

   Follow steps 6 to 9 of [Send a signature request](https://www.toafinish.com/support/guides/simple-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.

## 19. More request options

*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](https://www.toafinish.com/support/guides/simple-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](https://www.toafinish.com/support/guides/simple-signature/#multistep). |
| `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.

1. **Turn on MultiStep for the request.**

   On an action or in a Flow, set the field `signature__MultipleSteps__c` to True. In an experience, tick the parameter `multistep`.
2. **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.
3. **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 | `Requested` |
   | Wait 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.
4. **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__c` |
   | SignatureDate2\_\_c | `signature__Signed__c` |
   | SignatureName2\_\_c | `signature__Firstname__c`, a space and `signature__LastName__c` |

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

1. **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.
2. **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**.
3. **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-href` and `href`. 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**.
4. **Check that the site uses signatureURLRewriter.**

   You set it in [step 2 of Set up the signature site](https://www.toafinish.com/support/guides/simple-signature/#site-2).
5. **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`.
6. **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.

1. **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**.
2. **Add the users who countersign to the library.**

   Open the library. Click **Manage Members**. Add the users. For many users, add a public group.
3. **Each user saves a signature on the User Signature page.**

   In the App Launcher, the user types **User Signature**, opens it and signs.
4. **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](https://www.toafinish.com/support/guides/simple-signature/#merge-codes).

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](https://github.com/ToAFinish/simplesignature), from `<apex:page` to `</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.

## 20. Check two Salesforce settings for PDF documents

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

1. **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.
2. **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.

## 21. Make a PDF template in Google Docs

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

1. **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.
2. **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](https://www.toafinish.com/support/guides/simple-signature/#connect-5).
3. **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.
4. **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](https://www.toafinish.com/support/guides/simple-signature/#sbx-8).

   ![The Google Docs Configuration tab after the connection, with the Revoke button.](https://www.toafinish.com/assets/support/guides/simple-signature/gdoc-authorized.webp)
5. **Switch back to Lightning Experience. Open ß Templates. Click New.**

   In the App Launcher, type `Templates`. Click **ß Templates**.
6. **Pick Google Docs. Click Next. Pick Create New Template. Click Next.**

   The two screens are **Document Platform** and **Choose Template**.
7. **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. |

   ![The new ß Template for Google Docs: a Name, the Object Name ß Signature, and the User and Action Permission Types.](https://www.toafinish.com/assets/support/guides/simple-signature/gdoc-template.webp)
8. **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**.
9. **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](https://www.toafinish.com/support/guides/simple-signature/#merge-codes) below.

   ![A template in Google Docs with merge codes for the name, the date and the signature.](https://www.toafinish.com/assets/support/guides/simple-signature/gdoc-merge.webp)
10. **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 `templates` with 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](https://www.toafinish.com/support/guides/simple-signature/#req-4).

    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.
11. **Send a test request. Open the signed PDF.**

    Follow steps 6 to 9 of [Send a signature request](https://www.toafinish.com/support/guides/simple-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.

    ![A signed PDF from the Google Docs template: the Salesforce data, the date and the signature.](https://www.toafinish.com/assets/support/guides/simple-signature/gdoc-signed-pdf.webp)

### 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](https://www.toafinish.com/support/guides/simple-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. |

## 22. Make a PDF page in Visualforce

*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 [sales@toafinish.com](mailto:sales@toafinish.com).

The pages folder of the [sample code on GitHub](https://github.com/ToAFinish/simplesignature) 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](https://www.toafinish.com/support/guides/simple-signature/#custom-site-page). |

1. **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.
2. **Type a Label and a Name. Delete the code in the page.**

   For example, Label `Signature PDF` and Name `Signature_PDF`. The Name can fill in by itself, with spaces. A Name takes no spaces, so type an underscore in place of each one.
3. **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:page` to `</apex:page>`. Paste it into **Visualforce Markup**.
4. **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**.
5. **Make Simple Signature use the page.**

   Use the page name with `c__` in front, for example `c__Signature_PDF`. Without `c__`, 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](https://www.toafinish.com/support/guides/simple-signature/#connect-4). |
   | One experience | The parameter `pdftemplate`. See [Document parameters for an experience](https://www.toafinish.com/support/guides/simple-signature/#document-parameters). |
   | One request action | A predefined value for **PDF Template**, in quote marks. |
6. **Send a test request. Open the signed PDF.**

   Follow steps 6 to 9 of [Send a signature request](https://www.toafinish.com/support/guides/simple-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](https://www.toafinish.com/support/guides/simple-signature/#no-signed-pdf).

   ![A signed PDF from a page made from SamplePDF_v2: the fields and the signature.](https://www.toafinish.com/assets/support/guides/simple-signature/vf-signed-pdf.webp)

### 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__c` and a checkbox field `Signed__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.

## 23. Show the PDF in a Flow before the signature

*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](https://www.toafinish.com/support/guides/simple-signature/#google-docs).

1. **Make a new Screen Flow.**

   Do it the same way as in [step 1 of Take signatures in a Flow](https://www.toafinish.com/support/guides/simple-signature/#flow-1).
2. **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**.
3. **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.
4. **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 example `We are making your document. Then you can read it and sign.`
5. **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}`.
6. **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. |
7. **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**.
8. **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 example `id={!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 example `id={!Create_Signature.Id}&showattachmentid={!WaitPreview.fileId}`.
9. **Show the signed PDF too, if you want.**

   Repeat steps 6 and 7 after the form, with `Final` as the Type.
10. **Save the Flow. Activate it.**

    ![The finished Flow in Flow Builder: Get Records, the first screen, Create Records, and the Wait, Preview and Form screens.](https://www.toafinish.com/assets/support/guides/simple-signature/pflow-canvas.webp)
11. **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](https://www.toafinish.com/support/guides/simple-signature/#req-5).
12. **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.

    ![The Flow window with the PDF from the Google Docs template, before the form.](https://www.toafinish.com/assets/support/guides/simple-signature/pflow-preview.webp)

## 24. Send reminders and clean up old requests

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

1. **Open the Configure page. Click the Maintenance tab.**

   Open it the same way as in [step 2 of Turn on the paid version](https://www.toafinish.com/support/guides/simple-signature/#upgrade-2).
2. **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.

   ![A new maintenance rule with a Name, the Type Notification, the Status Emailed and a number of Days.](https://www.toafinish.com/assets/support/guides/simple-signature/maintenance-rule.webp)
3. **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.
4. **Open Apex Classes. Click Schedule Apex.**

   Open Setup. In the Quick Find box, type **Apex Classes**. Click **Apex Classes**. Click **Schedule Apex**.
5. **Fill in the job. Click Save.**

   Type a **Job Name**, for example `Simple Signature Maintenance`. In **Apex Class**, type `SignatureCleanupScheduler`, 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.

   ![The Schedule Apex page for SignatureCleanupScheduler, with every day ticked and a start time.](https://www.toafinish.com/assets/support/guides/simple-signature/schedule-apex.webp)
6. **Check the job.**

   Open Setup. In the Quick Find box, type **Scheduled Jobs**. The list shows your job and its next run.

## 25. Print a backup of all signatures

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

1. **Open the Signature Report.**

   Click the App Launcher at the top left. Type **Signature Report**. Under Items, click **ß Signature Report**.
2. **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.

   ![The Signature Report with its Report Options and the Run Report button.](https://www.toafinish.com/assets/support/guides/simple-signature/signature-report.webp)

## 26. Set up a sandbox made from production

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

1. **Switch to Salesforce Classic.**

   Some of these steps can fail in Lightning. See [step 9 of Connect the site](https://www.toafinish.com/support/guides/simple-signature/#connect-9).
2. **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.
3. **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.
4. **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.
5. **Click Save Settings.**
6. **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](https://www.toafinish.com/support/guides/simple-signature/#connect-5). Tick **Active**.
7. **Authorize the site again.**

   Do it as in [Authorize the connection again](https://www.toafinish.com/support/guides/simple-signature/#authorize-again). Salesforce can ask you to sign in to the sandbox again. If it fails, see [Authorize does not work](https://www.toafinish.com/support/guides/simple-signature/#authorize-fails).
8. **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.
9. **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](https://www.toafinish.com/support/guides/simple-signature/#gdoc-10).

   Both orgs then use the same Google document. A change that you make from the sandbox also changes the PDF in production.
10. **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.

## 27. Move your setup from a sandbox to production

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

1. **Install Simple Signature in production.**

   Install it from the AppExchange, as in [Install Simple Signature](https://www.toafinish.com/support/guides/simple-signature/#install). TAF support can also send you an install link.
2. **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](https://www.toafinish.com/support/guides/simple-signature/#update).
3. **Turn on the paid version in production.**

   Each org needs its own Upgrade Key. See [Turn on the paid version](https://www.toafinish.com/support/guides/simple-signature/#paid).
4. **Set up the signature site and its connection, if you use requests.**

   Do [Set up the signature site](https://www.toafinish.com/support/guides/simple-signature/#site) and [Connect the site to Simple Signature](https://www.toafinish.com/support/guides/simple-signature/#connect) in production.
5. **Connect Google Docs, if you use it.**

   Do steps 1 to 4 of [Make a PDF template in Google Docs](https://www.toafinish.com/support/guides/simple-signature/#google-docs) in production.
6. **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.
7. **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`, `templates` and `submissiontype`. Type their values again.

   If the import fails, see [Import of experiences fails](https://www.toafinish.com/support/guides/simple-signature/#import-fails).
8. **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.

## 28. If something does not work

### The form shows an error when it opens

Check that Lightning Web Security is on. See [Check one Salesforce setting](https://www.toafinish.com/support/guides/simple-signature/#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](https://www.toafinish.com/support/guides/simple-signature/#sign-5). 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](https://www.toafinish.com/support/guides/simple-signature/#wording-5).

### 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](https://www.toafinish.com/support/guides/simple-signature/#paid).

### 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](https://www.toafinish.com/support/guides/simple-signature/#authorize-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](https://www.toafinish.com/support/guides/simple-signature/#site-5).

### 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](https://www.toafinish.com/support/guides/simple-signature/#connect-3).
- A page of your own in **Template VisualForce Page for PDF** has `c__` in front of its name. See [step 4](https://www.toafinish.com/support/guides/simple-signature/#connect-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](https://www.toafinish.com/support/guides/simple-signature/#vf-pdf). 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](https://www.toafinish.com/support/guides/simple-signature/#request-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](https://www.toafinish.com/support/guides/simple-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.com` and `https://www.googleapis.com`.

## 29. Update 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.

1. **Check the version you have.**

   Open Setup. In the Quick Find box, type **Installed Packages**. Find **ß Simple Signature** and read the **Version Number** column.

   ![The Simple Signature row in Installed Packages. The version number sits in the row.](https://www.toafinish.com/assets/support/guides/simple-signature/installed-packages.webp)
2. **Open the Simple Signature change log.**

   The newest version and its install links sit at the top of the [Simple Signature change log](https://www.toafinish.com/support/changes/simple-signature/#install-newest). If your version matches the newest one, stop here.
3. **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.
4. **Take a test signature in the sandbox.**

   Follow [Take a test signature](https://www.toafinish.com/support/guides/simple-signature/#first-signature). Make sure the form opens and the Signature record saves.
5. **Update production.**

   Go back to the change log and click **Install in production**. Sign in to production and follow the same screens.
6. **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.

## 30. Get 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](https://www.toafinish.com/support/guides/simple-signature/#update).

[Open a case](https://www.toafinish.com/support/#open-a-case)[Give us access](https://www.toafinish.com/support/grant-access/)

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](https://www.toafinish.com/support/changes/simple-signature/). Sample code for custom forms and PDF pages sits in the [Simple Signature repository on GitHub](https://github.com/ToAFinish/simplesignature).

Found a mistake in this guide? [Email support](mailto:support@toafinish.com?subject=Simple%20Signature%20guide%20feedback) with the link to the step.

### Rate Simple Signature

If Simple Signature helps you, [leave a review on the AppExchange](https://appexchange.salesforce.com/appxListingDetail?listingId=a0N3A00000DqCoUUAV). If something is wrong, open a case first, so TAF can fix it with you.

---
To A Finish LLC. Open a case: https://www.toafinish.com/support/#open-a-case
