Simple Electronic Signature Capture for Salesforce®
Select from the following items to learn more about EZSign and how to customize it to suit your needs:
If you're an existing customer wanting to migrate your EZSign app from Classic to Lightning, please follow these simple steps:
window.location='/apex/EZSign__getSignature?id={!YourObjectName__c.Id}';to this:
/apex/EZSign__getSignature?id={!YourObjectName__c.Id}
That's it, you're done! If you run into any problems or need assistance, please Contact Us so we can help get you migrated.
The EZSign package contains the following Salesforce elements:
4 Visualforce Components | getSignature, createSignature, clearSignature, & documentViewer |
6 Custom Fields | Signature__c, Signature_Name__c, Signature_Date__c, Signature_URL__c, Signature_Image__c, Signature_Key__c |
19 Custom Labels | chatterSignatureCaptured, chatterSignatureCleared, chatterSignatureRequested, clearLabel, clearSignatureConfirmation, drawActionLabel, drawLinkLabel, drawnSignatureRequiredLabel, emailBody, emailGreeting, emailLink, emailSignOff, emailSubject, nameRequiredLabel, remoteSignatureConfirmation, submitButtonLabel, typeActionLabel, typeInstructions, & typeLinkLabel |
3 Custom Buttons | Get Signature, Clear Signature, & Get Signature Remotely* |
3 Custom Action Buttons† | Get Signature, Clear Signature, & Get Signature Remotely* |
3 Apex Classes | documentViewer, EZSign, & EZSign__Test |
1 Apex Trigger | mapToParent |
7 Visualforce Pages | clearSignature, createSignature*, getSignature, getSignatureEmailBody*, getSignatureEmailSubject*, getSignatureRemotely*, & showSignature |
1 Custom Object | Signature* |
2 Custom Settings | EZSign Email Settings* & EZSign Settings* |
1 Static Resource | EZSign |
2 Sample Email Templates | EZSign & EZSign Custom (found under "EZSign Email Templates") |
Once you've downloaded and installed the EZSign package, modify the Contact page layout to include the following elements:
Fields:To use EZSign with other standard or custom objects in Salesforce, follow these steps:
Add the following Custom Fields to your standard or custom object. Note the fields in blue as their Field Labels do not match their Field Names.
Create the following Custom Buttons for the standard or custom object:
/apex/EZSign__getSignature?id={!YourObjectName__c.Id}
/apex/EZSign__clearSignature?id={!YourObjectName__c.Id}
/apex/EZSign__createSignature?id={!YourObjectName__c.Id}
Edit the Page Layout for your standard or custom object record to include the new custom buttons along with the "Signature Name," "Signature Date," and "Signature" fields.
The EZSign signature box can be embedded into any Visualforce page with just a single line of code! The following is an example of how to do this:
<apex:page standardController="Contact"> <center><b>NON-DISCLOSURE AGREEMENT</b></center> <p>This agreement is made by and between...</p> <p>IN WITNESS WHEREOF, the parties hereto have caused this Agreement to be executed by their duly authorized representative below.</p> <EZSign:getSignature bgColour="#ffffcc" /> </apex:page>
This is what the code above produces:
There's no limit to the number of objects or instances of EZSign within your Salesforce org but don't forget to modify your page layout(s) to accommodate all of them.
NOTE: In order to use this feature, you will need to set the "createExternalImage" attribute to TRUE so that externally available image Documents will be created whenever a signature is submitted (e.g., createExternalImage="TRUE").
Once a signature has been captured, it can then be added to a custom email template if you wish to send the customer a copy of the signature as part of a receipt or forward it on to other Salesforce users.
There are two sample email templates included with the EZSign package that you can use as a reference, one "Custom" and the other "Visualforce." These samples are found under the "EZSign Email Templates" folder of Email Communication Templates.
For "Custom" (as well as "HTML") templates, the common fields are:
Recipient: {!Contact or YourObjectName__c.Name}
Signature: {!SUBSTITUTE(Contact or YourObjectName__c.Signature_Image__c,'amp;','')}
Printed Name: {!Contact or YourObjectName__c.Signature_Name__c}
Signature Date: {!Contact or YourObjectName__c.Signature_Date__c}
For "Visualforce" email templates, the common fields are:*
Recipient: {!recipient.EZSign__Name}
Signature: <img src="{!recipient.EZSign__Signature_URL__c}" />
Printed Name: {!recipient.EZSign__Signature_Name__c}
Signature Date: {!recipient.EZSign__Signature_Date__c}
*include the highlighted "EZSign__" namespace if using the default "Contact" object.
Using the Salesforce Translation Workbench all EZSign text can be overridden by creating local translations for our custom labels. Please note that all text within the PDF document viewer is controlled by your browser language settings and that language translation is not available for Salesforce users on Group edition where custom labels are not supported. Below are some screenshots demonstrating how this works:
Creating a local translation for a custom label:
Editing the text for a local translation:
To set up your Salesforce org so that you'll be able to create local translations, please visit the help page for the Salesforce Translation Workbench.
Before a signature has been submitted, you can use the "onClickFunction" attribute to call a JavaScript function to do things like validate other fields on the page before the signature is actually captured.
<apex:page standardController="Account"> <script> function validateFields(){ if(1+1==2){ submitSig(); } else { alert('Please check all boxes'); } } </script> <EZSign:getSignature onClickFunction="validateFields()" /> </apex:page>
Once a signature has been submitted, you can use the "saveFunction" attribute to call a JavaScript function to redirect the user to another Visualforce page or website, along with any URL parameter data.
<apex:page standardController="Account"> <script> function redirectURL(){ window.open("/apex/ThankYou?Accountid={!$CurrentPage.parameters.AccountId}& Caseid={!$CurrentPage.parameters.CaseId}"); } </script> <EZSign:getSignature saveFunction="redirectURL()" /> </apex:page>
After a signature has been captured, you can use the "redirectURL" attribute to redirect the user to another Visualforce Page or another website, including URL parameters.
<apex:page standardController="Account"> <EZSign:getSignature redirectURL="http://www.someotherwebsite.com?customer={!Account.Id}" /> </apex:page>
You can use EZSign to capture any number of signatures per record, as long as you've created the necessary fields to store the data. To do so, simply follow the instructions above for creating the EZSign fields but include a "name" or "number" in the API name of each field.
For example, the standard "Signature__c" field would become "Signature2__c" where "2" is the name of the second set of fields. NOTE: The first signature always needs to use the standard EZSign API names referenced above but the Labels can be whatever you want them to be (e.g., Applicant Name & CoApplicant Name --> Signature__c & Signature Co-Applicant__c).
If you'd like to capture one signature at a time, you can use the "saveFunction" attribute described above to capture multiple signatures in sequence, similar to what appears on the EZSign Test Drive site. Here, a single "Get Signatures" button appears at the top of the record. When the button is clicked, the "Signature #1" page is displayed and then redirects to "Signature #2" once the first signature has been captured.
The following is the Visualforce code for the "Signature #1" and "Signature #2" pages above. When the user enters their signature and hits the "Submit" button, they are then redirected to the "Signature #2" page so the second signature can be captured.
<apex:page title="Signature #1" standardController="Custom_Object__c"> <script> function getSignature2(){ window.location='/apex/Signature2?id={!Custom_Object__c.Id}'; } </script> <center> <b style="font-size: 14pt;">Signature #1</b><br /> <p>This is a Visualforce Page that is set up to capture the first signature.</p> </center> <EZSign:getSignature saveFunction="getSignature2()" /> </apex:page>
<apex:page title="Signature #2" standardController="Custom_Object__c"> <center> <div style="width:600px;"> <center> <br /><br /><b style="font-size: 14pt;">Signature #2</b><br /> <p>This is another Visualforce Page that is set up to capture the second signature.</p> </center> <div style="font-size:10px; text-align:left; margin:auto; width:400px;"> <apex:outputField value="{!Custom_Object__c.Signature_Image__c}" /><br /> <EZSign:getSignature sigName="2" /> </div> </div> </center> </apex:page>
If you'd prefer to capture multiple signatures on one page, just <iframe> them together like so:
The following are the three Visualforce Pages that are used in the screenshot above:
Main Visualforce Page:"MultiSig1" Visualforce Page:<apex:page showHeader="false" standardController="Custom_Object__c"> <center> <br /><br /><b style="font-size: 14pt;">Get Multiple Signatures on One Page</b><br /> <p>This is a Visualforce Page that is set up to capture two signatures on one page.</p><br /><br /> </center> <div style="width:1000px; margin:auto; padding-left:200px;"> <iframe src="/apex/MultiSig1?id={!Custom_Object__c.Id}" height="400" width="450" style="border:none;" /> <iframe src="/apex/Multisig2?id={!Custom_Object__c.Id}&sigName=2" height="400" width="450" style="border:none;" /> </div> </apex:page>
"MultiSig2" Visualforce Page:<apex:page standardController="Custom_Object__c"> Signature 1:<br /><br /> <EZSign:getSignature returnToRecord="false" /> </apex:page>
Once all of the signatures have been captured, you can then have a final document showing all of them in a single PDF file, like this:<apex:page standardController="Custom_Object__c"> Signature 2:<br /><br /> <EZSign:getSignature sigName="2" returnToRecord="false" /> </apex:page>
Here's the Visualforce page that renders the above PDF file:
<apex:page title="Signed Document" standardController="Custom_Object__c" renderAs="PDF" > <center> <b style="font-size: 14pt;">Signed Document</b><br /> <p>This is the final signed document showing both signatures.</p> <div> <div style="float:left; font-size:10px; text-align:left; width:300px; overflow:hidden; margin-left:100px;"> <apex:outputField value="{!Custom_Object__c.Signature_Image__c}" /><br /> <div style="float:left; font-size:10px; text-align:left; width:300px; overflow:hidden;"> <apex:outputField value="{!Custom_Object__c.Signature2_Image__c}" /><br /> </div> </center> </apex:page>
If someone is not able to sign your mobile device in person, you can use EZSign to safely and securely capture their signature remotely via an automated email message. Below are some screenshots demonstrating how this works:
Salesforce Contact record (without signature):
Recipient's email message:
Website where signature is entered:
Salesforce Contact record (with signature):
Enabling this process requires the use of a Salesforce "Site" and the purchase of an additional EZSign license so that guest users are able to submit their signatures directly to your Salesforce org.
To ensure data security, EZSign uses a security key that prevents someone from entering or accessing someone else's signature.
Click here to learn more about setting up Salesforce for Remote Signature Capture.