

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-demandUse case type
importReal-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.
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 | ||
| Last Name | LastName | |
| Company | Company | |
8 optional fields▸ show
| First Name | FirstName |
Email | |
| Phone | Phone |
| Lead Source | LeadSource |
| Job Title | Title |
| Description | Description |
| Industry | Industry |
| Lead Status | Status |
Step-by-Step Setup
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.
- 1Click 'My flows' in the left navigation
- 2Click '+ New flow' button at the top
- 3Select 'Instant cloud flow' option
- 4Enter 'Event Lead Import' as the flow name
- 5Choose 'Manually trigger a flow' trigger
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.
- 1Click '+ New step' below the trigger
- 2Type 'Google Sheets' in the search box
- 3Select 'List rows present in a table'
- 4Click 'Sign in' to authenticate your Google account
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.
- 1Select your event spreadsheet from the File dropdown
- 2Choose the correct worksheet from the Table dropdown
- 3Verify Location shows 'Tables'
- 4Confirm the table headers appear in the preview
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.
- 1Click '+ New step' below the Google Sheets action
- 2Search for 'Salesforce' in the connector list
- 3Select 'Create record' action
- 4Sign in to your Salesforce org when prompted
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.
- 1Click the Object Type dropdown
- 2Select 'Lead' from the list
- 3Wait for the field mapping section to load
- 4Verify required fields show with red asterisks
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.
- 1Click in the LastName field box
- 2Select your sheet's Last Name column from dynamic content
- 3Click in the Company field box
- 4Map to your Company column from the sheet
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.
- 1Map FirstName to your First Name sheet column
- 2Map Email to your Email sheet column
- 3Map Phone to your Phone sheet column
- 4Set LeadSource to 'Trade Show' as static text
- 5Map any additional fields like Title or Description
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.
- 1Click the three dots on the Salesforce action
- 2Select 'Add an action before'
- 3Choose 'Compose' from Data Operations
- 4Enter the duplicate prevention expression
- 5Rename this step to 'Generate Unique Key'
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.
- 1Click 'Save' to save your flow configuration
- 2Click 'Test' in the top toolbar
- 3Select 'Manually' as the test option
- 4Click 'Test' then 'Run flow'
- 5Monitor the run results for any errors
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.
- 1Navigate back to 'My flows'
- 2Find your Event Lead Import flow
- 3Click the toggle to turn it 'On'
- 4Click the flow name to access run triggers
- 5Bookmark the manual run URL for easy access
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.
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.
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.
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.
Monitor API limits
Salesforce has daily API call limits. Large imports can consume significant quota, especially if you're also running other integrations concurrently.
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
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.
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.
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 automation — Create a second flow that triggers on new Salesforce leads to assign scores based on job title and company size.
- →Set up follow-up email sequences — Connect to your email platform to automatically enroll imported leads in event-specific nurture campaigns.
- →Create event ROI reporting — Build a Power BI report that tracks conversion rates and revenue from leads by event source.
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