Skip to main content

SalesforceProRevised in 5.0+

This guide assumes you have a Salesforce account already.

This integration will not work with the Salesforce Essentials plan as it does not have access to the API.

As of Spring 2026, Salesforce now requires new integrations to use External Client Apps instead of legacy Connected Apps, which are being phased out and can no longer be created by default in newer releases. External Client Apps provide improved security and governance (including a more controlled, “closed” access model and better separation of configuration and policies), and are now the recommended standard for OAuth-based integrations.

If you are setting up or updating a Salesforce integration, you should migrate from the older Connected App approach to the External Client App model to ensure compatibility with current and future Salesforce requirements.

👉 The setup guide below has been updated to reflect the new External Client Apps approach.

Compatibility

Uses OAuth flow with Salesforce's External Client App (required in 2026) on v58 of the REST API.

Endpoints

Maps data to the following endpoints:

  • Leads
  • Opportunity
  • Account
  • Contact

Does your project require something else?   Contact Us

Fields

Maps data to the following field types:

  • Text
    • String, Encrypted String, Textarea, Email, URL, Address, Picklist, Multipicklist, Date/Time fields
  • Numeric
    • Number, Phone, Currency
  • Other
    • Reference/relationship

There are some limitations to types of fields that can be mapped, such as Lookup fields.

Duplicate Check & Update

The following duplicate logic applies to the Opportunity/Account/Contact approach (not Leads).

A duplicate check on records is done in the following way:

  1. Check whether the Account already exists:
  • Check against the Name field as the identifier.
  • If no match, create a new Account.
  1. Check whether the Contact already exists:
  • Check against the Email address as the identifier.
  • If email address exists in Salesforce Contact, update the existing Contact with other details.
  • If no email address match, check if first name and last name exist in Salesforce Contact, then update the existing Contact with all other values including the new email address.
  • If no matches at all, create a new Salesforce Contact.
  • If Account Name matched, assign the new Contact to the existing Salesforce Account.
  1. Create new Opportunity.
  • Attach Opportunity to existing or newly created Salesforce Account.

Setup Instructions

1

Prepare Freeform's end for Integration

  • Go to the Integrations section in Freeform Settings (FreeformIntegrations).
  • Find Salesforce in the list of service providers.
  • Copy the URL value generated in the OAuth 2.0 Return URI field, e.g. https://mysite.net/admin/freeform/oauth/authorize.
  • Leave this page open and open a new tab to go to the Salesforce site...
2

Prepare Salesforce's end for Integration

  • Open another browser tab and go to Salesforce website and log into your account.
  • On the left navigation menu, click on Apps, then click External Client AppsExternal Client App Manager.
  • At the top right corner of the page, click the New External Client App button.
  • Fill out the fields in the Basic Information section.
  • In the API (Enable OAuth Settings) section, click the Enable OAuth Settings checkbox. More fields will appear...
    • In the App Settings area:
      • In the Callback URL field, paste the value from the OAuth 2.0 Return URI field in Freeform's settings for the integration.
      • In the Selected OAuth Scopes field, select the following permissions from the list and click Add arrow button:
        • Manage user data via APIs (api)
        • Perform requests on your behalf at any time (refresh_token, offline_access)
    • In the Flow Enablement area:
      • Check Enable Client Credentials Flow
    • In the Security area:
      • Check Require secret for Web Server Flow
      • Check Require secret for Refresh Token Flow
      • Check Require Proof Key for Code Exchange (PKCE) extension for Supported Authorization Flows
      • Check Enable Refresh Token Rotation
    • You shouldn't need to fill out any further fields, and then click the Create button.
  • You will be taken to a new page that lists info about your newly created app.
  • To get your Consumer Key and Consumer Secret values, follow the steps below:
    • Click on the Settings tab.
    • Click on OAuth Settings.
    • Click the Consumer Key and Secret button.
      • On the page that loads, copy the Consumer Key and Consumer Secret values.
3

Continue the Integration on your site

  • Flip back to the Freeform CP browser tab.
  • Paste the Salesforce Consumer Key value into the Client ID field in Freeform.
  • Paste the Salesforce Consumer Secret value into the Client Secret field in Freeform.
4

Additional Configuration

Additional configuration instructions (if applicable) are provided below:

If you plan to use the Leads endpoint, the following settings are available:

  • Assign Lead Owner?
    • Enabling this will make Salesforce assign a lead owner based on lead owner assignment rules in Salesforce.
  • Sandbox Mode
    • Enable this if your Salesforce account is in Sandbox mode.
  • Using custom URL?
    • Enable this if you connect to your Salesforce account with a custom company URL such as mycompany.my.salesforce.com.
5

Finish the Integration

  • Click the Save button.
  • After the integration is saved, you will see an Authorize button appear.
  • Click the Authorize button.
    • A popup will load the Salesforce OAuth page to allow permissions.
      • If not currently logged in, fill in your credentials.
      • Click Allow when asked for permissions.
    • The popup will then close and you're be back at the Integration page.
  • If authorized successfully, you'll see a green Authorized status at the top beside the integration name.
6

Configure the Form

To use this integration on your form(s), you'll need to configure each form individually.

  • Visit the form inside the form builder.
  • Click on the Integrations tab.
  • Click on Salesforce in the list of available integrations.
  • On the right side of the page:
    • Enable the integration.
    • Select the API endpoints you wish to map to.
    • Map Freeform fields to the Salesforce fields as needed.

Please note that if you set this up initially on a development environment, you will need to update your callback URL and reauthorize the connection on your production environment. However, your settings and field mappings will remain intact.