Salesforce Source: Getting Started

PremiumThis feature is available on our Premium and Enterprise plans. Updated

The Salesforce source lets you send data from your CRM to destinations where you can activate it. For example, you can send Salesforce data to Customer.io where you can automatically message people—follow up with leads, message contacts when it’s time to renew their contracts, and so on. This makes Salesforce a part of your larger marketing stack without needing developers to write a complicated integration.

 Did you want to send data to Salesforce?

Check out our Salesforce Destination. With the Salesforce source and destination, you can set up a native, end-to-end integration.

Quick start video

Here’s a quick overview of the setup process for the Salesforce source. In this video, we set up a Salesforce source to send Contacts, Accounts, and relationships between the two to Customer.io.

Before you begin

Before you begin, you should ask yourself how you want to use your Salesforce data. The data that you send to Customer.io—as People, Events, Custom Objects, or Relationships between people and objects—may depend on what you want to do with your data in Customer.io and what destinationsA destination is a place that you want to send data from one or more sources to. You can use your own workspace as a destination; send data to another service; or send data to your data warehouse. you want to send it to. See Working with Salesforce Data for help mapping data.

Working with Salesforce data

Unlike Customer.io and other platforms, Salesforce doesn’t have generic concepts like People and Groups—or things that map easily to those terms. Instead, Salesforce has highly structured data: your leads, contacts, opportunities, accounts, and other things are all separate.

When you send Salesforce data to Customer.io, you’ll have to determine whether each type of data represents People, Events, Custom ObjectsNot to be confused with a JSON object, an object in Customer.io is a non-person entity that you can associate with one or more people—like a company, account, or online course. You can use objects to message people based on changes to their company, account, or course itinerary., or Relationships between people and objects. In most cases, this should be easy: contacts are people, because you’ll send them messages; an account is something many people are connected to, so it’s probably a custom object.

On this page, we recommend that you start with Contacts because they map to people. For other types of data, see Using Salesforce with Customer.io Journeys to learn more about using data with Customer.io specifically, or Mapping Salesforce data to destinations to learn more about mapping Salesforce data to other destinations.

flowchart LR a{Is it a contact?} a------>|yes|b(Person) a-.->|no|c{Is it associated
with >1 person?} c--->|yes|d(Custom
Object) c-.->|no|e{Does it have an
email or phone?} e-->|yes|b e-.->|maybe/no|h{Does it relate a
person to a group?} h-.->|no|f{Is it something people do?
Will it trigger messages?} h--->|yes|i(Relationship) f-->|yes|g(Event) f-.->|no|d

Prerequisites

To connect Salesforce to Customer.io, you need:

  1. A Salesforce Data Cloud (sometimes called Sales Cloud) account that is either:
    • At the Professional, Enterprise, level or higher.
    • Includes Web Services API access.
  2. A Salesforce user with access to the data you want to send from Salesforce to Data Pipelines. In general, we suggest that you set up a user specifically for your syncs, making it easy to limit the data Customer.io can access and control your integration independently of your day-to-day Salesforce users.

Set up your Salesforce source

When you set up your source, you’ll configure your first Sync—the type of data that you want send to one or more destinationsA destination is a place that you want to send data from one or more sources to. You can use your own workspace as a destination; send data to another service; or send data to your data warehouse.. We suggest that you start with Contacts because it’s the easiest, and most natural thing to map to most destinations, including Customer.io Journeys.

