> For the complete documentation index, see [llms.txt](https://docs.getmesa.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.getmesa.com/connect/salesforce.md).

# Salesforce

Set up a connected app in Salesforce Setup and enter its details in MESA so workflows can create and update Salesforce records.

## Connection

When you're setting up your first workflow with Salesforce, you will need to create a [Connection](https://docs.getmesa.com/going-further/credentials/) in order to connect MESA with Salesforce.

<figure><img src="https://docs.getmesa.com/assets/image%20%28568%29.png" alt="Screenshot of the MESA Salesforce step Connection menu where you create a new Connection to link MESA with Salesforce. Spotlight the Connection setup area."><figcaption></figcaption></figure>

1. Log in to Salesforce, then click the Setup button (gear icon in the top right). If a menu is displayed, then click Setu&#x70;**.**

   <figure><img src="https://docs.getmesa.com/assets/Screenshot%202025-02-28%20at%204.28.22%E2%80%AFPM.png" alt="Screenshot of Salesforce after logging in, click the Setup button in the top right. Spotlight the Setup gear icon in the top right."><figcaption></figcaption></figure>

2. In the left-hand menu, navigate to Apps and App Manager.

   <figure><img src="https://docs.getmesa.com/assets/Screenshot%202025-02-28%20at%204.39.33%E2%80%AFPM.png" alt="Screenshot of the Salesforce Setup left-hand menu, navigate to Apps then App Manager. Spotlight the App Manager menu item."><figcaption></figcaption></figure>

3. Then click on New External Client App.

   <figure><img src="https://docs.getmesa.com/assets/image%20%28676%29.png" alt="Screenshot of the Salesforce App Manager page. Spotlight the New External Client App button."><figcaption></figcaption></figure>

4. Enter MESA for the External Client App Name. The API Name field will then auto-populate.

5. Enter a valid email for Contact Emai&#x6C;**.**

   <figure><img src="https://docs.getmesa.com/assets/image%20%2875%29.png" alt=""><figcaption></figcaption></figure>

6. Ensure Enable OAuth Settings is checked in the API (Enable OAuth Settings) menu.

   <figure><img src="https://docs.getmesa.com/assets/image%20%2879%29.png" alt=""><figcaption></figcaption></figure>

7. Then for Callback URL, enter: [https://app.getmesa.com/apps/mesa/oauth/redirect-token](https://app.getmesa.com/apps/mesa/oauth/redirect-token)

   <figure><img src="https://docs.getmesa.com/assets/image%20%2887%29.png" alt=""><figcaption></figcaption></figure>

8. Then select all items under Available OAuth Scopes and hit the right arrow under Add to move all of them to Selected OAuth Scopes.

   <figure><img src="https://docs.getmesa.com/assets/image%20%28125%29.png" alt=""><figcaption></figcaption></figure>

   <figure><img src="https://docs.getmesa.com/assets/image%20%28130%29.png" alt=""><figcaption></figcaption></figure>

   :::note
   At the very least, Manage user data via APIs (api) and Perform requests at any time (refresh\_token, offline\_access) must be added as Selected OAuth Scopes.
   :::

9. By default, 3 settings will be selected automatically. Ensure that only the Require Secret for Web Server Flow and Introspect All Tokens checkboxes are selected from the list.

   <figure><img src="https://docs.getmesa.com/assets/image%20%28131%29.png" alt=""><figcaption></figcaption></figure>

10. Then hit the Create button at the bottom.

    <figure><img src="https://docs.getmesa.com/assets/image%20%28146%29.png" alt=""><figcaption></figcaption></figure>

11. Once you are redirected back to view the app's details, click on Policies under your app's name.

    <figure><img src="https://docs.getmesa.com/assets/image%20%28184%29.png" alt=""><figcaption></figcaption></figure>

12. Under OAuth Policies, ensure that your Refresh Token Validity Period is set to 30 days.

    <figure><img src="https://docs.getmesa.com/assets/image%20%28167%29.png" alt=""><figcaption></figcaption></figure>

    <figure><img src="https://docs.getmesa.com/assets/image%20%28178%29.png" alt=""><figcaption></figcaption></figure>

13. Once you have checked your app policy settings, click Settings under your app name.

    <figure><img src="https://docs.getmesa.com/assets/image%20%28185%29.png" alt=""><figcaption></figcaption></figure>

14. In the OAuth Settings menu, click on the App Settings Consumer Key and Secret button. You may get prompted to sign in again so please do so.

    <figure><img src="https://docs.getmesa.com/assets/image%20%28237%29.png" alt=""><figcaption></figcaption></figure>

15. For this next step, you are going to copy and paste these values from the Salesforce screen into your MESA workflow. In a new tab on your browser, open your [Salesforce Trigger or Action](https://docs.getmesa.com/workflow-builder/) to proceed.

16. In Salesforce, click on the Consumer Key button and paste the copied value into the Client ID field of your MESA Salesforce step's Connection menu.

    <figure><img src="https://docs.getmesa.com/assets/image%20%28238%29.png" alt=""><figcaption></figcaption></figure>

17. Do the same for Salesforce's Consumer Secret and paste it into the "Client Secret" field of your MESA Salesforce step's Connection menu.

    <figure><img src="https://docs.getmesa.com/assets/image%20%28277%29.png" alt=""><figcaption></figcaption></figure>

    <figure><img src="https://docs.getmesa.com/assets/image%20%28287%29.png" alt=""><figcaption></figcaption></figure>

18. For MESA's Authorization URL field, enter: [**https://login.salesforce.com/services/oauth2/authorize**](https://login.salesforce.com/services/oauth2/authorize)

19. For MESA's Token URL field, enter: [**https://login.salesforce.com/services/oauth2/token**](https://login.salesforce.com/services/oauth2/token)

    :::note
    If you are connecting to a Salesforce sandbox, you will need to:\
    \- Replace the **Authorization URL** with: [https://test.salesforce.com/services/oauth2/authorize](https://test.salesforce.com/services/oauth2/authorize)\
    \- Replace the **Token URL** with: [https://test.salesforce.com/services/oauth2/token](https://test.salesforce.com/services/oauth2/token)
    :::

20. Click Sign in with Salesforce. You may be asked to login to your Salesforce account. Once logged on, you will get a prompt asking for access. Click Allow.

    <figure><img src="https://docs.getmesa.com/assets/Connect_Mesa_with_Salesforce_Automation_Guide_-_Step_1.png" alt="Screenshot of the MESA Salesforce Connection menu, clicking Sign in with Salesforce and then Allow access. Spotlight the Sign in with Salesforce button."><figcaption></figcaption></figure>

21. You will be taken back to MESA, with a new Salesforce connection created.

    <figure><img src="https://docs.getmesa.com/assets/image%20%28290%29.png" alt=""><figcaption></figcaption></figure>

    You have now finished setting up your Salesforce connection. Click the Retrieve Fields button to import your fields.

Salesforce plans that support API access are: Enterprise, Unlimited, Developer and Performance.

## Configure

### Retrieve Fields

Click the Retrieve Fields button to pull in the current fields associated with your Salesforce action.

<figure><img src="https://docs.getmesa.com/assets/image%20%28290%29.png" alt=""><figcaption></figcaption></figure>

<figure><img src="https://docs.getmesa.com/assets/image%20%28320%29.png" alt=""><figcaption></figcaption></figure>

If you’ve made updates to your fields in Salesforce you will want to click the Retrieve Fields button to pull in the latest changes.

## Technical Notes

### Why can't I set the amount on an opportunity?

* If an opportunity includes products, the amount on the opportunity will be the total of its related products. For more information, please refer to [this Salesforce article](https://help.salesforce.com/s/articleView?language=en_US\&id=000335960\&mode=1\&type=1).

### Connection error codes

* If you experience any issues or see this error _`error=invalid_client_id&error_description=client%20identifier%20invalid`_ when creating a Salesforce connection, please make sure that your Salesforce Client ID and Secret were copied over correctly and that your Salesforce App has the correct Callback URL.
* If you experience any issues or see this error _`error=redirect_url_mismatch&error_description=redirect_url&20must%20match%20configuration`_ when creating a Salesforce connection, please make sure you have added the Callback URL in the External Client app while creating it in Salesforce.
* If you experience any issues or see this error _`error=unknown_error_description=retry_your_request`_ when creating a Salesforce connection via Sandbox, the External Client App's Permitted Users OAuth policy is likely set to "Admin approved users are pre-authorized", and as the connecting user, you aren't assigned to the app.
  * Salesforce refuses at the consent step and redirects back to MESA's callback with error=OAUTH\_APP\_ACCESS\_DENIED and no authorization code.
    * To fix this, you should go to Setup in the sandbox → External Client App Manager → your app → Policies → Edit → OAuth Policies:
      * set Permitted Users to "All users may self-authorize", or
      * keep pre-approval and assign your user Profile (Connected App Access) or a Permission Set (Assigned Connected App) to the app.

### Specify the API User in the External Client App

* To specify the API User in an External Client App, you will need to configure your Salesforce connected app accordingly by following this Salesforce thread: [https://salesforce.stackexchange.com/a/431770](https://salesforce.stackexchange.com/a/431770)
  * You will also need to ensure the app has the `refresh_token` and `offline_access` enabled

:::note
View Salesforce templates and tutorials [here](https://www.getmesa.com/apps/salesforce/integrate)!
:::
