

How to Enrich Salesforce Accounts from Google Sheets with N8n
Automatically update Salesforce account records when enrichment data is added to a Google Sheets spreadsheet.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Teams that need custom data validation and complex field transformations when enriching Salesforce accounts.
Not ideal for
Simple field copying workflows where Zapier's pre-built templates work fine out of the box.
Sync type
pollingUse case type
syncReal-World Example
A 25-person B2B SaaS company uses ZoomInfo to research prospects, then exports enrichment data to a Google Sheet with company size, tech stack, and funding info. Before automation, sales ops manually copied this data into 40-50 Salesforce accounts weekly, taking 3 hours and introducing typos. Now the workflow updates accounts within 5 minutes of adding enrichment data to the sheet.
What Will This Cost?
Drag the slider to your expected monthly volume.
Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.





Prices shown for annual billing. Based on published pricing as of April 2026.
Estimated ROI
1000
min saved/mo
$583
labor value/mo
Free
no platform cost
Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.
Implementation
Import this workflow directly into n8n
Copy the pre-built n8n blueprint and paste it straight into n8n. All modules, filters, and field mappings are already configured — you just need to connect your accounts.
Before You Start
Make sure you have everything ready.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Account ID | Id | |
6 optional fields▸ show
| Annual Revenue | AnnualRevenue |
| Employee Count | NumberOfEmployees |
| Industry | Industry |
| Website | Website |
| Company Description | Description |
| Technologies Used | Tech_Stack__c |
Step-by-Step Setup
Workflows > New Workflow
Create new N8n workflow
Start with a blank workflow canvas. This will house your trigger, data processing, and Salesforce update nodes.
- 1Click 'New Workflow' from the N8n dashboard
- 2Rename the workflow to 'Account Enrichment Sync'
- 3Save the empty workflow
Nodes > Trigger > Google Sheets
Add Google Sheets trigger
Set up polling to detect new rows in your enrichment spreadsheet. This will check every 5 minutes for changes.
- 1Click the + button next to the Start node
- 2Search for 'Google Sheets' in the node selector
- 3Select 'On Row Added' trigger
- 4Choose your enrichment spreadsheet from the dropdown
Node Settings > Credentials > Google Sheets
Connect Google Sheets credentials
Authenticate with your Google account to access spreadsheet data. N8n needs read permissions on your enrichment sheet.
- 1Click 'Create New Credential' in the Google Sheets node
- 2Select 'OAuth2' authentication method
- 3Click 'Connect my account' and authorize N8n
- 4Test the connection with 'Test Step'
Nodes > Flow > IF
Add data filter node
Filter out incomplete rows and test data. Only process rows that have both account identifier and enrichment data populated.
- 1Add an 'IF' node after Google Sheets
- 2Set condition to 'account_id' field 'is not empty'
- 3Add second condition 'AND' for enrichment fields not empty
- 4Connect the 'true' output to continue the workflow
Nodes > Sales > Salesforce
Add Salesforce node for account lookup
Find the existing Salesforce account record using your identifier field. This prevents creating duplicates.
- 1Add a 'Salesforce' node after the IF node
- 2Select 'Get All' operation
- 3Choose 'Account' as the resource
- 4Set filter to match your account identifier field
Node Settings > Credentials > Salesforce
Connect Salesforce credentials
Set up OAuth connection to your Salesforce org. N8n needs read/write access to Account records.
- 1Click 'Create New Credential' in the Salesforce node
- 2Enter your Salesforce instance URL (e.g., yourorg.salesforce.com)
- 3Complete OAuth flow and authorize N8n
- 4Test connection with sample account lookup
Nodes > Flow > IF
Add account existence check
Verify the account was found before attempting updates. This prevents errors when account IDs don't match.
- 1Add another 'IF' node after Salesforce lookup
- 2Set condition to check if Salesforce returned results
- 3Use expression '{{ $json.length > 0 }}' for the condition
- 4Connect 'true' path to continue, 'false' to error handling
Nodes > Data > Set
Add field mapping node
Transform Google Sheets data to match Salesforce field formats. Handle data type conversions and field naming differences.
- 1Add a 'Set' node after the account existence check
- 2Map each enrichment field to corresponding Salesforce API name
- 3Add the account ID from the lookup result
- 4Include only fields that have data in the sheet row
Nodes > Sales > Salesforce
Add Salesforce update node
Update the account record with enriched data. This writes the transformed data back to your CRM.
- 1Add a second 'Salesforce' node after the Set node
- 2Select 'Update' operation
- 3Choose 'Account' as the resource
- 4Set 'Id' field to the account ID from lookup results
Workflow > Settings > Error Handling
Configure error handling
Set up proper error handling for failed API calls and data validation issues. This prevents workflow crashes on bad data.
- 1Click workflow settings in the top menu
- 2Set 'On Error' to 'Stop Workflow'
- 3Enable 'Save Data On Error' option
- 4Add error notification webhook (optional)
Workflow > Execute Workflow
Test with sample data
Run the workflow manually with test data to verify field mappings and error handling work correctly.
- 1Add a test row to your Google Sheets with real account data
- 2Click 'Execute Workflow' button
- 3Check each node output for correct data transformation
- 4Verify the account updated in Salesforce with new enrichment data
Workflow > Activate
Activate automated polling
Enable the workflow to run automatically every 5 minutes. This starts continuous monitoring of your enrichment spreadsheet.
- 1Click the 'Inactive' toggle in the top toolbar
- 2Confirm activation in the popup dialog
- 3Check 'Executions' tab to see polling started
- 4Monitor first few automated runs for errors
Drop this into an n8n Code node.
JavaScript — Code Node// Clean and validate enrichment data before Salesforce update▸ Show code
// Clean and validate enrichment data before Salesforce update
const cleanData = {
AnnualRevenue: $json.revenue ? parseInt($json.revenue.replace(/[^0-9]/g, '')) : null,... expand to see full code
// Clean and validate enrichment data before Salesforce update
const cleanData = {
AnnualRevenue: $json.revenue ? parseInt($json.revenue.replace(/[^0-9]/g, '')) : null,
NumberOfEmployees: $json.employees && $json.employees !== 'Unknown' ? parseInt($json.employees) : null,
Industry: $json.industry === 'Software' ? 'Technology' : $json.industry // Map to SF picklist
};
return [{ json: cleanData }];Scaling Beyond 100+ accounts per day+ Records
If your volume exceeds 100+ accounts per day records, apply these adjustments.
Batch account lookups
Use N8n's HTTP Request node with Salesforce REST API to query multiple accounts in single calls. This reduces API consumption from 2 calls per account to 1 call per 200 accounts.
Reduce polling frequency
Change Google Sheets trigger from 5 minutes to 15-30 minutes. Add a timestamp column to process only recently updated rows instead of scanning the entire sheet.
Split workflows by priority
Create separate workflows for critical vs nice-to-have enrichment fields. Run high-priority data every 15 minutes and supplementary data once daily to manage API limits.
Going live
Production Checklist
Before you turn this on for real, confirm each item.
Troubleshooting
Common errors and how to fix them.
Frequently Asked Questions
Common questions about this workflow.
Analysis
Use N8n for this if you need custom data transformations or have complex matching logic between systems. The code nodes let you handle edge cases that break simple automation tools. You can batch process hundreds of enrichment records without hitting execution limits. Skip N8n if you just need basic field copying - Zapier handles simple Google Sheets to Salesforce updates faster and with less setup.
This workflow costs 2-3 executions per enriched account (lookup + update + error handling). At 200 accounts/month, that's 500-600 executions total. N8n cloud's Starter plan gives you 5,000 executions for $20/month, so you're well under the limit. Zapier would charge $30/month for the same volume on their Team plan. Make costs $25/month but counts each Salesforce API call separately, making it more expensive for lookup-heavy workflows.
Zapier wins on setup speed - their Google Sheets trigger fires faster and the Salesforce integration auto-maps common fields. Make handles large datasets better with built-in pagination and bulk operations. But N8n gives you full control over data transformation and error handling. The code nodes let you clean messy enrichment data, validate formats, and implement retry logic that other platforms can't match.
Google Sheets API sometimes lags on new row detection, especially with multiple concurrent users editing. Your trigger might miss rows added in quick succession. Salesforce field validation will kill the entire workflow if one field fails - set up individual field updates wrapped in try-catch logic. Watch your API governor limits if processing historical data - bulk loading 1000+ accounts will burn through daily limits fast.
Ideas for what to build next
- →Add lead enrichment workflow — Create a parallel workflow to enrich Lead records using the same Google Sheets data source and field mapping logic.
- →Set up enrichment data validation — Add Google Sheets data validation rules and N8n error notifications to catch bad data before it reaches Salesforce.
- →Create enrichment audit trail — Build a workflow that logs all enrichment activities to a separate Google Sheet for compliance and troubleshooting.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup