> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zeotap.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Salesforce CRM Real Time Integration

## Overview

Salesforce CRM is a top cloud-based platform that streamlines customer interactions. It centralizes customer data, allowing sales, service, and marketing teams to manage leads, track opportunities, and automate campaigns. This unified approach strengthens relationships, boosts satisfaction, and drives growth through tools for lead management, analytics, and personalized experiences. This integration with Zeotap enables you to send **Contact records or custom-object records** to Salesforce CRM in real time.

## Pre requisites

Before using this destination, you must have the following:

1. **Salesforce Organization**: Active Salesforce org (Developer, Sandbox, or Production). <br />

   a. The org's unique domain name can be found in **Setup > My Domain**.
2. **API User**: A Salesforce user with API access permissions and appropriate object-level **(Read, Create, Edit)** and field-level security. You log in as this user when connecting the destination.
3. **External ID Field**: The target sObject must have an **external ID field** configured for upsert operations. <br />

   a. This is a custom field you create on the target object. **Navigate to Setup > Object Manager > your object > Fields & Relationships > New**, create the field, and ensure the **"External ID"** attribute is checked. For custom objects, you enter this field's name in the mapping.

## Creating a Destination

<Steps>
  <Step>
    Log into the **Zeotap CDP** App and go to the **DESTINATIONS** application.
  </Step>

  <Step>
    Click **+ Create Destination**.
  </Step>

  <Step>
    Under **All Destinations**, search for **Salesforce CRM : Journeys**.
  </Step>

  <Step>
    Click on **Salesforce CRM : Journeys**. A screen appears displaying details about the particular destination towards the left. On the right-hand side of the screen, enter the required details:

    a. Enter a name for the Destination. <br /><br />
    b. Enter the **Domain Name** — your Salesforce domain, excluding the domain suffix. For example, for `zeotap6-dev-ed.develop.my.salesforce.com`, enter `zeotap6-dev-ed.develop`. <br /><br />
    c. Enter the **Destination Instance**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/d2txhFo8GBrXwocm/articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-1.png?fit=max&auto=format&n=d2txhFo8GBrXwocm&q=85&s=5637ab11087cf7bc11774a98dbb429da" alt="" width="1600" height="923" data-path="articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-1.png" />
    </Frame>
  </Step>

  <Step>
    Click **Connect Salesforce CRM : Journeys** and log in with your Salesforce API user when prompted. Ensure this user has the necessary permissions (including API access) to read and update the records (e.g., Contacts, custom objects) used in this destination.

    Once connected, the form confirms who established the connection, shows a note with the date on which the refresh token expires, and auto-fills the **Expires In** field. Reconnect the destination when the refresh token expires to keep the integration running.

    <Frame>
      <img src="https://mintcdn.com/zeotap/d2txhFo8GBrXwocm/articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-6.png?fit=max&auto=format&n=d2txhFo8GBrXwocm&q=85&s=ca2fc2655b41904dcfaaf8be879c0950" alt="" width="1600" height="923" data-path="articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-6.png" />
    </Frame>

    Click **Next** to proceed to the Mapping screen.
  </Step>

  <Step>
    Under **Choose your Action**, select the action that matches what you want to send. This destination supports two actions:

    <Frame>
      <img src="https://mintcdn.com/zeotap/d2txhFo8GBrXwocm/articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-7.png?fit=max&auto=format&n=d2txhFo8GBrXwocm&q=85&s=50161901dd69c784405ed60d2fcffcd3" alt="" width="1600" height="923" data-path="articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-7.png" />
    </Frame>

    * **Send Contact Data to Salesforce CRM** — upserts Contact records.
    * **Send Custom Objects to Salesforce CRM** — upserts records of any custom object in your org.
  </Step>

  <Step>
    **If you chose Send Contact Data to Salesforce CRM**, map the fields to send under **Map the Fields**:

    a. By default, the fields accepted by the platform, such as **Last Name, First Name, Email and Phone**, are displayed. However, you can edit, add, or remove a field from the list.<br /><br />
    b. Mandatory Fields

    1. **Last Name**
    2. **Email**

    c. Click **+Add Mapping Field** to include additional fields. For a complete reference, see the [List of Supported Fields](https://developer.salesforce.com/docs/atlas.en-us.sfFieldRef.meta/sfFieldRef/salesforce_field_reference_Contact.htm).

    <Frame>
      <img src="https://mintcdn.com/zeotap/d2txhFo8GBrXwocm/articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-2.png?fit=max&auto=format&n=d2txhFo8GBrXwocm&q=85&s=9cbfadd5d4b25fd61c2e256a1f9c2243" alt="" width="1600" height="923" data-path="articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-2.png" />
    </Frame>
  </Step>

  <Step>
    **If you chose Send Custom Objects to Salesforce CRM**, configure the mapping as follows:

    a. Map a Catalogue attribute to **Unique ID**. This is mandatory — its value is matched against the external ID field on your custom object to upsert the record.<br /><br />
    b. Click **+Add Mapping Field** to add each field you want to send, entering the field's name on the destination side and mapping a Catalogue attribute to it.<br /><br />
    c. Under **Additional Settings**, enter the **Custom Object Name** — the object's API name (e.g., `Loyalty_Event__c`) — and the **External ID Field** — the API name of the external ID field on that object.

    <Frame>
      <img src="https://mintcdn.com/zeotap/d2txhFo8GBrXwocm/articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-8.png?fit=max&auto=format&n=d2txhFo8GBrXwocm&q=85&s=674c70fc08d3d1ff96b55d69a55c857b" alt="" width="1600" height="923" data-path="articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-8.png" />
    </Frame>

    <Note>
      Both values in **Additional Settings** come from Salesforce: find the object's API name in **Setup > Object Manager**, and the external ID field's API name under that object's **Fields & Relationships**.
    </Note>
  </Step>

  <Step>
    Click **Save Mapping.**
  </Step>
</Steps>

## Activate the Destination on Journeys

After creating a destination, next, you need to link it in the Send to Destination node within the workflow, as explained below.

<Steps>
  <Step>
    In the workflow, **click + and choose Send to Destinations.**

    <Frame>
      <img src="https://mintcdn.com/zeotap/4xl9wnXlFu0GG8Va/articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-3.png?fit=max&auto=format&n=4xl9wnXlFu0GG8Va&q=85&s=f40b618b914e91cb74c2fd5add1e4826" alt="" width="1032" height="542" data-path="articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-3.png" />
    </Frame>
  </Step>

  <Step>
    Choose the destination from the list of available destinations by using the search feature.

    <Frame>
      <img src="https://mintcdn.com/zeotap/4xl9wnXlFu0GG8Va/articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-4.png?fit=max&auto=format&n=4xl9wnXlFu0GG8Va&q=85&s=85ff9945dcb376688c41160f539d1ca4" alt="" width="1600" height="891" data-path="articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-4.png" />
    </Frame>
  </Step>

  <Step>
    Under the Destination Details tab, the connection details you entered while creating the destination are **automatically populated**.
  </Step>

  <Step>
    Under the Destination Settings tab, **choose the Action and mapping** as per your requirement.
  </Step>

  <Step>
    Upon clicking **Save Destination**. The destination is attached as shown in the image below.

    <Frame>
      <img src="https://mintcdn.com/zeotap/4xl9wnXlFu0GG8Va/articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-5.png?fit=max&auto=format&n=4xl9wnXlFu0GG8Va&q=85&s=cb62185f160fc43da1cfcb372bd60d12" alt="" width="1584" height="1128" data-path="articles/integrate-customer/Storage/integrate-customer/salesforce-crm-real-time-integration/salesforce-crm-real-time-integration-5.png" />
    </Frame>
  </Step>
</Steps>
