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

How to Import Event Leads from Sheets to Salesforce with Power Automate

Import trade show attendee data from Google Sheets rows directly into Salesforce as new leads after each event.

Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.

Best for

Sales teams that collect lead data at events and need bulk import into Salesforce without manual entry.

Not ideal for

Teams needing real-time sync or complex lead scoring before import should use dedicated ETL tools instead.

Sync type

on-demand

Use case type

import

Real-World Example

💡

A 25-person B2B software company collects 300+ leads at trade shows using badge scanners. Sales ops pastes attendee data into a Google Sheet template, then triggers the automation to create all leads in Salesforce in one batch. Before automation, manual entry took 4+ hours and caused data entry errors.

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 Create permissions on Lead objects
Google account with edit access to the event spreadsheet
Event data formatted as a proper table in Google Sheets with headers
Microsoft Power Automate license (included with most Office 365 plans)
At minimum, Last Name and Company columns in your sheet data

Field Mapping

Map these fields between your apps.

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

Step-by-Step Setup

1

My flows > + New flow > Instant cloud flow

Create new automated cloud flow

Navigate to make.powerautomate.com and sign in with your Microsoft account. Click 'My flows' in the left sidebar, then click '+ New flow' at the top. Select 'Instant cloud flow' since you'll trigger this manually after pasting event data. Name it 'Event Lead Import - [Event Name]' to track multiple events.

  1. 1Click 'My flows' in the left navigation
  2. 2Click '+ New flow' button at the top
  3. 3Select 'Instant cloud flow' option
  4. 4Enter 'Event Lead Import' as the flow name
  5. 5Choose 'Manually trigger a flow' trigger
What you should see: You should see the flow designer with a manual trigger block already added.
2

Flow designer > + New step > Google Sheets

Connect to Google Sheets

Click '+ New step' below the manual trigger. Search for 'Google Sheets' in the connector search box. Select 'List rows present in a table' action since your event data will be in a structured table format. This action reads all rows at once rather than processing one by one.

  1. 1Click '+ New step' below the trigger
  2. 2Type 'Google Sheets' in the search box
  3. 3Select 'List rows present in a table'
  4. 4Click 'Sign in' to authenticate your Google account
What you should see: The Google Sheets action appears with authentication fields and dropdown menus for file selection.
Common mistake — Don't pick 'Get a row' - that only processes one record and you need bulk import capability.
3

Google Sheets action > File/Table dropdowns

Configure sheet selection

After authentication, select your event spreadsheet from the File dropdown. Choose the worksheet containing your lead data from the Table dropdown - this should be formatted as a proper table with headers. The Location dropdown should show 'Tables' automatically since you're using structured data.

  1. 1Select your event spreadsheet from the File dropdown
  2. 2Choose the correct worksheet from the Table dropdown
  3. 3Verify Location shows 'Tables'
  4. 4Confirm the table headers appear in the preview
What you should see: You should see a preview of your table headers like 'First Name', 'Last Name', 'Company', 'Email'.
Common mistake — Your data must be formatted as a table in Google Sheets, not just regular cells, or the connector won't detect it properly.
4

Flow designer > + New step > Salesforce

Add Salesforce connection

Click '+ New step' again. Search for 'Salesforce' and select 'Create record' action. This creates individual lead records for each row from your sheet. Power Automate will automatically loop through all sheet rows when you use this pattern after a 'list rows' action.

  1. 1Click '+ New step' below the Google Sheets action
  2. 2Search for 'Salesforce' in the connector list
  3. 3Select 'Create record' action
  4. 4Sign in to your Salesforce org when prompted
What you should see: The Salesforce action loads with Object Type and field mapping options available.
Common mistake — Make sure you connect to the right Salesforce org - production vs sandbox matters here.
5

Salesforce action > Object Type dropdown

Set object type to Lead

