> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.fincome.co/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Enrich your data with Salesforce

Connect Salesforce to Fincome in a few clicks and unlock the full potential of your customer data. By enriching your Fincome dimensions with Salesforce properties, you get more detailed information, better segmentation, and more powerful analyses, all from a single, unified CRM source.

You thus improve your decision-making thanks to data that is automatically enriched and kept up to date, for a finer, more actionable reading of your customer base.

# Prerequisites

Before starting, make sure the following conditions are met:

###### You have the necessary permissions in Salesforce to:
* Access **Setup** and create an **External Client App**
* View the Salesforce CRM objects you want to sync (e.g.: **Accounts**)

###### Your Salesforce organization allows OAuth 2.0 authentication

---

# Step-by-step guide: connecting Salesforce to Fincome

Connecting Salesforce to Fincome requires two phases:
1. **In Salesforce** – create an External Client App (ECA) to obtain the OAuth credentials.
2. **In Fincome** – configure the enrichment source with these credentials.

### Phase 1 – Create an External Client App in Salesforce
###### Step 1 – Access the External Client App Manager

1. Log in to Salesforce with an administrator account.
2. Click the **gear icon** (at the top right) and open **Setup**.

![](https://storage.crisp.chat/users/helpdesk/website/-/7/7/0/2/77027aa2db8a2800/c3d602ef-1fba-49dd-a44f-a1b837_d00vif.png)

3. In the **Quick Find** bar, type `External`.

![](https://storage.crisp.chat/users/helpdesk/website/-/7/e/b/1/7eb17357e1f87400/d00b3d18-e968-43e4-b083-7256b7_1dzvc72.png)

4. Select **External Client App Manager**.
5. Click **New External Client App**.


###### Step 2 – Fill in the basic information

In the **Basic Information** section, fill in:
* **External Client App Name**: a clear name (e.g.: `Fincome`).
* **API Name**: automatically generated from the application's name (e.g.: `Fincome`). You can keep the default value.
* **Contact Email**: the email of the team managing the integration (used by Salesforce to contact you about the application).
* **Distribution State**: leave on **Local** (the application is only used by your own organization).

![](https://storage.crisp.chat/users/helpdesk/website/-/8/5/9/1/8591b1c212f4c800/84a862af-5d7c-43b1-882b-957ec9_ai4eiy.png)

###### Step 3 – Configure the OAuth settings

Enable **API (Enable OAuth Settings)**, then fill in the following fields:

**__1. Callback URL__**

Enter the redirect URL provided by Fincome:

|| This value corresponds to the OAUTH_REDIRECT_URL provided by Fincome. It must be strictly identical, with no spaces or extra characters.

**__2. OAuth Scopes__**

![](https://storage.crisp.chat/users/helpdesk/website/-/7/0/8/8/708849fae2767000/91ae13d1-cfa0-4a93-acac-cc74ae_mwioxj.png)

Add **at a minimum** the following scopes to the **Selected OAuth Scopes** list:

* **Manage user data via APIs (**`**api**`**)** — lets Fincome read your Salesforce data via the API.
* **Perform requests at any time (**`**refresh_token**`**,** `**offline_access**`**)** — necessary so that Fincome can renew its access token without asking you to log in again.

**__3. Flow Enablement__**

* Check **Enable Authorization Code and Credentials Flow**. This is the flow used by the Fincome connector (OAuth 2.0 authorization code grant with refresh tokens).

**__4. Security__**

* Check **Require Secret for Refresh Token Flow** and **Require Secret for Web Server Flow**. This guarantees that the client secret is required when exchanging a refresh token, which is the recommended setting for server-to-server integrations like Fincome.

![](https://storage.crisp.chat/users/helpdesk/website/-/5/0/3/7/5037570e93660c00/97e8c7f8-a35b-4f0a-b66a-c8f92a_r7x7fg.png)

###### Step 4 – Create the application

1. Check your configuration.
2. Click **Create** at the bottom of the page.

Salesforce creates the External Client App and redirects you to its detail page.


###### Step 5 – Retrieve your credentials

You must now copy the **Consumer Key** and the **Consumer Secret** that Fincome will use to authenticate.
1. Open your newly created application from the **External Client App Manager**.
2. Go to the **Settings** tab.

![](https://storage.crisp.chat/users/helpdesk/website/-/b/b/c/7/bbc792c622fb6000/9e73423e-5676-4bd6-a6ad-e3f7e6_15be6gn.png)
3. Scroll down to the **OAuth Settings** section.
4. Click **Consumer Key and Secret**.

![](https://storage.crisp.chat/users/helpdesk/website/-/2/b/4/7/2b47857521a04600/3b07f5a7-78bd-43d1-9543-90557a_3cnife.png)
5. Salesforce may ask you to verify your identity via a code sent by email — enter the received code.
6. Copy the two values:
| Salesforce field | Fincome identifier |
| ---- |
| **Consumer Key** | `secret_salesforce_client_id` |
| **Consumer Secret** | `secret_salesforce_client_secret` |

||| Treat the Consumer Secret like a password. Never share it publicly and do not publish it in a public repository.


### Phase 2 – Configure the Salesforce source in Fincome

###### Step 1 – Access the settings

1. Go to **Settings** in Fincome.
2. Open the **Data sources** tab.
3. Click **Enrichment sources**.
4. Select **Connect a new enrichment source**.
5. Choose **Sync Salesforce property(ies)**.

###### Step 2 – Configure the Salesforce source

A configuration window opens. **Seven fields** must be filled in to connect the source and tell Fincome **which Salesforce properties to retrieve** and **how to attach them to your customers**.

**__1. Source name__**
Give your source a clear and **unique** name (e.g.: *Salesforce – Accounts*). This name is only used to easily identify the source in Fincome.

**__2. Client key of the Salesforce external application__**
Paste the **Consumer Key** (Client ID) retrieved from your External Client App in Phase 1 (Step 5).

**__3. Client secret of the Salesforce external application__**
Paste the **Consumer Secret** (Client Secret) of that same application. Treat it like a password.

**__4. ID of the custom dimension in Fincome to use as the matching key__**
This is the **Fincome dimension** used for the matching: the one that contains the **unique identifier of your customers** on the Fincome side. Enter the **label** of this dimension.
**Example:** `Customer number` — the dimension that contains the unique number/identifier of each customer in your reference system.
This value will be compared with the Salesforce field in the next step to match each customer to the right Salesforce record.

||| This dimension must already exist in Fincome, otherwise the synchronization will not work.

**__5. Salesforce field to use as the matching key__**
This is the **Salesforce field** that contains exactly the **same value** as the dimension above, to allow the match. Enter its **exact API name**.
**Example:** `Customer_number__c` (or `Id` if you match on the Salesforce Record ID — see below).
Fincome links a customer to a Salesforce account as soon as: **value of the Fincome dimension (field 4) = value of the Salesforce field (field 5)**.
The identifier used on both sides must be **unique**, **exhaustive** across all your customers, and **strictly identical** between Salesforce and Fincome (no spaces or formatting).

**__6. Salesforce fields (separated by commas) to retrieve__**
Enter the **exact API names** of the Salesforce fields to sync, separated by commas. They will become new analytical dimensions in Fincome.
**Example:** `Industry, Phone, BillingCity`

**How to find a field's exact API name:**
1. In Salesforce, open **Setup**.
2. Go to **Object Manager** and select the object (e.g.: **Account**).
3. Click **Fields & Relationships**.
4. Copy the value of the **Field Name** column (this is the API name, e.g.: `Industry` or `Custom_Segment__c`).

**__7. Enriched dimension prefix (optional)__**
Set a prefix applied to the dimensions created from the Salesforce properties, to spot them easily and avoid name collisions.

* **Without a custom prefix**:
Default prefix: `Salesforce_xxxxxx_`
Example: `Salesforce_726564_Industry`

* **With a custom prefix**:
Prefix: `_Axis`
Example: `Salesforce_AxisIndustry`

If no prefix is entered and the names match existing dimensions, Fincome will merge the dimensions.


### Step 3 – Finalize the connection

1. Click **Validate**.
2. You are redirected to Salesforce.
3. Log in with the Salesforce account to connect.
4. Check and accept the requested permissions (`api`, `refresh_token`).
5. Click **Allow**.


### Final check

Go back to **Settings → Data sources → Enrichment sources** and check that your Salesforce source appears as active.

---

# *What is a Record ID and where to find it in Salesforce

A **Record ID** is the unique identifier assigned by Salesforce to each record — here, an **Account**. It exists in two formats:

* **15-character ID** (case-sensitive): visible in the record's URL.
* **18-character ID** (case-insensitive): returned by the API and exports. Both point to the same record.

Fincome can use this identifier to match a Fincome customer (via an analytical dimension) to the right Salesforce account, in order to correctly sync the CRM properties.

It is one of the most common values to enter in the **“Salesforce field to use as the matching key”** field (field 5 of Step 2): in that case enter `Id` on the Salesforce side, facing the Fincome dimension that stores this same Record ID.

### Where to find the Record ID in Salesforce (Accounts)

1. Log in to Salesforce.
2. Open the **Accounts** tab (or use **App Launcher → Accounts**).
3. Click on the relevant account to open its record.
4. Look at the browser's address bar: the Record ID appears in the URL.

**Example URL:** `https://your-org.lightning.force.com/lightning/r/Account/0015g00000XyZabAAB/view` 👉 In this example, `0015g00000XyZabAAB` corresponds to the **Record ID**.

### Other ways to get the Record ID

* From a Salesforce report or list view, add the **Account ID** column.
* During a Salesforce export (Data Export or Data Loader), include the **Id** column.
* Via the Salesforce REST API, the Record ID corresponds to the `Id` field.

---

# Best practices for syncing with Fincome

* Check that the Record ID recorded in Fincome is **strictly identical** to Salesforce's (no spaces or formatting).
* Prefer the **18-character ID** to avoid case-sensitivity problems during matching.
* For large volumes, it is recommended to export the Salesforce accounts with their IDs, then update the Fincome dimensions in bulk.

||| If the identifier recorded in Fincome does not match Salesforce's, the enrichment will not be able to work.

---

# FAQ

→ **What type of Salesforce data can I enrich in Fincome?**
You can sync all the Salesforce account fields you have access to: industry, size, location, custom fields (`__c`), etc.

→ **What happens if the identification dimension does not exist in Fincome?**
The synchronization will fail. The dimension must imperatively be created beforehand.

→ **What happens if a Salesforce field's API name is incorrect?**
The synchronization runs, but the dimensions concerned will be filled with the value `None`.

→ **What happens if I revoke the External Client App in Salesforce?**
The synchronization will stop immediately. You will have to reconnect the source in Fincome, possibly with new credentials.

→ **How often is the data updated?**
The data is updated daily.
