

How to Import leads from spreadsheets with Power Automate
Automatically create Salesforce leads whenever someone adds a new row to your Google Sheets tracking spreadsheet.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Microsoft 365 teams that already live in the ecosystem and want leads flowing from Google Sheets into Salesforce without manual imports.
Not ideal for
Teams processing 200+ leads per day should use bulk import tools instead of real-time automation.
Sync type
real-timeUse case type
importReal-World Example
A 12-person B2B marketing agency tracks inbound leads in a shared Google Sheet from trade shows and webinars. Before automation, someone manually copied 15-20 leads per week into Salesforce, taking 45 minutes every Monday. Now leads appear in Salesforce within 2 minutes of being added 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 Power Automate
Copy the pre-built Power Automate blueprint and paste it straight into Power Automate. 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 | ||
| Company | Company | |
| Last Name | LastName | |
8 optional fields▸ show
| First Name | FirstName |
Email | |
| Phone | Phone |
| Lead Source | LeadSource |
| Job Title | Title |
| Industry | Industry |
| Lead Status | Status |
| Website | Website |
Step-by-Step Setup
My flows > + New flow > Automated cloud flow
Create new automated cloud flow
Go to make.powerautomate.com and sign in with your Microsoft account. Click 'My flows' in the left sidebar, then the blue '+ New flow' button. Select 'Automated cloud flow' from the dropdown menu. Name your flow something like 'Import Leads from Google Sheets'.
- 1Click 'My flows' in the left navigation
- 2Click the blue '+ New flow' button
- 3Select 'Automated cloud flow'
- 4Enter 'Import Leads from Google Sheets' as the flow name
Build automated flow > Choose trigger > Google Sheets
Add Google Sheets trigger
In the trigger search box, type 'Google Sheets' and select the Google Sheets connector. Choose 'When a row is added, modified or deleted' trigger. This gives you the most reliable real-time updates compared to the basic 'When a row is added' option.
- 1Type 'Google Sheets' in the search box
- 2Click the Google Sheets connector
- 3Select 'When a row is added, modified or deleted'
- 4Click 'Create' to proceed
Google Sheets trigger > Sign in > Select file and worksheet
Connect to Google Sheets
Click 'Sign in' to authenticate with Google. Grant Power Automate permission to access your Google Sheets. After authentication, you'll see dropdown menus to select your spreadsheet file and worksheet tab. Choose the specific sheet where your leads are tracked.
- 1Click 'Sign in' under the Google Sheets logo
- 2Authorize Power Automate in the Google popup
- 3Select your leads spreadsheet from the File dropdown
- 4Choose the correct worksheet tab
Google Sheets trigger > Change type configuration
Configure change type filter
In the 'Change type' dropdown, select 'Added' to only trigger when new rows are created, not when existing rows are modified. Leave the 'Key Column' as 'A' unless your data starts in a different column. Set 'Only with changes in' to blank to monitor the entire row.
- 1Set 'Change type' to 'Added'
- 2Keep 'Key Column' as 'A'
- 3Leave 'Only with changes in' blank
- 4Click 'Show advanced options' if needed for row range
New step > Built-in > Condition
Add condition to check for data
Click '+ New step' and search for 'Condition' in the built-in actions. Add a condition to check that essential fields like email or company name aren't empty. This prevents creating incomplete Salesforce records when someone adds a blank row.
- 1Click '+ New step' below the trigger
- 2Search for 'Condition' in the actions list
- 3Click 'Condition' from Built-in actions
- 4Set up a condition to check if email field is not empty
Condition > If yes > Add action > Salesforce > Create record
Add Salesforce connection
In the 'If yes' branch, click 'Add an action' and search for 'Salesforce'. Select the Salesforce connector, then choose 'Create record' action. Sign in with your Salesforce credentials when prompted. Power Automate will ask for permissions to read and write Salesforce data.
- 1Click 'Add an action' in the 'If yes' branch
- 2Type 'Salesforce' in the search box
- 3Select the Salesforce connector
- 4Choose 'Create record' action
- 5Sign in with Salesforce credentials
Salesforce action > Object Type > Lead
Configure Salesforce lead creation
Set 'Object Type' to 'Lead' in the dropdown. This will populate the action with all available Lead fields. You'll see required fields marked with red asterisks - at minimum you need Company and LastName. Optional fields like Email, Phone, and Lead Source help with lead qualification.
- 1Select 'Lead' from the Object Type dropdown
- 2Wait for the lead fields to load
- 3Identify required fields marked with red asterisks
- 4Note optional fields you want to populate
Salesforce fields > Dynamic content picker
Map spreadsheet columns to lead fields
Click in each Salesforce field box and select the corresponding column from your Google Sheet using the dynamic content picker. Map Company to your company column, LastName to last name, Email to email address, and so on. Use the lightning bolt icon to see all available spreadsheet columns.
- 1Click in the 'Company' field box
- 2Select your company column from dynamic content
- 3Map LastName to your last name column
- 4Map Email to your email column
- 5Continue mapping other relevant fields
Salesforce fields > LeadSource and Status
Set lead source and status
Scroll down to find LeadSource and Status fields. Set LeadSource to a fixed value like 'Spreadsheet Import' or 'Manual Entry' to track where these leads originated. Set Status to 'New' or whatever your team uses for fresh leads. These help with lead reporting and assignment rules.
- 1Scroll down to find LeadSource field
- 2Enter 'Spreadsheet Import' as a fixed value
- 3Find the Status field
- 4Set Status to 'New' or your team's default
- 5Add any other standard values your team requires
Salesforce action > Settings > Configure run after
Add error handling
Click 'Settings' on the Salesforce action (three dots menu). Enable 'Configure run after' and check 'is successful' and 'has failed'. This lets you add a parallel action that runs when Salesforce record creation fails, like sending an email notification or logging to a separate sheet.
- 1Click the three dots menu on the Salesforce action
- 2Select 'Settings'
- 3Click 'Configure run after'
- 4Check both 'is successful' and 'has failed'
- 5Click 'Done'
Save > Test with new spreadsheet row
Test and save the flow
Click 'Save' in the top right to save your flow. Add a test row to your Google Sheet with realistic lead data. Within 2-3 minutes, check if a new lead appears in Salesforce. Review the flow run history in Power Automate to see if any steps failed or returned warnings.
- 1Click 'Save' in the top toolbar
- 2Open your Google Sheet in another tab
- 3Add a test row with complete lead information
- 4Wait 2-3 minutes for processing
- 5Check Salesforce for the new lead record
Use this expression in a Compose action before the Salesforce step to clean and format phone numbers into a consistent format that passes Salesforce validation rules.
Copy this templatereplace(▸ Show code
replace(
replace(
replace(... expand to see full code
replace(
replace(
replace(
replace(triggerOutputs()?['body/Phone'], '(', ''),
')', ''
),
'-', ''
),
' ', ''
)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 Microsoft Power Automate for this if you're already on Microsoft 365 and want webhook-based real-time imports without paying for additional platforms. The Google Sheets connector handles cell-level change detection better than most competitors, and Salesforce integration includes built-in field validation. Pick Zapier instead if you need rock-solid webhook reliability - Power Automate's Google Sheets webhooks sometimes need manual renewal after 30 days.
Expect around 2-3 flow runs per lead import (trigger + condition + Salesforce action). At $15/month for the premium plan with unlimited runs, you're looking at essentially free per-lead costs once you hit the minimum plan threshold. Zapier charges $0.10 per lead after the free tier, making Power Automate cheaper at 150+ leads per month. Make handles this same volume for free but lacks Power Automate's native Microsoft ecosystem integration.
Zapier beats Power Automate on webhook reliability and has better error recovery when Google Sheets API calls fail. Make offers superior data transformation tools if you need to parse complex name formats or normalize phone numbers before hitting Salesforce. n8n gives you more granular control over duplicate detection logic. Pipedream handles high-frequency imports better with built-in queuing. But Power Automate wins on Microsoft SSO integration and doesn't require learning new authentication flows if your team already uses Office 365.
You'll hit Google Sheets API rate limits around 300+ rapid imports per hour, causing temporary flow failures that require manual retry. Salesforce validation rules configured by admins will silently reject records without clear error messages in Power Automate's run history. The webhook subscription with Google Sheets expires periodically on free plans, stopping new imports until you edit and re-save the flow to refresh the connection.
Ideas for what to build next
- →Add lead scoring automation — Create a parallel flow that scores new leads based on company size, industry, or job title data from your spreadsheet columns.
- →Set up Salesforce to Sheets sync — Build a reverse flow that updates your Google Sheet when lead status changes in Salesforce, keeping your tracking spreadsheet current.
- →Connect Slack notifications — Add a Slack action that notifies your sales channel when high-value leads (based on company or title criteria) are imported from the spreadsheet.
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