You’ll set up subsequent syncs after you finish configuring your source, where each sync brings in a different kind of data (leads, opportunities, and so on).

  1. Go to the tab and click Sources.

  2. Click Add Source, pick Salesforce, and click Next: Connect Salesforce.

  3. Set up your source connection:

    1. Give the source a friendly Name so you’ll recognize it in Customer.io.
    2. Set up your sync. See Scheduled syncs for more information.
    3. If you’re logging in with your Salesforce Sandbox account, you’ll need to enable the Sandbox setting to test your integration.
      setup your salesforce source
      setup your salesforce source
  4. Click Connect Salesforce and log into Salesforce. While you can login with any Salesforce user, you might want to login with an integration user—an account made specifically for this integration that helps you manage and limit the data available to Customer.io.

    When you’ve logged into Salesforce, click Create Sync.

  5. Create your first sync. This is a type of data that you send through your pipeline.

    Set up your first Salesforce sync
    Set up your first Salesforce sync

    1. Give your sync a Name—something that describes the data you’re importing and what you’re mapping it to.

    2. In the Sync dropdown, pick the kind of Salesforce record you want to send to Customer.io. Again, we suggest starting with Contacts.

    3. Click Edit next to Unique identifiers map your identifier—the field that uniquely identifies each person or object. If you’re using Contacts, pick the Contact ID as your Contact ID.

      Set your contact ID to map contact IDs to people
      Set your contact ID to map contact IDs to people

    4. Go to the Fields tab and pick the fields you want to capture in Customer.io. Salesforce contains a lot of data, not all of which is useful in Customer.io. For example, you don’t need the mailing latitude or longitude to send email.

      Set a user ID field and turn off fields you don't want to send through your pipeline
      Set a user ID field and turn off fields you don't want to send through your pipeline

    5. If your sync isn’t Contacts, check the Data Pipelines format. For popular Salesforce data types, we’ll set these fields for you. For example, if you’re sending Accounts, Data Pipelines Format is automatically set to Custom Object and the Custom Object Name is set to Accounts.

      Otherwise, these fields tell Customer.io how to interpret the data you send—whether your Salesforce data represents people, custom objectsNot to be confused with a JSON object, an object in Customer.io is a non-person entity that you can associate with one or more people—like a company, account, or online course. You can use objects to message people based on changes to their company, account, or course itinerary., or relationshipsThe connection between an object and a person in your workspace. You can trigger campaigns based on relationships. Relationships also have attributes you can reference using liquid.. The Custom Object Name is an attribute we store so you’ll know which Salesforce data type your Customer.io data originated from.

      Set the data pipelines format to tell us what kind of data you're sending
      Set the data pipelines format to tell us what kind of data you're sending

    6. Choose how often you want to sync data and when you want to start.

  6. Click Next: choose destinations and select the destinations you want to connect your Salesforce source to. The destinations you connect to might depend on how you model your data! See Mapping data to destinations for more information.

    Select the destinations you want to connect to your salesforce source
    Select the destinations you want to connect to your salesforce source

  7. If your Data Pipelines format is set to Custom Object or Relationship, you need to map them to a custom objectNot to be confused with a JSON object, an object in Customer.io is a non-person entity that you can associate with one or more people—like a company, account, or online course. You can use objects to message people based on changes to their company, account, or course itinerary. in Customer.io. In most cases, this is the same name as the Salesforce object you want to sync (or relate people to). If you’re mapping something like Accounts to Customer.io, and Accounts don’t already exist, click New Object Type and set the singular and plural forms—like Account and Accounts.

    Map your custom object to a destination
    Map your custom object to a destination

  8. Click Enable Salesforce.

You’re successfully set up your first sync! You’ve created a sync for one type of Salesforce data, but you may also want to create syncs for other kinds of data you want to import from Salesforce.

The Syncs tab will show the status of your sync and note that we’re processing your Salesforce data. If you go into , you should begin seeing your Salesforce data—though it may take a few minutes to populate all your people, especially if you have millions of records.

Set up additional syncs

