---
title: Salesforce
slug: salesforce
image: https://make-cxp-documentation.ams3.digitaloceanspaces.com/apps-center-icons/PREVIEW_salesforce.png
docTags: 
createdAt: 2025-02-03T13:28:36.235Z
---

::::VerticalSplit{layout="left"}
:::VerticalSplitItem
::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/uqA4WwUwdPlLCYteu_CVk-20251029-171208.png" size="50" width="800" height="800" position="center" darkWidth="800" darkHeight="800" showCaption="false"}
:::

:::VerticalSplitItem
With Salesforce modules in Make, you can broadcast messages, create and modify records and jobs, and make API calls from your Salesforce account.
:::
::::

To use Salesforce modules, you must have a Salesforce account. If you do not have one, you can create one at [salesforce.com](https://www.salesforce.com/in/form/signup/freetrial-sales/?d=cta-jumbo-trial).

Refer to the [Salesforce API documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_list.htm) for a list of available endpoints.

## Connect Salesforce to Make

:::hint{type="warning"}
Not all editions of Salesforce have API access. See [here](https://help.salesforce.com/articleView?id=000005140\&type=1) for more information.
:::

To establish the connection in Make:

::::WorkflowBlock
:::WorkflowBlockItem
Log in to your Make account, add a Salesforce module to your scenario, and click **Create a connection**.
:::

:::WorkflowBlockItem
Select a **Connection type**: **Salesforce** or **Salesforce (client credentials)**.
:::

:::WorkflowBlockItem
Optional: In the **Connection name** field, enter a name for the connection.
:::

:::WorkflowBlockItem
If your **Connection type** is **Salesforce**, select whether you are using a Salesforce Sandbox environment and click **Save**.
:::

:::WorkflowBlockItem
Optional: You can switch on the **Advanced settings** to enter credentials for your custom application. To create a custom application for this connection type, [follow these steps](docId:3zivhgpcSrNBhytBXWhcV).
:::

:::WorkflowBlockItem
If your **Connection type** is **Salesforce (client credentials)**, complete the following fields:

- **Salesforce My Domain Name** - For more information, see the [Salesforce My Domain](https://help.salesforce.com/s/articleView?id=xcloud.domain_name_overview.htm\&type=5) documentation.
- **Consumer Key**
- **Consumer Secret**

To obtain your Consumer Key and Consumer Secret, follow the steps in [Create a custom application in Salesforce](docId:3zivhgpcSrNBhytBXWhcV) below.
:::
::::

You have successfully established the connection. You can now edit your scenario and add more Salesforce modules. If your connection needs reauthorization at any point, follow the connection renewal steps [here](docId\:SO88FM6pkT0G-adKDDfzZ).

:::::ExpandableHeading
## Create a custom application in Salesforce for the Salesforce (client credentials) connection type

**Connection type: Salesforce (client credentials)**

To obtain client credentials and create a connection in Make:

::::WorkflowBlock
:::WorkflowBlockItem
Log in to your Salesforce account.
:::

:::WorkflowBlockItem
In the left sidebar of the **Setup Home** page, click **Apps > App Manager**.
:::

:::WorkflowBlockItem
In the upper right, click **New Connected App**.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/O30aJ_tf0J_9yW8pH61OM_uuid-9f99d1c7-6dcf-979c-815b-df948032e27f.png" size="100" width="2770" height="1238" position="flex-start" darkWidth="2770" darkHeight="1238" showCaption="false" indent="2"}
:::

:::WorkflowBlockItem
Click **Create a Connected App** > **Continue**.
:::

:::WorkflowBlockItem
On the **New Connected App** page, under **Basic Information**, fill in the mandatory fields:

- Connected App Name
- API Name
- Contact Email
- Refer to [Salesforce documentation](https://help.salesforce.com/s/articleView?id=sf.connected_app_create_basics.htm\&type=5) to learn more about basic settings.
:::

:::WorkflowBlockItem
Under **API (Enable OAuth Settings)**, click **Enable OAuth Settings**. Enter the following application details:

- **Callback URL&#x20;**- `https://www.integromat.com/oauth/cb/salesforce/`
- **Selected OAuth Scopes**
  - Manage user data via APIs (`api`)
  - Perform requests at any time (`refresh_token`, `offline_access`).
  - Once these scopes are selected, then the **Refresh Token Policy** can be set to **Refresh token is valid until revoked**.
- **Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows** - Must be **OFF**
- **Require Secret for Web Server Flow** - Optional, but **ON** is more secure
- **Require Secret for Refresh Token Flow&#x20;**- Optional, but **ON** is more secure
- **Enable Client Credentials Flow&#x20;**- Optional, but **OFF** is more secure
- **Enable Authorization Code and Credentials Flow&#x20;**-**&#x20;Required**
- **Enable Token Exchange Flow&#x20;**- Set up a&#x73;**&#x20;OFF**
- **Enable Refresh Token Rotation&#x20;**- Set up a&#x73;**&#x20;OFF**
- **Issue JSON Web Token (JWT)-based access tokens for named users&#x20;**-**&#x20;Optional**
- **Introspect All Tokens&#x20;**- Set up a&#x73;**&#x20;OFF**
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
Enable the client credentials flow for your connected app:

1. On the left sidebar, click **Apps > App Manager**.
2. Find your connected app, click the dropdown arrow, and then select **Edit**.
3. Under **API (Enable OAuth Settings)**, select **Enable Client Credentials Flow**.
4. When you understand the security risks, accept the warning.
5. Click **Save**.
:::

:::WorkflowBlockItem
Select an execution user for the flow:

1. From the connected app detail page, click **Manage**.
2. Click **Edit Policies**.
3. Under **Client Credentials Flow**, for **Run As**, click the **Inspect icon**, and find the user that you want to assign the client credentials flow. For Enterprise Edition orgs, select an execution user who has the API Only User permission.
4. Click **Save**.
:::

:::WorkflowBlockItem
On the left sidebar, click **Apps** > **App Manager**, and find your new connected apps.
:::

:::WorkflowBlockItem
Click **Dropdown arrow** > **View**. Under the **API (Enable OAuth Settings)** section, click **Manage Consumer Details**.
:::

:::WorkflowBlockItem
Copy your **Consumer key** and **Consumer Secret** values and store them in a safe place.
:::
::::

You will use these values in the **Consumer Key** and **Consumer Secret** fields in Make when adding the Salesforce (client credentials) connection type.
:::::

:::::ExpandableHeading
## Create a custom application in Salesforce for the Salesforce connection type

**Connection type: Salesforce**

To create a connection with the **Advanced settings:**

::::WorkflowBlock
:::WorkflowBlockItem
Log in to your Salesforce account.
:::

:::WorkflowBlockItem
In the left sidebar of the **Setup Home** page, click **Apps > App Manager**.
:::

:::WorkflowBlockItem
In the upper right, click **New Connected App**.

::Image[]{src="https://api.archbee.com/api/optimize/oAyFj2GHlBeBVWF5OAir2/O30aJ_tf0J_9yW8pH61OM_uuid-9f99d1c7-6dcf-979c-815b-df948032e27f.png" size="100" width="2770" height="1238" position="center" darkWidth="2770" darkHeight="1238" showCaption="false" indent="2"}
:::

:::WorkflowBlockItem
Click **Create a Connected App** > **Continue**.
:::

:::WorkflowBlockItem
On the **New Connected App** page, under **Basic Information**, fill in the mandatory fields:

- Connected App Name
- API Name
- Contact Email

Refer to [Salesforce documentation](https://help.salesforce.com/s/articleView?id=sf.connected_app_create_basics.htm\&type=5) to learn more about basic settings.
:::

:::WorkflowBlockItem
Under **API (Enable OAuth Settings)**, click **Enable OAuth Settings**. Enter the following application details:

- **Callback URL&#x20;**- `https://www.integromat.com/oauth/cb/salesforce/`
- **Selected OAuth Scopes**
  - Manage user data via APIs (`api`)
  - Perform requests at any time (`refresh_token`, `offline_access`).
  - Once these scopes are selected, then the **Refresh Token Policy** can be set to **Refresh token is valid until revoked**.
- **Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows** - Must be **OFF**
- **Require Secret for Web Server Flow** - Optional, but **ON** is more secure
- **Require Secret for Refresh Token Flow&#x20;**- Optional, but **ON** is more secure
- **Enable Client Credentials Flow&#x20;**- Optional, but **OFF** is more secure
- **Enable Authorization Code and Credentials Flow&#x20;**-**&#x20;Required**
- **Enable Token Exchange Flow&#x20;**- Set up a&#x73;**&#x20;OFF**
- **Enable Refresh Token Rotation&#x20;**- Set up a&#x73;**&#x20;OFF**
- **Issue JSON Web Token (JWT)-based access tokens for named users&#x20;**-**&#x20;Optional**
- **Introspect All Tokens&#x20;**- Set up a&#x73;**&#x20;OFF**
:::

:::WorkflowBlockItem
Click **Save**.
:::

:::WorkflowBlockItem
On the **Manage Connected Apps** page that is displayed for your new app, under the **API (Enable OAuth Settings)** section, click **Manage Consumer Details**.
:::

:::WorkflowBlockItem
Copy your **Consumer key** and **Consumer Secret** values and store them in a safe place.
:::
::::

You will use these values in the **Consumer Key** and **Consumer Secret** fields in Make when connecting using advanced settings.
:::::

## Migrating from v3 to v4

This guide covers the changes between v3 and v4 of the Salesforce integration. It lists the breaking changes and what to do about them, followed by new capabilities available in v4.

### Breaking changes

Most scenarios will keep working as-is. See the breaking changes and what to do:

| **Change**                                                                           | **What to do**                                                                                                                                      |
| ------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| Legacy instance URLs no longer redirect<br /><br />For example: `na1.salesforce.com` | Update your connection to your **My Domain URL** found under **Setup** > **My** **Domain**.<br /><br />For example: `yourcompany.my.salesforce.com` |
| New Connected App creation is disabled by default                                    | Only affects new connections. Ask your Salesforce admin to enable it under **Setup** > **Connected Apps**, or use an **External Client App**.       |
| `Number/Date` filter type split into `Number`, `Date`, `Datetime`                    | Update any **Search Records (SOQL)** filters that used `Number/Date` for date values to the new `Date` or `Datetime` type.                          |
| Empty mapped filter values are now skipped, not matched as empty                     | Use the explicit `null` pill in the filter row if you need to match empty fields.                                                                   |
| Forced 10-record cap removed when searching by filter with no limit set              | Now returns up to 2,100 records. Add an explicit limit if you relied on the old 10-record default.                                                  |

### Salesforce record types and objects

Make supports all Salesforce record types and objects, including those introduced after API v54 (Spring 2022). These record types and objects appear in the relevant dropdowns across all Salesforce modules.

:::hint{type="info"}
See the [Objects list V66](https://developer.salesforce.com/docs/atlas.en-us.260.0.object_reference.meta/object_reference/sforce_api_objects_list.htm) for the full list of supported record types and objects.
:::

### Date and time handling

Make correctly recognizes and parses timestamps with negative UTC offsets, including timezones west of UTC such as US Eastern and US Pacific. These values return as datetime values, not raw text.

For example, a `CreatedDate` field from a US Eastern org returns a value like `2024-06-10T09:30:00.000-0500` as a datetime value.

### SOQL relationship queries

The **Search records (SOQL)** module supports nested relationship queries up to five levels deep when you write a query manually.

For example, to traverse relationships in a manual query, use dot notation between related object names:

```sql
SELECT Id, Name, Account.Name, Account.Owner.Name, Account.Owner.Manager.Name, Account.Owner.Manager.Manager.Name
FROM Opportunity
LIMIT 5
```

## Build Salesforce Scenarios

After connecting the app, you can perform the following actions:

### Record

- Watch records
- Watch record fields
- Search records (SOQL)
- Search records (SOSL)
- Get a record
- Create a record
- Update a record
- Create or update a record
- Delete a record

### Bulk Job

- Watch jobs
- List jobs
- Bulk create jobs (advanced)
- Get bulk job results (advanced)

  :::hint{type="info"}
  Note: If you complete a job, Salesforce queues the job, uploads data for processing, and you can’t add any more job data. If you abort a job, the job does not get queued or processed.
  :::

### Other

- Make an API Call
  - For the URL, enter a path relative to `<Instance URL>/services/data`. For example: `/v51.0/query`. Refer to the [Salesforce API documentation](https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_list.htm) for a list of available endpoints.
- Make an API call (advanced)
- Post a message to a chatter feed
- Download an attachment or document

