Integrate analytics with Salesforce

  • Updated

This topic describes how to integrate Content Marketing Platform (CMP) with Salesforce. Salesforce is a cloud computing software as a service (SaaS) company that specializes in customer relationship management (CRM).

Integrating Salesforce into your CMP instance shows how your content influences closed-won opportunities in Salesforce. You can see Deals Influenced and Revenue Influenced metrics that correspond to the number of deals and amount of revenue that was related to Salesforce contacts who saw your content. Additionally, you can see which deals were influenced by each piece of content.

Set up Salesforce with CMP

For the analytics integration with Salesforce to fully work, integrate CMP with a marketing automation platform to capture lead data such as Eloqua, Marketo, or Pardot. See Integrate analytics with Eloqua or Integrate analytics with Marketo. If you use Pardot, then follow the steps below to integrate Salesforce and make sure to provide a Business Unit ID so that Pardot is also integrated.
  1.  In Salesforce, select Manage Users > Profiles and click New Profile.


  2. Select Read Only in Existing Profile and enter a Profile Name: Read Only - Password never expires


  3. Make sure that you enable Password Never Expires.


  4. Go to the Password Policies section to select Never Expires in User passwords expire in.


    Ensure that the profile has View All access to Accounts, Contacts, and Opportunities.


  5. Go to Administer > Manage Users > Users, and create a user in Salesforce with the Read Only - Password never expires profile.


  6. In Content Marketing Platform (CMP), go to your avatar > Salesforce.


  7. Click Add a Salesforce Account and log in with the username and password of the user. If your browser is already logged into Salesforce, then this action may happen automatically.


  8. Click Allow.


    The following message displays indicating a successful integration of your Salesforce account.


If you go to the user page of the newly authenticated user in Salesforce, Content Marketing Platform displays in OAuth Connected Apps and in Login History.

The Business Unit ID is used for Pardot integration. To use Pardot as the marketing automation system for ROI Analytics, Business Unit ID must be filled out. If you are not connecting to Pardot it should be left blank.

Frequently asked questions

How are deals and revenue influenced calculated?

For information on how ROI analytics is calculated and measured, see Measure ROI.

What are the requirements?

  1. A Marketo instance authenticated with CMP (see Integrating Marketo For Analytics) or an Eloqua instance authenticated with CMP and connected to Salesforce (see Integrating Eloqua with the CMP).
  2. The CMP JavaScript Snippet (see Installing JavaScript Snippet).

How does it work?

The first step is to authenticate a Salesforce user account with Salesforce’s OAuth2.0 integrations. CMP periodically synchronizes your Accounts, Contacts, Opportunities, Opportunity Contact Roles, Record Types, and Users to the system by making calls to Salesforce’s API on behalf of your authenticated user. CMP then relates your closed/won opportunities to contacts that have viewed content on your site and calculates the number of deals and amount of revenue influenced.

How does CMP know what content contacts have viewed?

If a Salesforce Contact exists in Marketo or Eloqua as a Lead or Contact, then they can be joined on the email address. CMP uses the web viewing history of Leads/Contacts to identify the content that Contacts in Salesforce have interacted with.

Is it a risk to give CMP access to my organization’s Salesforce instance?

No, because CMP never modifies any data in your Salesforce instance because the user has a Read Only profile. CMP does not store your Salesforce login credentials. Authentication happens through Salesforce’s OAuth2.0 Integration, which returns an access token that Optimizely Content Marketing Platform (CMP) uses to make requests to Salesforce’s API. Data that CMP stores is encrypted and only your organization in CMP has access to it.

Will CMP exceed my daily Salesforce instance API call quota?

This depends on your current daily API call usage. The maximum number of requests Salesforce allows per day is based on your Salesforce Edition and the number of licenses

CMP only makes requests for Opportunities and Contacts that are created or modified in the past day so this amounts to only a few API calls per day. CMP makes two requests to get IDs of created or modified contacts and opportunities and then two requests to get each set of objects for each page of data. This happens twice a day, so at minimum 8 API calls are made and the maximum would be however many Contact or Opportunity objects were created or modified per day divided by SFDC page size (which is 500). Upon initial ingestion, CMP can synchronize your Contacts and Opportunities in periodic batches to ensure that API call quotas are not exceeded.

What data does CMP store from Salesforce?

After CMP is authenticated, it fetches recently created or updated Salesforce Accounts, Contacts, Opportunities, Opportunity Contact Roles, Record Types and Users using the Salesforce REST API; see Execute a SOQL Query.

Account fields stored:

  • Id
  • IsDeleted
  • Name
  • ParentId
  • Website
  • LastModified
  • CreatedDate
  • AccountSource
  • RecordTypeId
  • CurrencyIsoCode
  • Industry

Contact fields stored:

  • Id
  • CreatedDate
  • Email
  • Name
  • AccountId
  • LeadSource

Opportunity fields stored:

  • Id
  • CreatedDate
  • Name
  • AccountId
  • Amount
  • CloseDate
  • IsClosed
  • IsDeleted
  • IsWon
  • Type
  • LeadSource
  • StageName
  • OwnerId
  • RecordTypeId

Opportunity Contact Role fields stored:

  • Id
  • ContactId
  • IsDeleted
  • IsPrimary
  • OpportunityId
  • Role
  • CreatedDate
  • LastModifiedDate

Record Type fields stored:

  • Id
  • CreatedDate
  • LastModifiedDate
  • Description
  • Name
  • IsActive
  • SObjectType

User fields stored:

  • Id
  • CreatedDate
  • LastModifiedDate
  • FirstName
  • LastName
  • Email
  • Name

How often does CMP request data from Salesforce?

CMP automatically fetches Accounts, Contacts, Opportunities, Opportunity Contact Roles, Record Types, and Users twice per day at 0400 and 1000 UTC for records that were created or updated the previous day.

What about historical data?

When the integration is set up, historical data from Accounts, Contacts, Opportunities, Opportunity Contact Roles, Record Types and Users from Salesforce must be manually back-filled by CMP through the API to have existing contacts so that if a known contact related to a Salesforce opportunity visits content published from CMP, they count towards ROI Analytics metrics. Otherwise, no contact record would exist in CMP and could not be counted towards ROI Analytics metrics.