In the Salesforce action, set Object Type to 'Lead' from the dropdown. This tells Salesforce to create lead records rather than contacts or accounts. The field mapping section will populate with all available lead fields after you make this selection.

  1. 1Click the Object Type dropdown
  2. 2Select 'Lead' from the list
  3. 3Wait for the field mapping section to load
  4. 4Verify required fields show with red asterisks
What you should see: Required lead fields like Company, LastName appear with red asterisks indicating they're mandatory.
6

Salesforce action > Field mapping

Map required lead fields

Map the mandatory Salesforce lead fields first. Click in the LastName field and select the corresponding column from your Google Sheet using dynamic content. Do the same for Company field. These two fields are always required for Salesforce leads and your import will fail without them.

  1. 1Click in the LastName field box
  2. 2Select your sheet's Last Name column from dynamic content
  3. 3Click in the Company field box
  4. 4Map to your Company column from the sheet
What you should see: You should see dynamic content tokens like 'Last Name' and 'Company' populated in the required fields.
Common mistake — If you don't have Company data in your sheet, use a static value like 'Event Lead - [Event Name]' or the import will fail.
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
7

Salesforce action > Additional field mapping

Map additional lead fields

Continue mapping other important fields like FirstName, Email, Phone, and LeadSource. For LeadSource, consider using a static value like 'Trade Show' or the specific event name so you can track lead origin. Map Title to job titles if you captured that data at your event.

  1. 1Map FirstName to your First Name sheet column
  2. 2Map Email to your Email sheet column
  3. 3Map Phone to your Phone sheet column
  4. 4Set LeadSource to 'Trade Show' as static text
  5. 5Map any additional fields like Title or Description
What you should see: Your key lead fields show mapped values from either sheet columns or static text you entered.
Common mistake — Don't map empty sheet columns to required fields - Power Automate will try to create leads with blank required data and fail.
8

Between Google Sheets and Salesforce > + New step > Compose

Add duplicate prevention logic

Click '+ New step' and add a 'Compose' action before the Salesforce step. Use the expression if(empty(items('Apply_to_each')?['Email']), guid(), items('Apply_to_each')?['Email']) to create a unique identifier. This helps prevent duplicate leads when you accidentally run the same sheet twice.

  1. 1Click the three dots on the Salesforce action
  2. 2Select 'Add an action before'
  3. 3Choose 'Compose' from Data Operations
  4. 4Enter the duplicate prevention expression
  5. 5Rename this step to 'Generate Unique Key'
What you should see: The Compose action sits between your Google Sheets and Salesforce actions with the expression configured.
Common mistake — This approach works for small batches but won't catch duplicates across different sheet imports - consider using External ID fields for better deduplication.
9

Flow designer > Save > Test > Manually

Test with sample data

Save your flow using Ctrl+S or the Save button. Click 'Test' in the top right, select 'Manually' and click 'Test'. Go to your Google Sheet and make sure it has 2-3 sample rows of lead data. Return to Power Automate and click 'Run flow' to trigger your test.

  1. 1Click 'Save' to save your flow configuration
  2. 2Click 'Test' in the top toolbar
  3. 3Select 'Manually' as the test option
  4. 4Click 'Test' then 'Run flow'
  5. 5Monitor the run results for any errors
What you should see: You should see green checkmarks on each step and new lead records created in your Salesforce org.
Common mistake — Test with only 2-3 rows first - don't run your full event dataset until you verify the mapping works correctly.
Power Automate
▶ Test flow
executed
Google Sheets
Salesforce
Salesforce
🔔 notification
received
10

Flow details > Turn on toggle

Enable and schedule production runs

After successful testing, save your flow and turn it on using the toggle switch. Since this is a manual trigger, you'll run it on-demand after each event. Consider creating a copy of this flow for each major trade show to track lead sources separately.

  1. 1Navigate back to 'My flows'
  2. 2Find your Event Lead Import flow
  3. 3Click the toggle to turn it 'On'
  4. 4Click the flow name to access run triggers
  5. 5Bookmark the manual run URL for easy access
