Salesforce is a customer relationship management (CRM) platform that helps businesses manage their customer data and relationships. This integration lets you sync your Salesforce data with Clay to streamline your workflow.
Creating a table with Salesforce
- In a workbook, click
+ Addat the bottom. - Search for
Salesforceand select from the results. - In the modal, you will be asked to
Select Salesforce account.- If you haven't already connected your Salesforce account, click
+ Add accountand go through authentication.
- If you haven't already connected your Salesforce account, click
Source Import records from a Salesforce list
Inputs:
- Salesforce object: The type of object to look for in Salesforce.
- List view: The view to sync into Clay.
- Views that are not SOQL-compatible (those that cannot be generated from a SOQL query) have a 2,000-record limit.
Source Import records from a Salesforce report
Inputs:
- Report to run: The report to run in your Salesforce instance.
- Only tabular and matrix reports are supported. Salesforce limits reports to a maximum of 2,000 records.
- Uniqueness fields:
- Since Salesforce reports lack unique identifiers, select specific fields to identify each row. This prevents duplicate records from appearing when the report updates.
- Important: If you don't select any fields, Clay will use the entire row content as the unique identifier. This can result in many duplicate entries in your Clay table.
- Since Salesforce reports lack unique identifiers, select specific fields to identify each row. This prevents duplicate records from appearing when the report updates.
Enriching data with Salesforce
- While in a Clay table, click
Add enrichmentand search forSalesforce. - Under
Integrations, select one of the Salesforce options. - In the modal, you will be asked to
Select Salesforce account.- If you haven't already connected your Salesforce account, click
+ Add accountand go through authentication.
- If you haven't already connected your Salesforce account, click
Action Lookup records via SOQL
Look up records in Salesforce using a SOQL query.
Inputs:
- SOQL query: For more information about SOQL and Salesforce, check out their documentation.
Action Create record
Use this action to create a new record in Salesforce.
Inputs:
- Salesforce object: The object type to look for in your Salesforce.
- Duplicate rule override: When enabled and you have a duplicate rule, Clay will bypass the rule and create a new record, even if it duplicates an existing one.
Action Lookup record
Use this action to find existing records in Salesforce.
Inputs:
- Salesforce object: The object type to look for in your Salesforce.
- Exact match? (optional): When enabled, finds exact matches across all search fields.
Action Upsert object
Use this action to create a new record or update an existing one.
Note: In order for upsert to work, you need to have an external ID on the object.
Inputs:
- Salesforce object: The object type to look for in your Salesforce.
Action Update record
Use this action to modify existing records in Salesforce.
Inputs:
- Record ID: The ID of the record to update.
- Salesforce object: The object type to look for in your Salesforce.
- Ignore blank values (optional): When enabled, blank values from Clay will be ignored.
Action Convert lead
Use this action to convert a lead.
Inputs:
- Lead ID: The ID of the lead to convert.
- Converted status: The status to assign to the lead after conversion.
- Account ID (optional): The ID of the account to link to the converted lead.
- Contact ID (optional): The ID of the contact to link to the converted lead.
- Create opportunity? (optional): Whether to create an opportunity for the converted lead.
- Opportunity ID (optional): The ID of the opportunity to link to the converted lead.
- Opportunity name (optional): The name of the opportunity to create.
- If not provided, the lead's name will be used.
Best practices
Test before automating
Start with auto-update disabled when using Create or Update actions. Test manually with a few rows first before enabling automation.
Begin with lookup records
Use the free Lookup records action first to check for duplicates, enhance data, and screen against suppression lists.
Qualify early
Use conditional runs and free enrichment actions to qualify leads before spending credits on deeper enrichment.
Mind your relationships
Pay attention to contact-company relationships and duplicates. Plan how to handle unassociated contacts and merge duplicate records to maintain data quality and efficiency.
FAQs
What permissions and scope do I need for the Salesforce enrichment?
Required Permissions for Your Clay User
To connect Clay to Salesforce, your Clay user needs:
- Access Identity Information (profile, email, address, phone)
- Manage Data via APIs
- Perform Requests Anytime (refresh_token, offline_access)
An OAuth user must set up the initial connection. After that, any user in your Clay workspace can use the integration.
Connection Scope and Permissions
The Salesforce connection is tied to the OAuth user who sets it up:
- Data Pull: Import or look up Salesforce records, limited to the fields and objects the OAuth user can access
- Data Push: Create or update Salesforce records where the OAuth user has write access
For sensitive fields, you can create a permission set to restrict the OAuth user's access.
Will Clay create duplicate records in Salesforce?
No. By default, Clay prevents duplicate records. However, you can allow duplicates by enabling the "Duplicate Rule Override" in the Create Record enrichment.
To avoid creating duplicates from your Clay table, first look up an object to check if it exists, then create it only if it doesn't.
Learn more about Salesforce's duplicate rules here.
What are the default sync settings for CRM integrations?
By default, Clay syncs Salesforce imports every 24 hours. When new records or updates occur, this triggers action runs that enrich and export the updated fields.
How do I turn on or off autoupdate?
To modify this setting, click your table name in the top bar. From the dropdown menu, select Disable or Enable auto-update.
Is there a way I can test Salesforce enrichments?
Yes, you can test enrichments by connecting your sandbox test environment.
Go to Settings → Connections → Salesforce Test Env to set it up.
Can I reverse my Salesforce enrichment?
No, once you update or create an object in Salesforce from Clay, you cannot undo these actions.
Please check with your Salesforce admin before making any changes to your Salesforce CRM.
Do we need to create a custom Salesforce object to integrate Salesforce data?
No, one of Clay's benefits is that you can update any object and any field in Salesforce.
Why am I seeing an "OAUTH_APPROVAL_ERROR_GENERIC" error when connecting Salesforce?
This error typically occurs when:
- Integration User License limitation: The user attempting the connection has a Salesforce Integration User License or API Only license, which cannot complete UI-based OAuth approval flows.
- Connected app not pre-approved: Your org requires pre-installation of connected apps. If Clay's connected app isn't pre-approved, Salesforce will block the OAuth approval.
- SSO enforcement: When "Is Single Sign-On Enabled" is set on the user or an IdP-redirect flow is forced, Salesforce may not present the OAuth approval screen.
How to fix:
- Use a full Salesforce user license (not Integration User) with a profile or permission set that includes API Enabled and Connected App Access.
- If your org enforces SSO, temporarily allow direct username/password login for this user, or create a non-SSO service account for authorization.
- In
Setup→Connected Apps OAuth Usage, verify the Clay app is listed and not blocked. If your org uses App Access Control, pre-install or whitelist the app first.
Why doesn't the Clay connected app appear under "Connected Apps OAuth Usage"?
A connected app only appears after a successful OAuth authorization. If it's missing, one of these is typically true:
- The user's profile lacks the "Approve uninstalled connected apps" permission (required when the app isn't pre-installed).
- Org policies block uninstalled connected apps entirely (via App Access Control).
- SSO or login flows prevent the OAuth approval prompt.
- IP restrictions, login-hour restrictions, or Transaction Security Policies block the OAuth request.
How to fix:
- Add "Approve uninstalled connected apps" to the user's profile or permission set.
- Try authorizing with a System Administrator user first—this lifts the "uninstalled" status and populates Connected Apps OAuth Usage.
- Once it appears, configure Connected App Policies (e.g., Permitted Users, IP Relaxation, Profile Assignments).
What callback URL does Clay use for Salesforce?
What OAuth scopes does Clay require for Salesforce?
Clay requires these scopes:
apirefresh_tokenidopenidprofile
Do I need to adjust IP or session restrictions in Salesforce to connect Clay?
Sometimes. Salesforce session-level or connected-app-level restrictions can interrupt OAuth flows or token exchanges.
Common blockers:
- "Lock sessions to IP address" in Session Settings.
- Strict HTTPS and network policies that reject redirects from Clay's servers.
- Very short session timeouts that expire during the OAuth handshake.
- Permitted IP ranges on the user's profile that exclude the browser or integration IP.
- Connected App Policies requiring logins from fixed IP ranges.
Recommendations:
In Setup → Session Settings:
- Disable "Lock sessions to IP address".
- Use a reasonable session timeout to allow OAuth redirects.
In Setup → Manage Connected Apps → Clay:
- Set
IP Relaxationto "Relax IP Restrictions" (Clay's integration calls originate from cloud IPs that may change). - Set
Permitted Usersto "All users may self-authorize" unless your org requires admin approval.
Explore other docs
Other popular resources
Join a cohort, learn Clay fast!
The faster way to master Clay. Sign in if you're enrolled in a cohort (current or past) or apply to an upcoming one!

