Intermediate~15 min setupProductivity & CRMVerified April 2026
Google Sheets logo
Salesforce logo

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-time

Use case type

import

Real-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.

/mo
505005K50K

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

Skip the setup

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.

Salesforce user account with Lead creation permissions and API access enabled
Google account with edit access to the target spreadsheet
Microsoft 365 account or Power Automate license for webhook-based triggers
Google Sheets spreadsheet with consistent column headers in the first row
Salesforce admin confirmation of required Lead fields and picklist values

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
CompanyCompany
Last NameLastName
8 optional fields▸ show
First NameFirstName
EmailEmail
PhonePhone
Lead SourceLeadSource
Job TitleTitle
IndustryIndustry
Lead StatusStatus
WebsiteWebsite

Step-by-Step Setup

1

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'.

  1. 1Click 'My flows' in the left navigation
  2. 2Click the blue '+ New flow' button
  3. 3Select 'Automated cloud flow'
  4. 4Enter 'Import Leads from Google Sheets' as the flow name
What you should see: You should see the 'Build an automated cloud flow' dialog with your flow name filled in.
2

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.

  1. 1Type 'Google Sheets' in the search box
  2. 2Click the Google Sheets connector
  3. 3Select 'When a row is added, modified or deleted'
  4. 4Click 'Create' to proceed
What you should see: You should see the Google Sheets trigger configuration panel with connection options.
Common mistake — The 'When a row is added' trigger misses rows added via mobile apps - use the full row change trigger instead.
Power Automate
+
click +
search apps
Google Sheets
GO
Google Sheets
Add Google Sheets trigger
Google Sheets
GO
module added
3

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.

  1. 1Click 'Sign in' under the Google Sheets logo
  2. 2Authorize Power Automate in the Google popup
  3. 3Select your leads spreadsheet from the File dropdown
  4. 4Choose the correct worksheet tab
What you should see: You should see 'Connected' status and your spreadsheet/worksheet selected in the dropdowns.
Common mistake — If your sheet has merged cells in the header row, Power Automate won't detect column names correctly.
4

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.

  1. 1Set 'Change type' to 'Added'
  2. 2Keep 'Key Column' as 'A'
  3. 3Leave 'Only with changes in' blank
  4. 4Click 'Show advanced options' if needed for row range
What you should see: The trigger should show 'Added' selected and be ready to monitor new rows.
Common mistake — Filters are the most common place setups break. Double-check the field name and value exactly match what your app sends — a single capital letter difference will block everything.
Google Sheets
GO
trigger
filter
Type
matches criteria?
yes — passes through
no — skipped
Salesforce
SA
notified
5

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.

  1. 1Click '+ New step' below the trigger
  2. 2Search for 'Condition' in the actions list
  3. 3Click 'Condition' from Built-in actions
  4. 4Set up a condition to check if email field is not empty
What you should see: You should see a condition block with 'If yes' and 'If no' branches.
Common mistake — Without this check, test rows and accidental blank entries will create junk records in Salesforce.
6

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.

  1. 1Click 'Add an action' in the 'If yes' branch
  2. 2Type 'Salesforce' in the search box
  3. 3Select the Salesforce connector
  4. 4Choose 'Create record' action
  5. 5Sign in with Salesforce credentials
What you should see: You should see the Salesforce 'Create record' action with Object Type dropdown available.
7

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.

  1. 1Select 'Lead' from the Object Type dropdown
  2. 2Wait for the lead fields to load
  3. 3Identify required fields marked with red asterisks
  4. 4Note optional fields you want to populate
What you should see: You should see a form with Lead fields like Company, LastName, FirstName, Email, and Phone.
Common mistake — Salesforce admin settings can make additional fields required beyond the standard Company and LastName.
8

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.

  1. 1Click in the 'Company' field box
  2. 2Select your company column from dynamic content
  3. 3Map LastName to your last name column
  4. 4Map Email to your email column
  5. 5Continue mapping other relevant fields
What you should see: Each Salesforce field should show the mapped Google Sheets column name in purple dynamic content blocks.
Google Sheets fields
Column A
Column B
Email
Status
Notes
available as variables:
1.props.Column A
1.props.Column B
1.props.Email
1.props.Status
1.props.Notes
9

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.

  1. 1Scroll down to find LeadSource field
  2. 2Enter 'Spreadsheet Import' as a fixed value
  3. 3Find the Status field
  4. 4Set Status to 'New' or your team's default
  5. 5Add any other standard values your team requires
What you should see: LeadSource and Status fields should show your fixed values, not dynamic content from the spreadsheet.
Common mistake — Check with your Salesforce admin about required picklist values - invalid entries will cause the flow to fail.
10

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.

  1. 1Click the three dots menu on the Salesforce action
  2. 2Select 'Settings'
  3. 3Click 'Configure run after'
  4. 4Check both 'is successful' and 'has failed'
  5. 5Click 'Done'
What you should see: The Salesforce action should show a small settings icon indicating run-after conditions are configured.
11

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.

  1. 1Click 'Save' in the top toolbar
  2. 2Open your Google Sheet in another tab
  3. 3Add a test row with complete lead information
  4. 4Wait 2-3 minutes for processing
  5. 5Check Salesforce for the new lead record
What you should see: You should see a successful flow run in the run history and a new lead record in Salesforce matching your test data.
Common mistake — The first run can take up to 5 minutes while Power Automate establishes the webhook connection with Google Sheets.

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'], '(', ''),
      ')', ''
    ),
    '-', ''
  ),
  ' ', ''
)
Power Automate
▶ Test flow
executed
Google Sheets
Salesforce
Salesforce
🔔 notification
received

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

VerdictWhy n8n for this workflow

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.

Cost

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.

Tradeoffs

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 automationCreate 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 syncBuild a reverse flow that updates your Google Sheet when lead status changes in Salesforce, keeping your tracking spreadsheet current.
  • Connect Slack notificationsAdd 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

Was this guide helpful?
Google Sheets + Salesforce overviewPower Automate profile →