What you should see: Your flow shows as 'On' in the My flows list and you can trigger it anytime from the run page.
Common mistake — Confirm your workflow timezone matches your business timezone — n8n uses the instance timezone by default. Also verify the workflow is saved and set to Active, since Schedule Triggers won't fire on inactive workflows.

Add this expression in a Compose action before Salesforce to format phone numbers consistently and handle missing company data with event-specific defaults.

JavaScript — Code Step// Format phone and handle missing company data
▸ Show code
// Format phone and handle missing company data
if(
  empty(items('Apply_to_each')?['Company']),

... expand to see full code

// Format phone and handle missing company data
if(
  empty(items('Apply_to_each')?['Company']),
  concat('Event Lead - ', formatDateTime(utcNow(), 'yyyy-MM-dd')),
  items('Apply_to_each')?['Company']
)

// Phone number formatting
if(
  empty(items('Apply_to_each')?['Phone']),
  null,
  concat(
    '(',
    substring(replace(replace(items('Apply_to_each')?['Phone'], '-', ''), ' ', ''), 0, 3),
    ') ',
    substring(replace(replace(items('Apply_to_each')?['Phone'], '-', ''), ' ', ''), 3, 3),
    '-',
    substring(replace(replace(items('Apply_to_each')?['Phone'], '-', ''), ' ', ''), 6, 4)
  )
)

Scaling Beyond 200+ leads per event+ Records

If your volume exceeds 200+ leads per event records, apply these adjustments.

1

Split into batch files

Create separate Google Sheets with 100 leads each rather than one massive file. This prevents timeout errors and makes troubleshooting easier when issues occur.

2

Use External ID fields

Set up an External ID field in Salesforce and populate it with event name + attendee email. This enables proper upsert logic instead of always creating new records.

3

Implement retry logic

Add error handling with retry attempts for failed lead creation. Some leads might fail validation while others succeed, and you want to capture partial results.

4

Monitor API limits

Salesforce has daily API call limits. Large imports can consume significant quota, especially if you're also running other integrations concurrently.

5

Consider premium connectors

Premium Power Automate includes better bulk operations and higher throughput limits. Worth the upgrade cost if you regularly import 500+ leads per event.

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 Power Automate for this if you're already in the Microsoft ecosystem and need simple manual-trigger imports. The Google Sheets connector handles table data well, authentication stays active longer than Zapier, and you get bulk processing without complex setup. Skip it if you need real-time sync or advanced deduplication - use n8n or Pipedream for those requirements.

Cost

Real math on this: Each lead import costs 2 API calls (1 for Google Sheets list, 1 per Salesforce create). At 200 leads per event, that's 201 calls per run. Power Automate includes 750 API calls per user per month on basic plans. Three large events monthly pushes you to premium at $15/month. Zapier costs $30/month for the same volume, Make charges $10.59 but has tighter execution time limits.

Tradeoffs

Make handles larger datasets better with superior error handling and bulk operations. n8n gives you much more control over deduplication logic and data transformation before creating leads. Zapier's Salesforce connector is more mature with built-in duplicate detection options. Pipedream offers better debugging when imports fail. But Power Automate wins on simplicity and Microsoft SSO integration - your sales team won't need separate login credentials.

You'll hit Salesforce validation errors when attendees don't provide complete information. Required fields like Company cause batch failures if any row is empty. Power Automate doesn't retry individual failed records - the whole batch stops. Authentication tokens expire every 90 days and flows silently fail until someone notices leads aren't importing. Test thoroughly with messy real-world data, not just clean samples.

Ideas for what to build next

  • Add lead scoring automationCreate a second flow that triggers on new Salesforce leads to assign scores based on job title and company size.
  • Set up follow-up email sequencesConnect to your email platform to automatically enroll imported leads in event-specific nurture campaigns.
  • Create event ROI reportingBuild a Power BI report that tracks conversion rates and revenue from leads by event source.

Related guides

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