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

How to Import Event Leads from Google Sheets to HubSpot with N8n

Automatically import event leads from a Google Sheet into HubSpot with custom tags using N8n's self-hosted workflow automation.

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

Best for

Teams that regularly import event leads and want unlimited executions without per-run costs

Not ideal for

Occasional importers who prefer simple setup over hosting complexity

Sync type

polling

Use case type

import

Real-World Example

💡

A 25-person marketing agency imports 100-300 leads per month from trade shows and conferences. Before automation, their sales team manually entered leads from spreadsheets, taking 2-3 hours per event and often losing leads in the process. Now they paste event leads into a standard Google Sheet format and contacts appear in HubSpot within 3 minutes with proper event source tags for campaign tracking.

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 n8n

Copy the pre-built n8n blueprint and paste it straight into n8n. 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 access to Google Sheets where you'll paste event leads
HubSpot account with admin access to create private apps and manage contacts
N8n instance running (self-hosted or N8n Cloud account)
Event lead data in a consistent format with at minimum name, email, and company columns

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Email Addressemail
5 optional fields▸ show
First Namefirstname
Last Namelastname
Company Namecompany
Job Titlejobtitle
Phone Numberphone

Step-by-Step Setup

1

Main dashboard > New workflow

Install and configure N8n

Set up N8n on your server or local machine. You need the self-hosted version to handle lead imports efficiently without per-execution costs.

  1. 1Run 'npx n8n' in your terminal to start N8n locally
  2. 2Open http://localhost:5678 in your browser
  3. 3Create your admin account with email and password
  4. 4Click 'New workflow' to start building
What you should see: You should see the N8n workflow canvas with a single 'When clicking Test workflow' node.
2

Workflow canvas > + > Google Sheets

Add Google Sheets trigger node

Configure N8n to monitor your event leads spreadsheet. This watches for new rows you paste after collecting leads at events.

  1. 1Click the '+' button to add a new node
  2. 2Search for 'Google Sheets' and select it
  3. 3Choose 'On Row Added' as the trigger event
  4. 4Click 'Sign in with Google' to authenticate
What you should see: The Google Sheets node should show 'Connected' status with your Google account email displayed.
Common mistake — Don't select 'On Row Updated' - that fires every time you edit existing data and will create duplicate contacts
n8n
+
click +
search apps
Google Sheets
GO
Google Sheets
Add Google Sheets trigger node
Google Sheets
GO
module added
3

Google Sheets node > Parameters

Select your event leads spreadsheet

Point the trigger to your specific Google Sheet where you paste event leads. This sets up monitoring for new lead entries.

  1. 1In the 'Spreadsheet' dropdown, find your event leads sheet
  2. 2Select the worksheet tab (usually 'Sheet1' or 'Leads')
  3. 3Set 'Trigger On' to 'Row Added'
  4. 4Click 'Test step' to verify connection
What you should see: You should see sample data from your spreadsheet with column headers like Name, Email, Company displayed in the output panel.
Common mistake — Make sure your sheet has headers in row 1 - N8n maps field names from the first row
4

Workflow canvas > + > HubSpot

Add HubSpot node

Connect to HubSpot's API to create new contacts. This handles the actual import of lead data into your CRM.

  1. 1Click '+' after the Google Sheets node
  2. 2Search for 'HubSpot' and select it
  3. 3Choose 'Contact' as the resource type
  4. 4Select 'Create' as the operation
What you should see: The HubSpot node appears connected to Google Sheets with operation set to 'Create Contact'.
5

HubSpot node > Credential > Create New

Authenticate with HubSpot

Connect N8n to your HubSpot account using a private app token. This gives permission to create and update contacts.

  1. 1In HubSpot node, click 'Create New Credential'
  2. 2Select 'Private App Token' authentication method
  3. 3Go to HubSpot Settings > Private Apps > Create app
  4. 4Copy the token and paste into N8n credential field
What you should see: The credential should save successfully and show 'Connected' status in the HubSpot node.
Common mistake — Grant 'contacts' write permission in your HubSpot private app - read-only won't work for imports
6

HubSpot node > Additional Fields

Map lead data fields

Configure which columns from your Google Sheet map to HubSpot contact properties. This ensures lead information transfers correctly.

  1. 1In the HubSpot node, click 'Add Property' for each field
  2. 2Map 'email' to your spreadsheet's Email column using the expression editor
  3. 3Add 'firstname' mapped to your Name/First Name column
  4. 4Add 'company' mapped to your Company column
What you should see: You should see 3-4 mapped properties with expressions like {{ $json['Email'] }} pulling data from your sheet.
Common mistake — Email is required - HubSpot will reject contacts without valid email addresses
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 node > Additional Fields > Tag

Add event source tag

Tag imported contacts with their event source for tracking. This helps identify which leads came from which events in HubSpot.

  1. 1In the HubSpot node, click 'Add Property'
  2. 2Select 'Tag' from the property dropdown
  3. 3Set the value to your event name like 'TechCrunch Disrupt 2024'
  4. 4Click 'Add Property' again to add more tags if needed
