> ## 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.

# Create a Salesforce CRM Source

<Note>
  **Note:**

  Refer to [Source - Salesforce CRM](https://docs.zeotap.com/smart/project-collect-customer/source-salesforce-crm) to know more about this source.
</Note>

## Prerequisites

To proceed with Salesforce CRM creation, ensure that you adhere to the following points:

<Steps>
  <Step>
    Create an account in[Salesforce](https://www.salesforce.com/in/?ir=1). If you already have a paid Salesforce account, then you can use your account.
  </Step>

  <Step>
    If you do not have a paid account, then go to the [Salesforce Developer Edition](https://developer.salesforce.com/signup) and create a new developer account. Do not create a free trial account as sometimes you cannot enable the API for your Salesforce account using a free trial account.
  </Step>

  <Step>
    After logging into your account, create a Connected App. Refer to the later sections to know more about how to create a [connected app](/articles/integrate-customer/creating-salesforce-crm#h2__306222009), obtain the [authorisation code](/articles/integrate-customer/creating-salesforce-crm#h2_1577431657) and [refresh token](/articles/integrate-customer/creating-salesforce-crm#h2__1011498130).
  </Step>

  <Step>
    Also, ensure that you have the following information available with you:

    a. Consumer Key and Consumer Secret – Refer to [Connected Apps](/articles/integrate-customer/creating-salesforce-crm#h2__306222009) to know more.

    b. Refresh Token – Refer to [Refresh Token](/articles/integrate-customer/creating-salesforce-crm#h2__1011498130) to know more.

    c. Domain – This is the URL using which you log into your Salesforce account. That is - `https://zeotap--devops.my.salesforce.com/`. In the URL, the part before `.my.salesforce.com/(zeotap--devops)`, is your Domain.

    d. Callback URL – The Callback URL is `https://login.salesforce.com`. Refer to [Connected Apps](/articles/integrate-customer/creating-salesforce-crm#h2__306222009) to know more.
  </Step>
</Steps>

### How to Create a Connected App

Perform the following steps to create a Connected App:

<Steps>
  <Step>
    Log in to Salesforce as an Administrator.
  </Step>

  <Step>
    From the account drop-down list appearing in the top-right corner, click **Setup**.
  </Step>

  <Step>
    In the left-hand pane, go to **Apps** > **App Manage** **r**.
  </Step>

  <Step>
    Click **New Connected App** in the top-right corner.
  </Step>

  <Step>
    On the **New Connected App** page, enter the following required fields under **Basic Information**:
    a. **Connected App Name**

    b. **API Name**

    c. **Contact Email**
  </Step>

  <Step>
    Go to **API (Enable OAuth Settings)** and select **Enable OAuth Settings**.

    a. In the **Callback URL** field, enter **[https://login.salesforce.com/](https://login.salesforce.com/)**.

    b. In the **Selected OAuth Scopes** field, select the following options:

    i. **A** **ccess and manage your data (api)**

    ii. **Perform requests on your behalf at any time (refresh\_token, offline\_access)**

    iii. **Provide access to your data via the Web (web)**

    c. Click **Add.**
  </Step>

  <Step>
    Click **Save** to save the changes for the new Connected App.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xGzkHY-dcQy5tLit/articles/integrate-customer/Storage/integrate-customer/Create_a%20_Connected_App.png?fit=max&auto=format&n=xGzkHY-dcQy5tLit&q=85&s=4f1ac2674dd6b775eb2b3be0ba37e979" width="3054" height="824" data-path="articles/integrate-customer/Storage/integrate-customer/Create_a _Connected_App.png" />
    </Frame>
  </Step>
</Steps>

### How to Manage a Connected App

In the **Connected Apps (Apps > App Manager)** list, perform the following steps to manage the App:

<Steps>
  <Step>
    Find the App that you just created and then click **Manag** **e**.
  </Step>

  <Step>
    On the page that opens, click **Edit**.
  </Step>

  <Step>
    Under **OAuth Policies**, make the following selections:

    a. In the **Permitted Users** drop-down list, select **All users may self-authorize**.

    b. For **Refresh Token Polic** **y**, select the **Refresh Token is valid until revoked option**.
  </Step>

  <Step>
    Save the changes.

    <Frame>
      <img src="https://mintcdn.com/zeotap/5K-Zf-MYwWXwJWp5/articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/Manage_a_Connected_App-1_(1).png?fit=max&auto=format&n=5K-Zf-MYwWXwJWp5&q=85&s=f8be21a1c0bc2e7e106d8504e08baec4" width="3042" height="344" data-path="articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/Manage_a_Connected_App-1_(1).png" />
    </Frame>
  </Step>

  <Step>
    Go back to the **Connected Apps (Apps > App Manager)** list.
  </Step>

  <Step>
    Click the App that you just created and then click **View**.
  </Step>

  <Step>
    Go to the **API (Enable OAuth Settings)** section and note down the **Consumer Key** and **Consumer Secret**. These two details are required while creating the Salesforce CRM source in the Zeotap CDP App.

    <Frame>
      <img src="https://mintcdn.com/zeotap/5K-Zf-MYwWXwJWp5/articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/Manage_a_Connected_App-2_(1).png?fit=max&auto=format&n=5K-Zf-MYwWXwJWp5&q=85&s=bda20d6544ade053745818d215b483a0" width="2716" height="392" data-path="articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/Manage_a_Connected_App-2_(1).png" />
    </Frame>
  </Step>
</Steps>

### How to Obtain the Authorisation Code

Perform the following steps to obtain the authorisation code from Salesforce:

<Steps>
  <Step>
    Log in to Salesforce as an Administrator.
  </Step>

  <Step>
    Enter the request URL mentioned below in a new tab to get the code.

    i. Replace `CONSUMER_KEY>` with the Consumer Key that you obtained from the above section.

    ii. Replace `YOUR_DOMAIN>` with your domain name.

    ```bash Code theme={null}
    https://<YOUR_DOMAIN>.my.salesforce.com/services/oauth2/authorize?response_type=code&client_id=<CONSUMER_KEY>&redirect_uri=https://login.salesforce.com/
    ```
  </Step>

  <Step>
    Allow access to alert pop-ups if any. Your browser is redirected to a URL as this -

    ```bash Code theme={null}
    https://login.salesforce.com/?code=aPrxYXyxzkuBzbDGdwv67qekAQredtrsWqty38LsdhfREyTRbvdjvTqdbvxPVC__4Cb9xGKDGErtOw%3D%3D
    ```
  </Step>

  <Step>
    Obtain the authorisation code from the query string -

    `aPrxYXyxzkuBzbDGdwv67qekAQredtrsWqty38LsdhfREyTRbvdjvTqdbvxPVC__4Cb9xGKDGErtOw%3D%3D`

    <Frame>
      <img src="https://mintcdn.com/zeotap/5K-Zf-MYwWXwJWp5/articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/Obtain_the_Authorisation_Code_(1).png?fit=max&auto=format&n=5K-Zf-MYwWXwJWp5&q=85&s=f53e32fb0de2f18563c1733d1ce2cbec" width="3064" height="372" data-path="articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/Obtain_the_Authorisation_Code_(1).png" />
    </Frame>
  </Step>
</Steps>

### How to Obtain Refresh Token

Perform the following steps to obtain the refresh token:

<Steps>
  <Step>
    Hit the curl request mentioned below to obtain the refresh token. You can use the Postman client to import the below curl and hit the request.

    a. Replace `<YOUR_DOMAIN>` with your domain.

    b. Replace `<AUTHORISATION_CODE>` with the authorisation code that you obtained from the above section.

    c. Replace `<CONSUMER_KEY>` and `<CONSUMER_SECRET<>` with the keys that you obtained while creating the Connected App.

    ```bash Code theme={null}
    curl --request POST 'https://<YOUR_DOMAIN>.my.salesforce.com/services/oauth2/token?code=<AUTHORISATION_CODE>&grant_type=authorization_code&client_id=<CONSUMER_KEY>&client_secret=<CONSUMER_SECRET>&redirect_uri=https://login.salesforce.com/'
    ```
  </Step>

  <Step>
    You can obtain the `refresh_token` from the response mentioned below.

    ```json Code theme={null}
    {
    "access_token":"00D2v000001XKxi__SOMETHING",
    "refresh_token":"5Aep861dlMxAL.LhVTuPRa__SOMETHING",
    "signature":"MK/YGMNQhPSSnKtYicXlaU__SOMETHING",
    "scope":"refresh_token web api",
    "instance_url":"https://ap15.salesforce.com",
    "id":"https://login.salesforce.com/id/00D2vKxiEAG/0045Q09vAAL",
    "token_type":"Bearer",
    "issued_at":"1570030000198"
    }
    ```
  </Step>
</Steps>

### Troubleshooting Errors

While sending a request to the Salesforce API using the above credentials, you may encounter a few errors. This section provides a brief explanation of these errors and a resolution for them.

#### Error

`‘REST API is not enabled for this Organization’ Issue`

#### Description

The error denotes that the rest API is not enabled for this organization.

#### Resolution

Perform the following steps to resolve this error:

<Steps>
  <Step>
    Click **Setup** on the top-right corner.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xGzkHY-dcQy5tLit/articles/integrate-customer/Storage/integrate-customer/Errors_Encountered-1_(1).png?fit=max&auto=format&n=xGzkHY-dcQy5tLit&q=85&s=df8d8d2fdd407674df5c307cceef3231" width="2366" height="1574" data-path="articles/integrate-customer/Storage/integrate-customer/Errors_Encountered-1_(1).png" />
    </Frame>
  </Step>

  <Step>
    Navigate to **ADMINISTRATION > Manage Users** and click **Profiles**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xGzkHY-dcQy5tLit/articles/integrate-customer/Storage/integrate-customer/Errors_Encountered-2_(1).png?fit=max&auto=format&n=xGzkHY-dcQy5tLit&q=85&s=8c857af23e0c1d09d7b5cfa74264eb02" width="1874" height="1418" data-path="articles/integrate-customer/Storage/integrate-customer/Errors_Encountered-2_(1).png" />
    </Frame>
  </Step>

  <Step>
    Click **Edit** for the specific profile that you want to update.
  </Step>

  <Step>
    Under the **Administrative Permissions** section, select the **API Enabled** checkbox.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xGzkHY-dcQy5tLit/articles/integrate-customer/Storage/integrate-customer/Errors_Encountered-3_(1).png?fit=max&auto=format&n=xGzkHY-dcQy5tLit&q=85&s=eeae13d3e8dbdf6b6f3a99d850b2748d" width="1828" height="652" data-path="articles/integrate-customer/Storage/integrate-customer/Errors_Encountered-3_(1).png" />
    </Frame>
  </Step>

  <Step>
    Scroll to the bottom of the page and click **Save** to save your changes.
  </Step>
</Steps>

## Create a Salesforce CRM Source

Perform the following steps to create a Salesforce CRM Source in the Zeotap CDP App:

<Steps>
  <Step>
    Navigate to the Sources application in the Zeotap CDP App.
  </Step>

  <Step>
    Click **CREATE SOURCE**.
  </Step>

  <Step>
    Choose **CRM Data** as the **Category**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/5K-Zf-MYwWXwJWp5/articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/create_salesforce_1_(1).png?fit=max&auto=format&n=5K-Zf-MYwWXwJWp5&q=85&s=388421943bae89eaef3119eecbb90159" width="3554" height="1974" data-path="articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/create_salesforce_1_(1).png" />
    </Frame>
  </Step>

  <Step>
    Click **Salesforce CRM** at the **Data Source**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/5K-Zf-MYwWXwJWp5/articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/creating-salesforce-crm-2024-09-19.png?fit=max&auto=format&n=5K-Zf-MYwWXwJWp5&q=85&s=e42aaf3e325ea63dd0259b75123d5f22" width="3574" height="1784" data-path="articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/creating-salesforce-crm-2024-09-19.png" />
    </Frame>
  </Step>

  <Step>
    Enter a short and descriptive name for the Source.
  </Step>

  <Step>
    Select the Region of upload.
  </Step>

  <Step>
    Choose the desired Sync Frequency from the drop-down list. The first sync takes place once you create the source. However, the subsequent syncs take place based on the sysc frequency you selected. Currently, we support the following sync frequencies

    a. Sync once

    b. Every hour

    c. Every 3 hours

    d. Every 6 hours

    e. Every 12 hours,

    f. Daily

    g. Weekly

    h. Monthly

    i. **Sync Time**- When you choose **Daily**, **Weekly**, or **Monthly** as the sync frequency, you can specify the exact time for the sync to occur.

    ii. **Sync Period**- Indicates whether the selected **Sync Time** is in the **AM** or **PM**.

    iii. **Monthly Sync date**- If **Monthly** sync is selected, you can specify the **day of the month** on which the sync should run.
  </Step>

  <Step>
    Enter the **Client ID**. This is the Consumer Key mentioned under [Create a Connected App](/articles/integrate-customer/creating-salesforce-crm#h2__306222009).
  </Step>

  <Step>
    Enter the **Client Secret**. This is the Consumer Secret mentioned under [Create a Connected App](/articles/integrate-customer/creating-salesforce-crm#h2__306222009).
  </Step>

  <Step>
    Enter the **Refresh Token** as mentioned under [Obtain the Refresh Token](/articles/integrate-customer/creating-salesforce-crm#h2__588064718).
  </Step>

  <Step>
    Enter the **Domain**.
  </Step>

  <Step>
    Under **Data Entity**, depending on the type of data you want to ingest, choose either **Customer Data** or **Non Customer Data** and proceed with the Source creation. To know more about Customer Data and Non Customer Data, refer [here](https://docs.zeotap.com/articles/unify-customer/supported-data-entities).
  </Step>

  <Step>
    Under **Fetch Mode**, select either **Full** or **Delta**based on the requirement.

    a. **Full** - Receives all available data during the initial fetch and thereafter consistently fetches data as per the sync frequency configured.

    b. **Delta** - Receives all available data during the initial fetch and thereafter exclusively gathers incremental updates (deltas) as per the sync frequency configures.

    <Frame>
      <img src="https://mintcdn.com/zeotap/5K-Zf-MYwWXwJWp5/articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/creating-salesforce-crm-2025-09-10-3.png?fit=max&auto=format&n=5K-Zf-MYwWXwJWp5&q=85&s=4bf4010b8ca313ede95554c33cd6231b" width="1424" height="1232" data-path="articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/creating-salesforce-crm-2025-09-10-3.png" />
    </Frame>
  </Step>

  <Step>
    Choose from the dropdown what **Record Type** you want to ingest:

    a. **Active Records** — All non-deleted records.

    b. **Deleted Records** — All deleted records.

    c. **All Records** — All records.
  </Step>

  <Step>
    If you want to add custom Relationship fields, set the **Custom Fields** checkbox to **true** and enter the Relationship fields you want to ingest in the text box that appears.

    <Frame>
      <img src="https://mintcdn.com/zeotap/5jqEMeXCr_Lmm-mS/articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/creating-salesforce-crm-record-type-custom-fields.png?fit=max&auto=format&n=5jqEMeXCr_Lmm-mS&q=85&s=f2db12339ee65534cff9994577526187" width="1356" height="502" data-path="articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/creating-salesforce-crm-record-type-custom-fields.png" />
    </Frame>

    <Note>
      **Note:**

      The relationship fields must be related to the object you are ingesting — otherwise the query will not work.

      The relationship fields must be added in the same format as they are used in a query. For example: `Owner.Name, Parent.Name` for the Account object.
    </Note>
  </Step>

  <Step>
    Choose the appropriate **Salesforce Object**. We automatically fetch all the standard and custom salesforce objects created in your Salesforce account.

    <Frame>
      <img src="https://mintcdn.com/zeotap/5K-Zf-MYwWXwJWp5/articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/creating-salesforce-crm-2025-09-10.png?fit=max&auto=format&n=5K-Zf-MYwWXwJWp5&q=85&s=0e442b1f2d1a1a98a3b8e351b363183d" width="660" height="574" data-path="articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/creating-salesforce-crm-2025-09-10.png" />
    </Frame>

    <Frame>
      <img src="https://mintcdn.com/zeotap/5K-Zf-MYwWXwJWp5/articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/creating-salesforce-crm-2025-09-10-2.png?fit=max&auto=format&n=5K-Zf-MYwWXwJWp5&q=85&s=1d37e15c7ce36953ff45cf51149b3f5e" width="1076" height="588" data-path="articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/creating-salesforce-crm-2025-09-10-2.png" />
    </Frame>
  </Step>

  <Step>
    Click **Next** to proceed to fields selection.
  </Step>

  <Step>
    In the window that appears, based on the Object selected in the previous step, a list of fields are displayed. You can select the desired fields using the check boxes. Use **Select All**to select all the fields available for that Object in your Salesforce account. If you know the field names, you can select them after searching in the search box.

    <Frame>
      <img src="https://mintcdn.com/zeotap/5K-Zf-MYwWXwJWp5/articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/creating-salesforce-crm-2024-07-02-2.png?fit=max&auto=format&n=5K-Zf-MYwWXwJWp5&q=85&s=3982bb12d54022564c8b89e1008f8f92" width="2994" height="1614" data-path="articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/creating-salesforce-crm-2024-07-02-2.png" />
    </Frame>

    <Note>
      **Note:**

      *Ensure that you consider the following points while choosing the fields in the above step:*

      * *Currently, editing the field selection after source creation is not allowed. If you wish to do so, then you need to create a new source in Zeotap CDP.*
      * *Zeotap CDP does not support the following compound fields (nested objects) and choosing them during source creation might cause ingestion failure:*
        * `PersonMailingAddress `
        * `PersonOtherAddress`
        * `ShippingAddress`
        * `BillingAddress`
        * `Address`
        * `MailingAddress`
        * `OtherAddress`
        * `Subject`
        * `Description`
        * `Comments`
    </Note>
  </Step>

  <Step>
    Review the selected fields and click **CREATE SOURCE**. The created Salesforce CRM source is listed on the source listing page as shown below.

    <Frame>
      <img src="https://mintcdn.com/zeotap/5K-Zf-MYwWXwJWp5/articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/SF_CRM.png?fit=max&auto=format&n=5K-Zf-MYwWXwJWp5&q=85&s=2f3453fe1221ca08be261e4978892fc7" width="1473" height="724" data-path="articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/SF_CRM.png" />
    </Frame>
  </Step>

  <Step>
    In the **IMPLEMENTATION DETAILS** tab of the source, you can find details about the source and the selected fields for the Object.

    <Frame>
      <img src="https://mintcdn.com/zeotap/5K-Zf-MYwWXwJWp5/articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/creating-salesforce-crm-2024-07-02-3.png?fit=max&auto=format&n=5K-Zf-MYwWXwJWp5&q=85&s=56b5e0171066ed908a4ad39d7b28a059" width="3514" height="1734" data-path="articles/integrate-customer/Storage/integrate-customer/creating-salesforce-crm/creating-salesforce-crm-2024-07-02-3.png" />
    </Frame>
  </Step>
</Steps>

## What Next?

If you want to edit the field selection at this stage, then you need to create a new source in Zeotap CDP. For further assistance or queries related to Salesforce CRM source creation, reach out to your Zeotap POC.

## Related Topics

* For information about what is a Customer Data, refer [here](https://docs.zeotap.com/articles/unify-customer/customer-data).
* For information about how to map the Catalogue for Customer Data (CE), refer [here](https://docs.zeotap.com/articles/unify-customer/map-the-catalogue-for-customer-data).
