As I mentioned in my first post in this series, integrating Sitecore and Salesforce can be broken down into three main options: Custom build your integrations, use the Sitecore Connect connectors (additional licensing costs) to either Salesforce CRM or Marketing Cloud (discussed here), or pay for and implement the robust FuseIT S4S connector. Understanding which connectors do what, and when they should be used, versus building something from scratch via the Salesforce and Sitecore APIs, is important to understand so you can choose the option best suited for you.

Sitecore Connect

There are two connectors provided by Sitecore for connecting to two different Salesforce products:

  1. Sitecore Connect software for Salesforce CRM: Collect and connect bi-directional syncing of data between Salesforce CRM and Sitecore Experience Platform. This has existed for some time but continues to be enhanced.
  2. Sitecore Connect for Salesforce Marketing Cloud: Build comprehensive Marketing campaigns with Sitecore content connecting to Salesforce Marketing Cloud's Journey Builder and Email Studio. This is the one that was announced and released in Q4 of 2017.

** Note that Sitecore has recently (Aug 2018) released updates to these connectors and to use them, it will now require an annual cost that you should discuss with your Sitecore Sales Rep.

Sitecore Connect software for Salesforce CRM
"Leverage comprehensive collection of data, allowing for faster analysis and implementation"

This connector is pre-configured to synchronize certain contact data, but it also allows for other default and custom data. It is primarily for passing data between Sitecore and Salesforce Sales Cloud for Contacts, Salesforce Tasks, Sitecore Interactions, and Salesforce Email Tasks.

Originally Sitecore released the idea of CRM Connect, which is a suite of products that integrate CRM systems with the Sitecore platform, including both Salesforce (Salesforce Connect 2.0.1) and Microsoft Dynamics (Dynamics CRM Connect 2.0.1).

But with a stronger partnership with Salesforce coming to fruition, Sitecore appears to now be grouping the Salesforce products together more prominently, licensing them, and essentially redirects you from Salesforce Connect 2.0.1 to Sitecore Connect for Salesforce 2.0.1. It is the same conceptually as it was before, just presented differently. As of this writing, the last revision of this connector was from January 11, 2018.

When installing this connector, it requires a lot of Sitecore packages:

  • Data Exchange Framework 2.0.1
  • Sitecore Provider for DEF
  • xConnect Provider for DEF
  • Salesforce Provider for DEF
  • Connect for Salesforce 2.0.1

Configuration in both platforms seems pretty straightforward and per the above package list, this leverages the Sitecore Data Exchange Framework. Familiarity with this framework will be helpful in using this connector.

First in the Salesforce Classic interface, you need to add a new Connected app (Sitecore Data Exchange App) with enabled Oauth, API Scope, and Secret. Additionally you have to add custom fields to the Contact and Activity objects to store the Sitecore Id.

Then in Sitecore, a collection model has to be deployed for new Contact/Interaction facets for the Salesforce info that would come over. The User Id, Password, Security token for a Salesforce user, as well as a Client ID and Secret Key for the new Connected app, will be set in a new connection string for Salesforce in the Sitecore connection strings config file. The Data Exchange Framework will then be configured with updates for a Salesforce tenant, SF client endpoint and enablement of the Sitecore Id field if writing contact data from Sitecore to Salesforce.

To get into the weeds a bit, these are the actual fields that are mapped:

  • SF <-> Sitecore Contact:
    • Address Info, Consent Opt Out, Email, Birthdate, Name, Title, Salutation, Phone, SF CreateDate, SF Description, SF CampaignIDs, Contact ID, ID type, Sitecore ID
  • SF Tasks <-> Sitecore Interaction
    • Interaction ID, Description, Date, Priority, Status, Subject
    • Call Event, Email Event, Task Event
    • Each task in SF is represented in Sitecore by an Interaction, the interaction has an event associated with it that stores the details of the task
  • SF Email Task <-> EXM Email Message / Sitecore Interaction
    • When EXM is used to send an email message to a contact, an interaction is created for the contact and an email message event is added to that interaction. This email message event is mapped to a task in SF.
    • Task in SF will be made up of data from Contact, Interaction, Message in Sitecore
  • Custom Contact Data
    • There is documentation on how to program creating a custom facet and collection, read from SF Contact, and write to the Contact Facet, and Map it.

Sitecore Connect for Salesforce Marketing Cloud
"Plan, personalize, and optimize one-to-one customer interactions with content and campaigns"

This connector is still pretty new and therefore its capabilities are limited. Currently it pushes Sitecore media item structures to corresponding asset structures in Salesforce. Essentially this enables marketers in Salesforce to use Sitecore media (eg: images and documents) in the Salesforce Marketing Cloud Journey Builder and Email Studio. Potential enhancements may include pushing additional types of content to Salesforce, bi-directional synchronization of behavioral data, triggering Salesforce actions by Sitecore marketing automation, and use of Sitecore personalization rules within Salesforce.

As of this writing, the last revision of this connector was from June 18, 2018.

This is a Single Direction connector from Sitecore into Salesforce. When a Sitecore media item is updated, it updates the mapped item in Salesforce. Assets and Categories in Salesforce will be read-only, and only admins can delete them.

This leverages the Salesforce Marketing Cloud API and from the Salesforce side, you must configure an API integration component with permissions for Read/Write to Assets and Content and the ability to Write Tags.

The only Sitecore package that needs to be installed is the Salesforce Marketing Cloud 1.0 package. Connection Strings are added to the connection string config file for Client Id and Client Secret. In System Settings, you will create a SFMC configuration item, where you will specify the root of the Media Library that will be used for syncing the media assets.

To get into the weeds a bit more on this one, the root category will be created in Salesforce automatically and it will push all Media items within it. The Media item structure will be preserved in Salesforce, mapping to Categories and Assets. A Sitecore event handler will listen for any kind of create/update/delete within this root location. There is also the ability to do a manual push via a button in the Sitecore Developer tab.

In regards to each individual media item, only the latest version of the media item will be in Salesforce. There will be a separate Asset for each language version. The alt field will be Asset metadata. And all will be created with a 'Sitecore' tag.

Important limitations within this connector are as follows: only file types that are supported by Salesforce will be pushed in, the file size can't exceed 3 MB, and item clones are not supported.

Sitecore Connect for Salesforce is just one way to integrate with Saleforce. I've compartmentalized each Salesforce integration option into its own post for easier consumption. To read more about Custom Integrations to Salesforce, click here. To read more about FuseIT S4S Connector, click here.  For a summary or cheat sheet of what connector option might be right for you, click here.