> ## Documentation Index
> Fetch the complete documentation index at: https://ampersand-24eb5c1a-mintlify-9a8a4289.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Salesforce

This guide helps you set up your Salesforce org to work with an Ampersand-powered integration. The steps differ depending on whether the integration uses an **External Client App** or a **Connected App**. If you're not sure which one you're using, ask the developer who built the integration.

## Checklist before installing

Complete these checks before you install or connect the integration. If any of them fail, the connection will not work.

### 1. Confirm your edition has API access

Your Salesforce edition must include API access. Without it, the integration cannot connect.

Check [Salesforce's API access by edition](https://help.salesforce.com/s/articleView?language=en_US\&id=000385436\&type=1). If your edition does not include API access, contact your Salesforce account representative to upgrade.

### 2. Know which app type you're installing

Ask the developer whether this integration uses an **External Client App** or a **Connected App**. Use the matching tab in the sections below.

### Glossary

* **License** — Purchased from Salesforce; sets the maximum permissions a user can receive. Which license you need depends on who connects — see [Choose credentials and grant access](#choose-credentials-and-grant-access).
* **Profile** — Controls object, field, and feature access. Each user has exactly one profile (standard or custom), tied to one license. System Administrator is a profile, not a license.
* **Permission set** — Extra permissions assigned on top of a profile. Users can have multiple permission sets; each set is tied to a license.

## Setting up the integration

<Tabs>
  <Tab title="External Client App">
    ### Install the package

    The developer will provide a **package install URL**. Complete this install **before** connecting Salesforce in the integration UI, or OAuth will fail.

    1. Open the package install URL provided by the developer.
    2. Log in to your Salesforce org if prompted.
    3. Select **Install for All Users**.
    4. Check the acknowledgment checkbox.
    5. Click **Install**.

    <img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/salesforce-eca/install-for-all-users.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=568255314984216807df4d726025a582" width="500" data-path="images/customer-guides/salesforce-eca/install-for-all-users.png" />

    You will see a progress screen while the installation completes.

    <img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/salesforce-eca/installing-in-progress.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=a2f4d842b48216396fc47fc3197b38c6" width="500" data-path="images/customer-guides/salesforce-eca/installing-in-progress.png" />

    Once complete, you should see a confirmation screen:

    <img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/salesforce-eca/installation-complete.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=173030b374bcb7f7b9be8b271f3e3815" width="500" data-path="images/customer-guides/salesforce-eca/installation-complete.png" />

    To verify, go to **Setup**, search for **Installed Packages**, and confirm the package appears in the list.

    <img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/salesforce-eca/installed-packages.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=3f7dd5207949c08981cf027f405aee10" width="700" data-path="images/customer-guides/salesforce-eca/installed-packages.png" />
  </Tab>

  <Tab title="Connected App">
    ### Configure token policy settings

    Set the refresh token policy so the integration stays connected after access tokens expire.

    1. Log in to **Salesforce**.

    2. Go to **Setup**.

    3. In the **Quick Find** box, search for **Connected Apps**.

    4. Click **Manage Connected Apps**.

    5. Find and click the name of the application you are integrating with.

    6. Scroll to **OAuth Policies**.

    7. Under **IP Relaxation**, select **Relax IP restrictions**.

    8. Set **Refresh Token Policy** to **Refresh token is valid until revoked**.

           <img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/salesforce-refresh-token.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=b838633c1752f342a0c582960ff44772" alt="Refresh Token Settings" width="719" height="209" data-path="images/customer-guides/salesforce-refresh-token.png" />

    9. Click **Save**.

    After you connect the app, also confirm **Permitted Users** under app policies. See [After installing the integration](#after-installing-the-integration).
  </Tab>
</Tabs>

## Choose credentials and grant access

Pick one way to connect, then grant the permissions below.

**Required system permissions** (enable these on the profile or permission set you configure):

* **API Enabled**
* If the integration includes real-time Subscribe Actions, also enable the [Subscribe Action permissions](#subscribe-action-permissions)
* For Connected Apps only, also enable one of:
  * **Use Any API Client** (shown if your org has [API Access Control](https://help.salesforce.com/s/articleView?id=xcloud.security_api_access_control_about.htm\&type=5) enabled)
  * **Approve Uninstalled Connected Apps** (if you do not see **Use Any API Client**)

### Option A: Human user

Use one of the following:

* **System Administrator** — Already on a supported license (System Administrator is a profile on the **Salesforce** license). You still need to grant the correct object and field permissions; they are not always included by default.
* **Sales team member or other human user** — Must have the **Salesforce** User License. The **Salesforce Platform** User License is insufficient. This user can have a standard profile (such as **Standard User**) or a custom profile.

#### 1. Configure system permissions

In **Setup**, search for **Profiles** in the **Quick Find** box and open it. Then:

1. Select the profile you'd like to view and edit.
2. Click **Edit** at the top of the page.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/SalesforceEditProfileRole.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=160a7efc9e3a8268d7cff358eb0d6a86" alt="Edit profile" width="3048" height="1108" data-path="images/customer-guides/SalesforceEditProfileRole.png" />

3. Ensure the checkboxes for the required system permissions (listed above) are checked.
4. Click **Save**.

#### 2a. Field permissions for a standard profile

If the user has a standard profile (such as **Standard User**):

1. Click the gear icon in the top-right corner and select **Setup**.
2. In the left-hand search bar, type **Object Manager** and open it.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/objectManager-salesforce.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=2692b7e26a83764c7fdf45439f6e501e" alt="Setup Object Manager" width="1237" height="981" data-path="images/customer-guides/objectManager-salesforce.png" />

3. Choose the object you need (for example, **Account**), then select **Fields & Relationships** from the left navbar.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/salesforceFieldSecurity1.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=375d2728c2875de20d5cfabfcc9db99c" alt="Setup Object Manager Account" width="3836" height="1682" data-path="images/customer-guides/salesforceFieldSecurity1.png" />

4. Find the field you want to adjust and click it.
5. Click **Set Field-Level Security**.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/salesforceFieldSecurity2.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=87c10da10297a07f1cb149d77ad00832" alt="Set Field Level Security" width="3840" height="1694" data-path="images/customer-guides/salesforceFieldSecurity2.png" />

6. Ensure **Visible** is selected for the profile. If the profile is not in the list, it does not have access to the object and that cannot be changed here.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/salesforceFieldSecurity3.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=8ecbba9e5fcf14373360bfbc286330d7" alt="Check Visible for profile" width="3840" height="1722" data-path="images/customer-guides/salesforceFieldSecurity3.png" />

7. Repeat steps 4–6 for all fields the integration needs to read, especially custom fields.

#### 2b. Object and field permissions for a custom profile

If the user has a custom profile:

1. Click the gear icon in the top-right corner and select **Setup**.
2. In the left-hand search bar, type **Object Manager** and open it.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/objectManager-salesforce.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=2692b7e26a83764c7fdf45439f6e501e" alt="Setup Object Manager" width="1237" height="981" data-path="images/customer-guides/objectManager-salesforce.png" />

3. Choose the object you need (for example, **Account**) and go to **Object Access** in the left navbar. Select the **Profiles** tab, click **Edit**, and grant the necessary permissions for your custom profile.
   * If the integration needs to read data, ensure **Read**, **View All Records**, and **View All Fields** are checked.
   * If the integration needs to write data, ensure all boxes are checked.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/salesforceObjectAccess.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=11d97254fc530ed8f9cad367c9ad1940" alt="Edit Object Access" width="3840" height="1700" data-path="images/customer-guides/salesforceObjectAccess.png" />

### Option B: Salesforce Integration user

Use a **Salesforce Integration** user when you want an API-only identity with no Salesforce UI access. Create the user with the **Salesforce Integration** license (steps below).

#### 1. Create a new user

1. Click the gear icon in the top-right corner and select **Setup**.
2. In the left-hand search bar, type **Users** and open it.
3. Create a new user:
   * For **User License**, select **Salesforce Integration**.
   * For **Profile**, select **Minimum Access - API Only Integrations**.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/sf-api-newuser.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=8d87f0db21d9e73c89761239deb26683" width="3840" height="1854" data-path="images/customer-guides/sf-api-newuser.png" />

#### 2. Create a permission set

1. Click the gear icon in the top-right corner and select **Setup**.
2. In the left-hand search bar, type **Permission Sets** and open it.
3. Click **New**.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/sf-api-new-permset.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=f96f22248bde0fc681c6919e58174489" width="3008" height="1600" data-path="images/customer-guides/sf-api-new-permset.png" />

4. Create the permission set:
   * Name it something general (for example, `Integration User Permission Set`) or describe the access (for example, `Account and Contact Access`).
   * In the **License** dropdown, select **Salesforce API Integration**.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/sf-api-permset-2.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=3b8f876251cb0f4e68dc76ca1c1e3326" width="1560" height="514" data-path="images/customer-guides/sf-api-permset-2.png" />

#### 3. Configure object permissions

1. Click **Object Settings**.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/sf-api-perm-objects.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=01203cf601141a8274bea85546de67fd" width="3020" height="1598" data-path="images/customer-guides/sf-api-perm-objects.png" />

2. For each object the integration needs, open it (for example, **Accounts**).

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/sf-api-perm-objects2.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=ef4c765239796c090dbb86fbe395a545" width="3020" height="1598" data-path="images/customer-guides/sf-api-perm-objects2.png" />

3. Check the relevant boxes under **Object Permissions** and **Field Permissions**, then click **Save**.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/sf-api-permset-object3.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=f3e680ae33293559ef4367f7ac634e0d" width="3020" height="1598" data-path="images/customer-guides/sf-api-permset-object3.png" />

4. Repeat for every object the integration needs to access.

#### 4. Configure system permissions

1. Select **System Permissions**.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/sf-api-perm-system-select.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=a9da0fa222977cf470c2326ed5caab45" width="2570" height="1692" data-path="images/customer-guides/sf-api-perm-system-select.png" />

2. Ensure the required system permissions (listed at the start of this section) are selected, then click **Save**.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/sf-api-permset-system.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=d93a1eed08b4df7db4b9f9bbcc97c7fc" width="2490" height="1028" data-path="images/customer-guides/sf-api-permset-system.png" />

#### 5. Assign the permission set to the integration user

1. Click **Manage Assignments**.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/sf-api-manage-assignments.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=7c9dfd059a031a3e0c3f9412d47d7dce" width="2490" height="1138" data-path="images/customer-guides/sf-api-manage-assignments.png" />

2. Click **Add Assignment**.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/sf-api-permset-assign.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=5b52dfb71de24e0481640e6fc615443e" width="3020" height="1598" data-path="images/customer-guides/sf-api-permset-assign.png" />

3. Select the integration user you created in step 1.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/sf-api-permset-assign2.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=8862ad547ca3146fe4b29581c8b156ab" width="3020" height="1598" data-path="images/customer-guides/sf-api-permset-assign2.png" />

4. Set **Expires On** to **Never Expires**, then click **Assign**.

<img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/sf-api-permset-assign3.png?fit=max&auto=format&n=zL1kbU29OG9wpkUb&q=85&s=6c0772c02936e413b9998c13b86d34a0" width="3020" height="1598" data-path="images/customer-guides/sf-api-permset-assign3.png" />

## After installing the integration

Configure OAuth policies so the integration can maintain a stable connection.

<Tabs>
  <Tab title="External Client App">
    1. Log in to **Salesforce**.
    2. Go to **Setup**.
    3. In the **Quick Find** box, search for **External Client App Manager**.
    4. Click the name of the installed External Client App.
    5. Go to the **Policies** tab and click **Edit**.
    6. Under **OAuth Policies**, set **Permitted Users** to **All users may self-authorize**.
    7. Under **App Authorization**:
       * Set **Refresh Token Policy** to **Refresh token is valid until revoked**.
       * Set **IP Relaxation** to **Relax IP restrictions**.
    8. Click **Save**.

           <img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/salesforce-eca/after-install-policies.gif?s=912bc9ef54bff088d13cc2fb38ce6707" alt="Configure ECA OAuth Policies" width="800" height="614" data-path="images/customer-guides/salesforce-eca/after-install-policies.gif" />
  </Tab>

  <Tab title="Connected App">
    Confirm **Permitted Users** so the right people can authorize the app.

    1. Log in to **Salesforce**.
    2. Go to **Setup**.
    3. In the **Quick Find** box, search for **Connected Apps OAuth Usage**.
    4. Find this integration's connected app and click **Manage App Policies**.
    5. Under **OAuth Policies**, set **Permitted Users** to one of:

       * **Admin approved users are pre-authorized** — only selected users can access.
       * **All users may self-authorize** — all users can access the app.

           <img src="https://mintcdn.com/ampersand-24eb5c1a-mintlify-9a8a4289/zL1kbU29OG9wpkUb/images/customer-guides/salesforce-3.gif?s=bb2ac271784610cda45a17be699688dc" alt="Permitted Users" width="1440" height="726" data-path="images/customer-guides/salesforce-3.gif" />

    If you need to change these settings:

    1. Click **Install** next to your connected app.
    2. In **OAuth Usage and Policies**, set the appropriate permissions level.
    3. Click **Save**.
  </Tab>
</Tabs>

## Subscribe Action permissions

If the integration includes Subscribe Actions, enable these permissions.

Explicitly enable:

* **Modify Metadata Through Metadata API Functions** — configure event channels and memberships through Metadata API
* **Customize Application** — configure artifacts like Named Credentials so Ampersand can connect to event channels securely

Salesforce auto-enables these dependent permissions when you enable the ones above:

* **View Setup and Configuration** — access setup configuration to create webhook subscription settings
* **View Roles and Role Hierarchy** — correct visibility context so Salesforce can deliver events (without this, events may be generated but not delivered)
* **Manage Custom Permissions** — create and manage dedicated event channels and channel memberships for the installation

Enable these on the profile (Option A, step 1) or permission set (Option B, step 4) you configured above.
