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

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

scheduled

Use case type

import

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

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

Google account with edit access to the event leads spreadsheet
HubSpot account with contacts write permissions (Marketing Hub Starter or higher recommended)
Power Automate license (included with Office 365 Business or standalone)

Optional

Event tag property created in HubSpot if using custom tagging beyond lead status

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Emailemail
9 optional fields▸ show
First Namefirstname
Last Namelastname
Companycompany
Phonephone
Job Titlejobtitle
Lead Sourcehs_lead_source
Event Tagevent_name
Lead Statushs_lead_status
Websitewebsite

Step-by-Step Setup

1

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.

  1. 1Click My flows in the left navigation
  2. 2Click the New flow button at the top
  3. 3Select Automated cloud flow from the options
  4. 4Type 'Event Lead Import' as the flow name
  5. 5Click Skip on the trigger selection
What you should see: You should see a blank flow canvas with a blue 'New step' button in the center.
2

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.

  1. 1Click the New step button
  2. 2Search for 'Google Sheets' in the connector search
  3. 3Click on Google Sheets connector
  4. 4Select 'When a row is added, modified or deleted'
  5. 5Click Sign in and authenticate with Google
What you should see: You should see Google Sheets configuration fields asking for File, Worksheet, and other settings.
Common mistake — This trigger fires on any row change, not just new rows, so you'll need filtering later.
Power Automate
+
click +
search apps
Google Sheets
GO
Google Sheets
Add Google Sheets trigger
Google Sheets
GO
module added
3

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.

  1. 1Click the File dropdown and select your spreadsheet
  2. 2Choose your leads worksheet from the Worksheet dropdown
  3. 3Set Select columns to 'Custom'
  4. 4Check the columns you want to sync (Name, Email, Company, etc.)
  5. 5Leave 'Only when a new row is added' as No
What you should see: The trigger shows your selected columns as dynamic content options below the configuration.
Common mistake — Don't trust the 'Only when a new row is added' toggle - it misses rows when multiple people paste data simultaneously.
4

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.

  1. 1Click New step below the Google Sheets trigger
  2. 2Search for 'Control' and select it
  3. 3Click on 'Condition' action
  4. 4Click in the left condition box and select Email from dynamic content
  5. 5Set the operator to 'is not equal to'
  6. 6Leave the right box empty to check for non-empty values
What you should see: You should see a diamond-shaped condition block with Yes/No branches below it.
Common mistake — Always filter on a required field like Email - using optional fields like Phone will skip valid leads.
Google Sheets
GO
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
HubSpot
HU
notified
5

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.

  1. 1Click Add an action inside the Yes branch
  2. 2Search for 'HubSpot' in the connector search
  3. 3Click on HubSpot connector
  4. 4Select 'Create a contact' action
  5. 5Click Sign in and authenticate with HubSpot
What you should see: You should see HubSpot contact fields ready for mapping, starting with Email as a required field.
Common mistake — Make sure your HubSpot account has Marketing Hub Starter or higher - free accounts have limited API access.
6

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.

  1. 1Click in the Email field and select Email from dynamic content
  2. 2Click in First name and map to your sheet's first name column
  3. 3Click in Last name and map to your sheet's last name column
  4. 4Click in Company name and map to your company column
  5. 5Scroll down to see additional optional fields
What you should see: Each mapped field shows the column name from your Google Sheet in blue dynamic content tags.
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

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.

  1. 1Scroll down to see more HubSpot fields
  2. 2Look for lifecycle stage or lead status field
  3. 3Click in the field and type your event identifier
  4. 4Or click Show advanced options for custom properties
  5. 5Add your custom event tag property and value
What you should see: Your event tag appears in the field mapping, ready to be applied to all imported contacts.
Common mistake — Custom properties must exist in HubSpot before mapping - create them in HubSpot Settings > Properties first.
8

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.

  1. 1Click on the HubSpot action title bar
  2. 2Select 'Create or update a contact' from the dropdown
  3. 3Keep your existing field mappings
  4. 4Verify Email is still mapped as the unique identifier
  5. 5Save the changes
What you should see: The action title changes to 'Create or update a contact' and your mappings remain intact.
Common mistake — Update actions count against your HubSpot API limits even for unchanged records - monitor usage if processing large events.
9

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.

  1. 1Click Save at the top of the flow
  2. 2Click Test in the top right corner
  3. 3Select 'I'll perform the trigger action'
  4. 4Click Save & Test
  5. 5Add a test row to your Google Sheet
  6. 6Wait 2-3 minutes and check the test results
What you should see: You should see green checkmarks on each step and a new contact created in HubSpot with your event tag.
Common mistake — Power Automate polling can take up to 15 minutes to detect new rows - don't panic if the test seems slow.
Power Automate
▶ Test flow
executed
Google Sheets
HubSpot
HubSpot
🔔 notification
received
10

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.

  1. 1Click 'Turn on' at the top of the flow
  2. 2Confirm activation in the dialog box
  3. 3Click on 'Run history' to monitor executions
  4. 4Check HubSpot contacts for proper tagging
  5. 5Review any failed runs in the next 24 hours
What you should see: The flow status shows 'On' and you see successful runs in the run history as new leads are added.

Scaling Beyond 100+ leads per event+ Records

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

1

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

2

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.

3

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.

4

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

VerdictWhy n8n for this workflow

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.

Cost

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.

Tradeoffs

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 automationCreate a second flow that assigns lead scores based on job title and company size for event leads.
  • Set up event ROI trackingBuild a Power BI dashboard connecting your event costs to HubSpot deal values from imported leads.
  • Create follow-up email sequencesUse HubSpot workflows to automatically enroll event-tagged contacts in nurture sequences.

Related guides

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