What you should see: The tag property should appear with your custom event name as a static value.
Common mistake — Create the tag in HubSpot first - N8n won't auto-create missing tags and contacts will import without tagging
8

HubSpot node > Settings

Set up error handling

Configure what happens when lead imports fail. This prevents losing leads when HubSpot API issues occur or duplicate emails are detected.

  1. 1Click the HubSpot node settings (3 dots menu)
  2. 2Select 'Settings' from the dropdown
  3. 3Set 'Continue On Fail' to true
  4. 4Choose 'Output Error Data' to capture failed imports
What you should see: The node should show error handling enabled with a small warning icon indicating it will continue on failures.
Common mistake — Test with a duplicate email first - HubSpot returns a specific error code that you'll want to handle gracefully
9

Workflow > Test workflow

Test the complete workflow

Run a test import with sample lead data to verify the end-to-end process works. This catches mapping errors before you import real event leads.

  1. 1Click 'Test workflow' button in the top toolbar
  2. 2Add a test row to your Google Sheet with sample lead data
  3. 3Wait 30 seconds for the trigger to fire
  4. 4Check the execution log for success or error messages
What you should see: The workflow execution should show green checkmarks on both nodes, and a new contact should appear in your HubSpot contacts list.
Common mistake — The trigger can take 60+ seconds to detect new rows - don't assume it's broken if nothing happens immediately
n8n
▶ Run once
executed
Google Sheets
HubSpot
HubSpot
🔔 notification
received
10

Workflow header > Active toggle

Activate the workflow

Turn on automatic monitoring so the workflow runs whenever you paste new event leads. This enables hands-off lead import after events.

  1. 1Click the toggle switch at the top of the workflow to 'Active'
  2. 2Save the workflow with a descriptive name like 'Event Leads Import'
  3. 3Add a test row to verify the active workflow triggers correctly
  4. 4Check HubSpot to confirm the contact was created with proper tags
What you should see: The workflow status should show 'Active' with a green indicator, and new sheet rows should automatically create HubSpot contacts within 2 minutes.
Common mistake — Active workflows consume execution time even when idle - monitor your usage if you're on N8n Cloud

Drop this into an n8n Code node.

JavaScript — Code Node// Clean and validate email before sending to HubSpot
▸ Show code
// Clean and validate email before sending to HubSpot
const email = $json['Email'].toLowerCase().trim();
if (!email.includes('@') || email.includes(' ')) {

... expand to see full code

// Clean and validate email before sending to HubSpot
const email = $json['Email'].toLowerCase().trim();
if (!email.includes('@') || email.includes(' ')) {
  throw new Error('Invalid email format: ' + email);
}
return { email };

Scaling Beyond 100+ leads per import batch+ Records

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

1

Add batch processing

Split large imports into chunks of 50 contacts using N8n's SplitInBatches node. This prevents API timeouts and makes error handling easier when individual contacts fail.

2

Implement delay nodes

Add 100ms delays between HubSpot API calls to stay under their 100 requests/10 seconds rate limit. Use the Wait node with 'Resume On Webhook' disabled for precise timing control.

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 N8n for this if you import leads regularly and want to avoid per-execution costs. Self-hosting N8n means unlimited workflow runs - critical when importing 50+ leads per event. The code flexibility also lets you clean up messy event data before sending to HubSpot. Skip N8n if you only import leads quarterly - Zapier's simpler setup isn't worth the hosting overhead for occasional use.

Cost

This workflow uses 2 executions per imported lead - one for the trigger, one for the HubSpot contact creation. At 200 leads/month, that's 400 executions total. Self-hosted N8n costs only your server time (roughly $10/month for a basic VPS). N8n Cloud charges $20/month for 5,000 executions, so you'd stay well under limits. Zapier would cost $20/month for the same volume, while Make charges $9/month but limits you to 1,000 operations.

Tradeoffs

Zapier handles Google Sheets triggers faster - usually 1-2 minutes versus N8n's 2-3 minute polling interval. Make offers better error handling with automatic retry logic and cleaner visual debugging. But N8n wins on data transformation capabilities. You can write custom JavaScript to clean phone numbers, split full names into first/last, or validate email formats before sending to HubSpot - something that requires premium Zapier plans.

Google Sheets API occasionally returns stale data on rapid updates, causing N8n to miss recently pasted rows. The polling trigger can also fire multiple times if you paste rows quickly, creating duplicate contacts. HubSpot's rate limit is 100 requests per 10 seconds - if you import 50+ leads simultaneously, add a delay node between operations or HubSpot will reject the excess requests with 429 errors.

Ideas for what to build next

  • Set up lead scoring automationCreate a follow-up workflow that assigns lead scores based on company size, job title, and event type to prioritize your sales team's outreach efforts.
  • Add Slack notifications for VIP leadsBuild a secondary workflow that sends Slack alerts when high-value contacts (enterprise companies, C-level titles) are imported from events for immediate sales follow-up.
  • Create event ROI trackingExtend the workflow to log lead values in a separate tracking sheet, calculating cost-per-lead and conversion rates for different events and lead sources.

Related guides

Was this guide helpful?
Google Sheets + HubSpot overviewn8n profile →