During the initial setup you’ll create a single sync when you set up your Salesforce source. After that, you can set up additional syncs to import other kinds of data from Salesforce. To learn more about whether your data types are people, objects, or events, see Mapping Salesforce data to destinations.

  1. Go to your Salesforce source’s Syncs tab and click Add Sync.

  2. Give your sync a Name—something that describes the data you’re importing and what you’re mapping it to.

  3. Pick the kind of Salesforce record you want to send to Customer.io. If you’ve already synced contacts, you might want to sync the Accounts they’re connected to.

    Set up your first Salesforce sync
    Set up your first Salesforce sync

  4. Click Edit next to Unique identifiers map your identifier—the field that uniquely identifies each person or object. For Accounts, this is usually the Account ID.

  5. Go to the Fields tab and select the fields you want to capture for that data type and then click Save Changes.

    Set a user ID field and turn off fields you don't want to send through your pipeline
    Set a user ID field and turn off fields you don't want to send through your pipeline

  6. If your sync isn’t Contacts, check the Data Pipelines format. For popular Salesforce data types, we’ll set these fields for you. For example, if you’re sending Accounts, Data Pipelines Format is automatically set to Custom Object and the Custom Object Name is set to Accounts.

    Otherwise, these fields tell Customer.io how to interpret the data you send—whether your Salesforce data represents people, custom objectsNot to be confused with a JSON object, an object in Customer.io is a non-person entity that you can associate with one or more people—like a company, account, or online course. You can use objects to message people based on changes to their company, account, or course itinerary., or relationships. The Custom Object Name is an attribute we store so that you’ll know which Salesforce data type your Customer.io data originated from.

    Set the data pipelines format to tell us what kind of data you're sending
    Set the data pipelines format to tell us what kind of data you're sending

  7. Choose how often you want to sync data, when you want to start, and then click Configure Destinations.

  8. If your Data Pipelines format is set to Custom Object or Relationship, you need to map them to a custom objectNot to be confused with a JSON object, an object in Customer.io is a non-person entity that you can associate with one or more people—like a company, account, or online course. You can use objects to message people based on changes to their company, account, or course itinerary. in Customer.io. In most cases, this is the same name as the Salesforce object you want to sync (or relate people to). If you’re mapping something like Accounts to Customer.io, and Accounts don’t already exist, click New Object Type and set the singular and plural forms—like Account and Accounts.

    click new object type to create a new object
    click new object type to create a new object

  9. Click Enable Sync

When you finish setting up your sync, the Syncs tab will show the status of your new sync and note that we’re processing your Salesforce data. If you go into the Journeys tab , you should begin seeing your Salesforce data—though it may take a few minutes to populate all your people, especially if you have millions of records

What data is captured in each sync?

Your first sync captures all your current Salesforce data of the specified type. Subsequent syncs capture records that changed since the previous sync. This means that your first sync may take longer than subsequent syncs, as we gather all your Salesforce data with the initial sync.

For example, if you sync contacts, your first sync will send all of the current contacts in your Salesforce environment. The next sync will gather all changes to contacts—all your new contacts, updates, and deleted contacts—since the first sync.

 We handle deletions differently from create and update operations!

When you delete records in Salesforce, we send events to record the deleted items. Customer.io handles these events automatically. But you may need to set up actionsThe source event and data that triggers an API call to your destination. For example, an incoming identify event from your sources adds or updates a person in our Customer.io Journeys destination. to delete data in other destinations!

Updating syncs

When you update a sync to add or remove fields, your updates take affect at the next sync interval. This means that your changes don’t affect data that you’ve already sent from Salesforce (or any syncs in progress).

To update all data you’ve passed from Salesforce to Customer.io (and other destinations), you can Resync all data. This sends all of your corresponding Salesforce data through Data Pipelines again, updating all of your records with the changes you made to your sync.

On the Syncs tab, click next to the sync you updated and click Resync all data.

resync all data if you make changes to a sync
resync all data if you make changes to a sync

Manage access to Salesforce data with an “Integration User”

When you connect to Salesforce, you don’t need to use your own credentials. You can set up an Integration User in Salesforce with limited access to the data you want to send to Customer.io. This helps you secure and limit the data that you expose to Customer.io—both the types of data you can sync and the fields within each data type that Customer.io can access.

See Salesforce’s documentation for more about Integration Users.

End-to-end Salesforce integration

We support Salesforce as both a source (discussed on this page), and a destinationA destination is a place that you want to send data from one or more sources to. You can use your own workspace as a destination; send data to another service; or send data to your data warehouse.. This means you can set up an end-to-end integration.

For example, you might set up a round-trip integration, sending Salesforce data into Customer.io to nurture leads; and then send information about how your leads respond to messages back into Salesforce to determine whether your leads graduate into opportunities or not.

In this example, you’d connect Salesforce to Customer.io Journeys, and then Journeys Message Metrics back to Salesforce. See our end-to-end Salesforce integration recipe for more information.

a gif showing Salesforce connected to Customer.io Journeys and Journeys message metrics connected back to Salesforce
Copied to clipboard!
  Contents
Is this page helpful?