Salesforce Integration

How it Works

The Live Data integration for Salesforce checks all of your Contact records against the open web to determine if you have the correct company and title for each person. If Live Data finds the person on the open web, a new object will be attached to the Contact record containing the latest information from Live Data.

The Live Data Contact Information object contains information about the person's current job, including: title and level, contact information, and firmographic data for the company.

Of particular interest is a field called "Job Change Detected Date" -- this field is set to the date at which Live Data identified that the person is at a different company than the one provided. This can be used to filter the data provided by Live Data to only show "new job changes" instead of showing all of the data that Live Data has found for the person.

The integration does not modify any existing Contact record fields, or create any new common objects such as Leads, Contacts, or Accounts. It is the responsibility of the customer to decide how to handle these new records and how to integrate them into their existing Salesforce automation.

Installation

This page will walk you through the integration steps for Salesforce. The steps are:

  • Install the Salesforce integration app
  • Create a new Live Data Ledger
  • Create credentials for the integration
  • Configure the integration
  • Example Salesforce automations

Prerequisites

  1. The user must be a Salesforce System Administrator
  2. The user must have a Live Data account with admin privileges

Install the Salesforce integration app (Salesforce)

The Salesforce integration app is available through a custom installation link. Please contact your Live Data representative to get the link. Once you have the link, follow the instructions to install the app to your Salesforce instance. Be sure to select the Install for All Users option and press the Install button.

Install App

Create a new Live Data Ledger (Live Data)

The Salesforce integration will sync your SF contacts to a ledger in Live Data. You will need to log in to Live Data to create a new ledger for this purpose. You can do this by navigating to the Ledgers page in Live Data and clicking the "Create Ledger" button. Once you have created the ledger, you will need to note the ledger ID. You will need this ID in the next step. You can find the ID by clicking on the ledger name in the list of ledgers and observing the URL in your browser. The part beginning with l_ is the ledger ID.

Create credentials for the integration (Live Data)

The Salesforce integration will use a set of credentials to authenticate with Live Data. You will need to create a new set of credentials for this purpose. You can do this by navigating to the Team page in Live Data and clicking the "Service Accounts" tab. Create a new Service Account with the editor role and note the credentials (the client_id, client_secret, and org ID). You will need these credentials in the next step.

Service Account

Configure the custom app metadata (Salesforce)

The Salesforce integration app will be installed as a custom object in your Salesforce instance. You will need to set some custom field values for the integration to begin working. In Salesforce, navigate to the Setup menu and the Custom Metadata Types page. Find the type labeled LiveData Settings and click the Manage Records button.

Custom Metadata

Click the New button to create a new record. You will need to set the following fields:

  • Label - Default (do not change this value)
  • LiveData Org ID - The org ID you noted in the previous step
  • LiveData Client ID - The client ID you noted in the previous step
  • LiveData Client Secret - The client secret you noted in the previous step
  • LiveData Ledger ID - The ledger ID you noted in the previous step

(For a description of the other settings, see Advanced Configuration below.)

Press Save.

Custom Metadata

Configure the LinkedIn field mapping (Salesforce) (optional)

Optionally, if you have a field in your Contact record that represents the LinkedIn URL for a contact, you can choose to map that field to Live Data to help with the match rates. The value of this field can be in any format. To instruct the integration to use this field, you must add a Custom Setting to the integration by following the steps below.

In Salesforce, navigate to the Setup menu and the Custom Settings page under the Custom Code group. Find the type labeled LiveData Advanced Settings and click the Manage button. Press the New button to create a new record. You will need to set the following fields:

  • Name - Contact LinkedIn Field (do not change this value)
  • Value - The API name of the field in your Contact record that contains the LinkedIn URL. For example, if your field is called LinkedIn_URL__c, you would enter LinkedIn_URL__c in this field.

Press Save.

Custom Setting

Create the remote site settings (Salesforce)

In the Salesforce Setup app, search for Remote Site Settings and click the Remote Site Settings link. Click the New Remote Site button. Enter the following values:

  • Remote Site Name - LiveData
  • Remote Site URL - https://gotlivedata.io

Press Save.

Remote Site Settings

Triggering/Testing the Integration

By default, the integration creates Apex jobs on a schedule to sync with Live Data (both to send new SF contacts to Live Data and to receive job update data from Live Data) nightly. You can modify this schedule if desired (see below).

Note: By default, using these instructions will send all contacts to Live Data. If you would like more granular control over which contacts are sent, see the section below on creating a flag to send contacts to Live Data.

