

How to import event leads from Sheets to HubSpot with Power Automate
Automatically import event leads from Google Sheets to HubSpot with custom tags when new rows are added.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Marketing teams who collect leads at events and need them imported to HubSpot automatically with proper tagging.
Not ideal for
Real-time imports under 1 minute or teams processing 1000+ leads per event due to polling delays.
Sync type
scheduledUse case type
importReal-World Example
A 12-person B2B marketing team collects 80-150 leads per trade show and needs them in HubSpot within 30 minutes. Before automation, their marketing coordinator spent 45 minutes after each event manually copying data and adding event tags. Now leads flow automatically with proper tagging for follow-up sequences.
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.
Optional
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
email | ||
9 optional fields▸ show
| First Name | firstname |
| Last Name | lastname |
| Company | company |
| Phone | phone |
| Job Title | jobtitle |
| Lead Source | hs_lead_source |
| Event Tag | event_name |
| Lead Status | hs_lead_status |
| Website | website |
Step-by-Step Setup
My flows > New flow > Automated cloud flow
Create automated cloud flow
Log into make.powerautomate.com and click My flows in the left sidebar. Click New flow at the top, then select Automated cloud flow. Name your flow 'Event Lead Import' and click Skip on the trigger selection screen since we'll configure it manually.
- 1Click My flows in the left navigation
- 2Click the New flow button at the top
- 3Select Automated cloud flow from the options
- 4Type 'Event Lead Import' as the flow name
- 5Click Skip on the trigger selection
Flow canvas > New step > Google Sheets
Add Google Sheets trigger
Click New step and search for 'Google Sheets' in the connector search bar. Select the 'When a row is added, modified or deleted' trigger since Power Automate doesn't have a cleaner new-row trigger. You'll need to authenticate with your Google account that has access to the event leads spreadsheet.
- 1Click the New step button
- 2Search for 'Google Sheets' in the connector search
- 3Click on Google Sheets connector
- 4Select 'When a row is added, modified or deleted'
- 5Click Sign in and authenticate with Google
Google Sheets trigger > Configuration
Configure Google Sheets connection
Select your event leads spreadsheet from the File dropdown. Choose the worksheet containing your leads data. Set 'Select columns' to 'Custom' and pick the columns you want to monitor. Leave 'Only when a new row is added' set to No since this option often fails to work reliably.
- 1Click the File dropdown and select your spreadsheet
- 2Choose your leads worksheet from the Worksheet dropdown
- 3Set Select columns to 'Custom'
- 4Check the columns you want to sync (Name, Email, Company, etc.)
- 5Leave 'Only when a new row is added' as No
Flow canvas > New step > Control > Condition
Add row filtering condition
Click New step and search for 'Condition' in the Control connectors. Add a condition to filter for new rows only by checking if a specific column (like Email) is not empty. This prevents the flow from processing blank rows or header changes.
- 1Click New step below the Google Sheets trigger
- 2Search for 'Control' and select it
- 3Click on 'Condition' action
- 4Click in the left condition box and select Email from dynamic content
- 5Set the operator to 'is not equal to'
- 6Leave the right box empty to check for non-empty values
Condition Yes branch > Add an action > HubSpot
Connect to HubSpot
In the 'If yes' branch, click Add an action and search for HubSpot. Select 'Create a contact' action. You'll need to authenticate with a HubSpot user account that has contacts write permissions. The connection dialog will redirect to HubSpot for OAuth approval.
- 1Click Add an action inside the Yes branch
- 2Search for 'HubSpot' in the connector search
- 3Click on HubSpot connector
- 4Select 'Create a contact' action
- 5Click Sign in and authenticate with HubSpot
HubSpot Create contact > Field mapping
Map basic contact fields
Map the required Email field first by clicking in the field and selecting Email from the Google Sheets dynamic content. Then map First name, Last name, and Company name to their corresponding HubSpot fields. These are the minimum fields needed for a useful contact record.
- 1Click in the Email field and select Email from dynamic content
- 2Click in First name and map to your sheet's first name column
- 3Click in Last name and map to your sheet's last name column
- 4Click in Company name and map to your company column
- 5Scroll down to see additional optional fields
HubSpot Create contact > Additional fields
Add event tag
Scroll down in the HubSpot action to find additional fields. Look for a field like 'hs_lead_status' or add a custom property for event tagging. If using a custom property, you'll need to create it in HubSpot first. Set the value to your event name like 'Trade Show 2024' or use a dynamic value from your sheet.
- 1Scroll down to see more HubSpot fields
- 2Look for lifecycle stage or lead status field
- 3Click in the field and type your event identifier
- 4Or click Show advanced options for custom properties
- 5Add your custom event tag property and value
HubSpot action > Action selection
Configure duplicate handling
HubSpot's Create contact action will skip contacts with duplicate emails by default, but won't update existing records. If you want to update existing contacts with new event tags, change the action to 'Create or update a contact' instead. This ensures existing leads get tagged with your new event.
- 1Click on the HubSpot action title bar
- 2Select 'Create or update a contact' from the dropdown
- 3Keep your existing field mappings
- 4Verify Email is still mapped as the unique identifier
- 5Save the changes
Flow toolbar > Test
Test with sample data
Save your flow and click Test in the top right corner. Select 'I'll perform the trigger action' and click Save & Test. Go to your Google Sheet and add a test row with fake but realistic data. Return to Power Automate and check if the test run succeeded within 2-3 minutes.
- 1Click Save at the top of the flow
- 2Click Test in the top right corner
- 3Select 'I'll perform the trigger action'
- 4Click Save & Test
- 5Add a test row to your Google Sheet
- 6Wait 2-3 minutes and check the test results
Flow toolbar > Turn on
Turn on and monitor
Click 'Turn on' at the top of the flow to activate it. The flow will now check your Google Sheet every few minutes for new rows. Monitor the run history for the first few days to catch any field mapping issues or API errors. Check both Power Automate run history and HubSpot contact activity.
- 1Click 'Turn on' at the top of the flow
- 2Confirm activation in the dialog box
- 3Click on 'Run history' to monitor executions
- 4Check HubSpot contacts for proper tagging
- 5Review any failed runs in the next 24 hours
Scaling Beyond 100+ leads per event+ Records
If your volume exceeds 100+ leads per event records, apply these adjustments.
Use scheduled batch processing
Instead of triggering on each row, set up a scheduled flow that runs every 30 minutes and processes multiple new rows at once using 'List rows present in a table'.
Implement row status tracking
Add a 'Processed' column to your sheet and mark rows as complete to avoid reprocessing. Use this column in your filter condition.
Monitor API rate limits
HubSpot allows 100 requests per 10 seconds. If importing 200+ leads rapidly, add a 1-second delay action between each contact creation to stay under limits.
Set up error handling loops
Wrap your HubSpot action in a Do until loop that retries failed contacts up to 3 times with exponential backoff delays.
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 basic event lead imports without complex data transformations. The Google Sheets and HubSpot connectors are solid, and the polling trigger works fine for non-urgent lead imports. Skip it if you need real-time processing under 5 minutes - the polling delay kills urgency.
At 100 leads per month, you'll use about 400 Power Automate runs (100 triggers + 300 actions). That fits comfortably in most Office 365 plans that include 5,000 runs monthly. Zapier would cost $20/month for the same volume, and Make gives you 1,000 operations free. Power Automate wins on cost if you already pay for Office 365.
Make handles bulk operations better with its array processing and can import 50 leads in one execution instead of 50 separate runs. Zapier's new table trigger is more reliable than Power Automate's finicky row detection. n8n lets you build proper deduplication logic and field validation that Power Automate's visual editor struggles with. But Power Automate integrates better with Microsoft Teams for notifications and SharePoint for lead storage if you need that ecosystem play.
You'll hit the polling delay first - new rows take 2-15 minutes to trigger the flow, which frustrates teams expecting instant imports. The Google Sheets connector also fires on any cell change, so collaborative editing creates phantom triggers. HubSpot's API gets picky about field validation, and Power Automate's error messages don't always show which specific field failed, making debugging tedious.
Ideas for what to build next
- →Add lead scoring automation — Create a second flow that assigns lead scores based on job title and company size for event leads.
- →Set up event ROI tracking — Build a Power BI dashboard connecting your event costs to HubSpot deal values from imported leads.
- →Create follow-up email sequences — Use HubSpot workflows to automatically enroll event-tagged contacts in nurture sequences.
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