Introduction
To unleash insights from your Salesforce data in FME, you first need to configure your connection.
The FME SalesforceConnector uses the OAuth 2.0 authorization code grant to authenticate with Salesforce. Before connecting, you will need to register a Salesforce External Client App and create a Web Connection in FME. This article walks through those steps for FME Form and FME Flow.
Requirements
- Salesforce Admin with Permissions to create an External Client App
- An FME Flow instance configured for HTTPS (required for Flow web connections)
As of Spring 2026, Salesforce is disabling the creation of new Connected Apps, therefore, this article goes over setting up an External Client App for FME: Salesforce Platform: New Connected Apps Can No Longer Be Created in Spring '26
Step-by-Step Instructions
Part 1: Create an App in Salesforce
Your app configuration may vary depending on your organization's needs. This article covers the settings required for FME.
1. Create a New External Client App
In your Salesforce organization, click the gear icon in the upper-right corner, then select Setup.
In the sidebar, navigate to Platform Tools > Apps > External Client Apps, then click New External Client App.
2. Configure the App Settings for OAuth
Enter the required details:
- External Client App Name (for example: FME_Salesforce_OAuth)
- API Name
- Contact email
- Distribution state
Scroll down, expand API (Enable OAuth Settings), and check Enable OAuth.
Enter the Callback URL:
- For FME Form 2025.2 and later, use the Proxy Redirect URL:
https://fmeauth.safe.com/v1/oauth2 - For earlier versions of FME Form:
https://localhost - For FME Flow:
https://<your-FME-Flow-URL>/fmeoauth
Salesforce only allows one callback URL per app registration. If you need to support both FME Form and FME Flow, either create a separate External Client App for each, or if you’re using FME 2025.0.2+, consider having FME Flow as a Connection Storage for a shared connection across the FME platform. This article will use the first option.
Select OAuth Scopes:
The default FME Salesforce web service uses full and refresh_token scopes. If your organization requires more restrictive scopes, include at a minimum:
- Manage user data via APIs (api) - required to read and write Salesforce records
- Perform requests at any time (refresh_token, offline_access) - required so FME can silently refresh access without prompting you to log in again
Under Flow Enablement, check:
- Enable Authorization Code and Credentials Flow
Under Security, the following are enabled by default and should be left as-is
Leave all other Security settings at their defaults unless your Salesforce administrator requires otherwise.
Click Create
This will redirect you to the Policies page of your newly created External Client App
3. Obtain your Client ID and Client Secret
From the Policies page, navigate to the Settings tab
Scroll to OAuth Settings, and click Consumer Key and Secret.
You will be prompted to authenticate before the Consumer Details page loads.
Save the following in a secure location before exiting:
- Consumer Key (Client ID)
- Consumer Secret (Client Secret)
Part 2: Configure the Web Service and Test the Connection in FME Form
1. Create a Salesforce Web Service
In FME Workbench, go to Utilities (Tools in earlier versions of FME) > FME Options > Web Connections click Manage Services.
Click the + button, select Create From, then select Salesforce. This creates a new web service using the included Salesforce template.
2. Configure the Web Service
A pre-populated form called “Salesforce - Child Web Service (Created From Salesforce)” will appear. Update the following fields:
- Web Service Name - something identifiable, like
Salesforce_FME_OAuth -
Client Information:
- Client ID - your Consumer Key from Part 1
- Client Secret - your Consumer Secret from Part 1
- Redirect Strategy - select Proxy Redirect
-
Authorization Parameters:
- Authorization URL (optional) - if your organization uses a custom Salesforce domain, replace the default with:
https://<MyDomainName>.my.salesforce.com/services/oauth2/authorize?response_type=code&scope=refresh_token full
- Authorization URL (optional) - if your organization uses a custom Salesforce domain, replace the default with:
-
Enable PKCE (if required)
- Set to SHA-256 and ensure Code Verifier Length and State Length are set to non-zero values in the slider
-
Retrieve Token Parameters:
-
Token URL (optional) - if your organization uses a custom Salesforce domain:
https://<MyDomainName>.my.salesforce.com/services/oauth2/token
-
Token URL (optional) - if your organization uses a custom Salesforce domain:
The web service should look something like this:
Scroll down in the web service form and click Test. On FME 2025.2 and later, this opens a login page in your external browser.
On earlier FME versions, an embedded browser window would open within FME for login.
Enter your Salesforce credentials to authenticate. You’ll know the authentication is successful if you’re redirected to FME Form.
If successful, click Apply and Close.
3. Create and Authenticate the Web Connection
In FME Options > Web Connections, click the + icon. Select the web service created above, enter a connection name (for example: Salesforce_User_Connection), and click OK to proceed with authenticating the connection, similar to when you were testing the web service.
Your Salesforce web connection is now ready to use with the SalesforceConnector.
Part 3: Configure the Web Connection for FME Flow (Optional)
1. Ensure the Salesforce App is Configured for the Flow Redirect URI
In your Salesforce External Client App, ensure that your Flow redirect URI is added to the Callback URL field:
https://<your-FME-Flow-URL>/fmeoauth
The web connection for Form and Flow is different, so verify that you are using the correct redirect URI for each.
2. Upload the Web Service to FME Flow
In FME Workbench, go to Utilities > FME Options > Web Connections. Locate the Salesforce web connection created in Part 2. Right-click on the web connection, then select Upload
Select your FME Flow Connection, or if prompted, enter your FME Flow Connection details (server URL, a connection name, username, and password). Once complete, you will see a confirmation of Upload Successful.
3. Update the Web Service in FME Flow
In your browser, log in to your FME Flow web interface and navigate to Connections & Parameters > Web Connections > Manage Web Services page.
Locate the uploaded Salesforce web service and click it to open its configuration.
Confirm the following fields to match your Flow environment:
- Client ID - your Consumer Key
- Client Secret - your Consumer Secret
-
Redirect URI -
https://<your-FME-Flow-URL>/fmeoauth
Click Save.
4. Re-Authenticate the Web Connection
In the Flow UI, return to the Web Connections page, select the Salesforce connection, and click Authorize. Your browser will redirect to Salesforce's login page. Log in to complete the OAuth flow. You will see a success banner and a green checkmark to confirm that the connection was authorized successfully.
Your Salesforce web connection is now available for use across FME Flow, like Automations, Schedules, and Flow Apps.
Troubleshooting
Error: error=invalid_request&error_description=missing%20required%20code%20challenge
Salesforce is enforcing PKCE for this app. Return to your web service definition in FME (Part 2, Step 2), enable PKCE, set the method to SHA-256, and ensure the Code Verifier Length and State Length sliders are set to non-zero values (43 and 16 are recommended).
Error: Unable to retrieve access token / invalid code verifier
PKCE is enabled in FME, but the Code Verifier Length or State Length is set to zero. Open the web service definition and set both sliders to non-zero values.
Error: redirect_uri_mismatch
The callback URL in your Salesforce app does not match the redirect URI configured in FME. Confirm the callback URL in Salesforce matches exactly what is set in the FME web service (including trailing slashes).
Loopback and HTTP redirect URIs do not work with Salesforce/FME
This should look like the redirect page failing to open. Use the Proxy Redirect URL (https://fmeauth.safe.com/v1/oauth2) for FME Form 2025.2+ rather than the redirect loopback address.
Additional Resources
- Salesforce: Setting up OAuth Web Server Flow
- Salesforce: Create an External Client App
- Salesforce: External Client Apps Governance - Basics on Distribution State
- FME Documentation: Managing Web Services & Web Connections
- FME Documentation: Using Web Connections
- FME Documentation: Admin Guide on Configuring for HTTPS
- FME Article: Configuring FME Flow for HTTPS
- FME Article: External Browser Authentication - Basics on Proxy Redirect
- FME Article: Using FME Flow for Connection Storage in FME Form
- FME Article: Using the SalesforceConnector to See Account Data on a Map