After installing the integration, you can manually trigger the integration to sync contacts to Live Data through the Live Data App in Salesforce. Click on the Salesforce App Launcher icon and search for LiveData. Click the LiveData app. Click the Send Contacts to Ledger button. This will trigger the integration to sync all contacts to Live Data. Press the Send Contacts to Ledger button to sync from Salesforce to Live Data. The data may take some time to sync. You can check the status of the sync by logging in to Live Data and clicking on the Imports tab for the corresponding Ledger. As contact data is initially verified, the import will show a processing status. Once all data has been initially verified, the import will show a completed status.

At any time, you can also use the Sync Updates from LiveData button to get the latest contact data from Live Data.

Example Salesforce automations

The Salesforce integration creates a new Object type called LiveData Contact Information. This object stores the latest contact information from Live Data. You can use this object to create automations and reports in Salesforce. Some examples are below, but these are just a few of the many possibilities.

Showing Live Data on the Contact record

In the Salesforce Setup app, search for Object Manager and click the Object Manager link. Click the Contact object from the list and then the Page Layouts menu. Select the layout on which you want to add Live Data, or the Contact Layout by default. In the top gray box, on the left-hand side, select Related Lists and then find the Live Data Contact Information object. Drag this object down and place it where you want it in relation to other related lists.

Add Live Data to Contact Layout

Click the wrench icon on the panel to define which fields to show in the panel. We recommend including, at a minimum: Live Data Contact Information Name, Current Company, Contact Title, Contact Title Level, Contact Email, Contact Email Status, and Job Start Date.

Expand the Buttons section and un-select all buttons.

Press OK on the dialog, and then Save in the top gray box to save the layout.

Creating a report of all Live Data records

Navigate to the Reports section in Salesforce and press the New Report button. Use the search bar to search for Live Data and select the Live Data Contact Information with Contact menu item and press Start Report. Add any combination of columns to the report to meet your needs -- a good basic default list of fields would be: Contact: First Name, Contact: Last Name, Live Data: Current Company Name, Live Data: Contact Title, Live Data: Contact Title Level, Live Data: Contact Email, Live Data: Job Start Date, Account: Name, Contact: Title.

If you want a report that only shows the records for which Live Data has detected an actual job change, you can filter on the field Job Change Detected Date being any date after the installation date of the integration. This will filter the report so that only those people with a new job are showing.

Name the report to your liking (e.g. Live Data Contact Updates) and press Save.

Advanced Topics

Salesforce custom object field descriptions

Field LabelField Description
Contact EmailThe current email address of this contact, if known
Contact Email StatusThe status of the email address. 'valid' denotes a valid email, 'catch-all' denotes a mail server that does not validate emails, and 'best-guess' denotes a likely email address that could not be positively confirmed.
Contact LinkedIn URLThe LinkedIn URL for this contact
Contact NameThe customer-provided name for this contact
Contact TitleThe current job title of this contact
Contact Title LevelThe inferred level of the current job, based on their title.
Contact Title FunctionThe inferred domain of the current job, based on their title.
Current Company DomainThe top-level domain name for the current company.
Current Company IndustryThe industry of the current company.
Current Company LinkedIn URLThe LinkedIn URL for this company
Current Company LocationThe geographic location of the company headquarters.
Current Company NameThe current company that employs this contact
Current Company SizeThe size of the current company.
Imported CompanyThe name of the company that this contact was imported with
Imported LinkedIn URLThe LinkedIn URL that this contact was imported with
Imported TitleThe job title this contact was imported with
Imported Title LevelThe inferred level of the title this contact was imported with.
Imported Title FunctionThe inferred domain of the title this contact was imported with.
Info Change DateThe last time (in UTC) Live Data updated any of this persons information on this ledger. A blank value indicates there has been no change from the imported data.
Job Change Detected DateThe last time (in UTC) Live Data updated this persons job on this ledger. A blank value indicates there has been no change from the imported data.
Job Start DateThe date that this person started at their current job

Creating a flag to send contacts to Live Data (optional) (Salesforce)

Optionally, you can create a flag on Contact objects to indicate whether or not the contact should be sent to Live Data. This will allow you to control which contacts are sent to Live Data. To do this, navigate to the Setup menu and the Object Manager page. Find and select the Contact object. Click the Fields & Relationships tab. Click the New button. Enter the following values:

  • Data Type - select the "Checkbox" option
  • Field Label - anything you want, recommend "Send to Live Data"
  • Default Value - either option, Checked is recommended
  • Field Name - use the default or set to something unique

Complete the new field wizard with values of your choosing for security and views.
Once completed, go back to the Fields and Relationships tab and select the field you just created. Locate the value of the API Name field. You will need this value in the next step.

Navigate to the application metadata settings via the Setup menu and the Custom Metadata Types menu option. Select Manage Settings for the LiveData application and select the Default settings you created in prior steps. Set the Contact Filter Method to Contact Filter and set the Contact Filter Value field to the API Name of the field created in the previous step. Press Save.

Now you can set that flag on contacts to indicate whether or not they should be sent to Live Data. If the flag is set to true, the contact will be sent to Live Data. If the flag is set to false, the contact will not be sent to Live Data.

After setting the flag on at least one contact, you can follow the steps above in the "Triggering/Testing the Integration" section to manually trigger the integration to sync contacts to Live Data.

Changing the sync schedule

🚧

Advanced Option

Generally speaking, there is no need to change the job schedule. The default schedule is sufficient for most use cases. Changing the schedule may require additional configuration.

By default, the integration creates Apex jobs on a schedule to sync with Live Data (both to send new SF contacts to Live Data and to receive job update data from Live Data) nightly at 11pm. This schedule can be modified, but the integration may need to be reconfigured. To modify the schedule, navigate to the Setup menu and the Apex Classes page and click on Schedule Apex. Click the New Schedule button. The following are the two class names that can be configured for Live Data:

  • LiveData_InitializeContactsBatch
  • LiveData_RetrieveUpdatesBatch

If the schedule is changed, you need to change a corresponding setting for the Live Data integration. As described above in the "Configure the custom app metadata" section, you need to edit the LiveData Settings custom metadata type. Set the Update Batch Schedule Window (Days) field to the currently configured duration + 1. For example, a nightly schedule should be set to 2. A weekly schedule should be set to 8.

Debugging a contact record

There is a field called Live Data Sync Status on the Contact object. This field is used to store the status of the last sync with Live Data.

List of Components installed

Pages

ActionComponent NameParent ObjectComponent TypeInstallation Notes
CreateLive DataVisualforce PageThis is a brand new component.

Code

ActionComponent NameParent ObjectComponent TypeInstallation Notes
CreateLive_Data_ControllerApex ClassThis is a brand new component.
CreateLive_Data_TestApex ClassThis is a brand new component.
CreateLive_Data_RetrieveUpdatesBatchApex ClassThis is a brand new component.
CreateLive_Data_UtilityApex ClassThis is a brand new component.
CreatePostInstallerApex ClassThis is a brand new component.
CreateLive_Data_InitializeContactsBatchApex ClassThis is a brand new component.

Objects

ActionComponent NameParent ObjectComponent TypeInstallation Notes
CreateLive Data Contact InformationCustom ObjectThis is a brand new component.
CreateLive Data SettingsCustom Metadata TypeThis is a brand new component.
CreateLiveData Advanced SettingCustom ObjectThis is a brand new component.

Permission Sets

ActionComponent NameParent ObjectComponent TypeInstallation Notes
CreateLive Data Admin Permission SetPermission SetThis is a brand new component.
CreateLive Data User Permission SetPermission SetThis is a brand new component.

Resources

ActionComponent NameParent ObjectComponent TypeInstallation Notes
CreateLive Data Settings LayoutLive_Data_Settings__mdtPage LayoutThis is a brand new component.
CreateLive Data Contact Information LayoutLive_Data_Contact_Information__cPage LayoutThis is a brand new component.

Fields

ActionComponent NameParent ObjectComponent TypeInstallation Notes
CreateContact TitleLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateContact Email StatusLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateCurrent Company DomainLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateCurrent Company LocationLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateContactLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateLive Data Org IdLive_Data_Settings__mdtCustom FieldThis is a brand new component.
CreateCurrent Company IndustryLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateImported Title FunctionLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateLive Data Sync StatusContactCustom FieldThis is a brand new component.
CreateJob Change Detected DateLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateCurrent Company SizeLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateImported CompanyLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateContact Filter MethodLive_Data_Settings__mdtCustom FieldThis is a brand new component.
CreateContact NameLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateLive Data Client IdLive_Data_Settings__mdtCustom FieldThis is a brand new component.
CreateLive Data Ledger IdLive_Data_Settings__mdtCustom FieldThis is a brand new component.
CreateContact Filter ValueLive_Data_Settings__mdtCustom FieldThis is a brand new component.
CreateCurrent Company NameLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateImported TitleLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateJob Start DateLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateLive Data Client SecretLive_Data_Settings__mdtCustom FieldThis is a brand new component.
CreateInfo Change DateLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateCurrent Company LinkedIn URLLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateContact Title LevelLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateImported Title LevelLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateContact EmailLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateContact LinkedIn URLLive_Data_Contact_Information__cCustom FieldThis is a brand new component.
CreateValueLive_Data_Advanced_Setting__cCustom FieldThis is a brand new component.
CreateContact Title FunctionLive_Data_Contact_Information__cCustom FieldThis is a brand new component.

Tabs

ActionComponent NameParent ObjectComponent TypeInstallation Notes
CreateLive DataTabThis is a brand new component.