

How to Import Contacts from Google Sheets to HubSpot with Zapier
Automatically create or update HubSpot contacts when new rows are added to your Google Sheet.
Steps and UI details are based on platform versions at time of writing β check each platform for the latest interface.
Best for
Non-technical teams importing up to 500 contacts monthly who want reliable, simple automation.
Not ideal for
High-volume imports over 1000 contacts monthly or teams needing instant real-time sync.
Sync type
pollingUse case type
importReal-World Example
A 12-person B2B marketing agency uses this to import leads from event signup sheets into their HubSpot pipeline. Before automation, the marketing coordinator manually copied 50-80 new leads weekly, taking 2 hours and introducing typos. Now leads flow automatically within 10 minutes of being added to the shared Google Sheet.
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
Before You Start
Make sure you have everything ready.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Email Address | email | |
7 optional fieldsβΈ show
| First Name | firstname |
| Last Name | lastname |
| Company Name | company |
| Phone Number | phone |
| Website URL | website |
| Job Title | jobtitle |
| Lead Source | hs_lead_status |
Step-by-Step Setup
Dashboard > Create Zap > Trigger
Create New Zap
Start a new automation by creating a Zap that will connect Google Sheets to HubSpot. This sets up the basic workflow structure.
- 1Click 'Create Zap' from your Zapier dashboard
- 2Click on 'Trigger' in the first step
- 3Search for 'Google Sheets' and select it
- 4Choose 'New Spreadsheet Row' as your trigger event
Trigger > App & Event > Account
Connect Google Sheets Account
Authorize Zapier to access your Google Sheets. This creates a secure connection to monitor your spreadsheet for new rows.
- 1Click 'Sign in to Google Sheets'
- 2Select your Google account from the popup
- 3Click 'Allow' to grant Zapier permissions
- 4Click 'Continue' once connected
Trigger > App & Event > Options
Select Your Spreadsheet
Choose the specific Google Sheet and worksheet tab that contains your contact data. Zapier will monitor this sheet for new rows.
- 1Click the 'Spreadsheet' dropdown
- 2Select your contact spreadsheet from the list
- 3Click the 'Worksheet' dropdown
- 4Choose the specific sheet tab with contact data
- 5Click 'Continue'
Trigger > Test
Test Google Sheets Trigger
Zapier pulls a sample row from your sheet to understand the data structure. This validates your connection and shows available fields.
- 1Click 'Test trigger'
- 2Review the sample data that appears
- 3Verify all your contact columns are visible
- 4Click 'Continue with selected record'
Action > App & Event
Add HubSpot Action
Set up the second step to create or update contacts in HubSpot when new rows are detected.
- 1Click the '+' button below your trigger
- 2Search for 'HubSpot' and select it
- 3Choose 'Create or Update Contact' as the action event
- 4Click 'Continue'
Action > App & Event > Account
Connect HubSpot Account
Authorize Zapier to access your HubSpot account and create contacts. This establishes the secure connection for data transfer.
- 1Click 'Sign in to HubSpot'
- 2Enter your HubSpot login credentials
- 3Click 'Authorize' to grant access
- 4Select your HubSpot account if multiple appear
Action > Set up action > Contact Properties
Map Email Field
Configure the email field mapping first since it's required for contact creation. This tells Zapier which spreadsheet column contains email addresses.
- 1Click in the 'Email' field under Contact Properties
- 2Select your email column from the Google Sheets data dropdown
- 3Verify the sample email appears in the field
- 4Leave this field exactly as mapped
Action > Set up action > Contact Properties
Map Contact Name Fields
Connect your spreadsheet name columns to HubSpot's first and last name fields. This ensures proper contact identification in your CRM.
- 1Click in the 'First Name' field
- 2Select your first name column from the dropdown
- 3Click in the 'Last Name' field
- 4Map your last name column from the spreadsheet
Action > Set up action > Contact Properties
Map Company and Phone Fields
Add company and phone number mappings if your spreadsheet includes this data. These fields enrich contact profiles in HubSpot.
- 1Scroll down to find 'Company' field
- 2Map your company column if available
- 3Find the 'Phone Number' field
- 4Map your phone column if present in the sheet
Action > Test
Test HubSpot Action
Run a test to create an actual contact in HubSpot using your sample data. This validates the complete workflow.
- 1Scroll down and click 'Test step'
- 2Wait for the test to complete
- 3Review the success message with contact details
- 4Click 'Continue' if the test passes
Zap Editor > Title
Review and Name Your Zap
Give your automation a descriptive name and review the complete workflow before activation.
- 1Click the pencil icon next to 'Untitled Zap'
- 2Enter a name like 'Google Sheets to HubSpot Contacts'
- 3Review both trigger and action steps
- 4Verify all field mappings are correct
Zap Editor > Publish
Publish Your Zap
Activate the automation to start monitoring your Google Sheet for new contact rows. The Zap will run automatically going forward.
- 1Click the 'Publish' button in the top right
- 2Confirm by clicking 'Publish Zap'
- 3Wait for the 'Zap is on' confirmation
- 4Test by adding a new row to your Google Sheet
Drop this into a Zapier Code step.
Copy this template{{contact_email|lower|trim}} in the email field to normalize addresses and prevent duplicate contacts from spacing or capitalization differencesβΈ Show code
{{contact_email|lower|trim}} in the email field to normalize addresses and prevent duplicate contacts from spacing or capitalization differences... expand to see full code
{{contact_email|lower|trim}} in the email field to normalize addresses and prevent duplicate contacts from spacing or capitalization differencesScaling Beyond 500+ contacts/month+ Records
If your volume exceeds 500+ contacts/month records, apply these adjustments.
Switch to Make for better pricing
At 500+ tasks monthly, Make's $9 plan beats Zapier's $50 Professional plan. The field mapping is similar but Make handles batch operations more efficiently.
Use batch import instead of row-by-row
Consider HubSpot's native CSV import for large datasets. Import 1000+ contacts in minutes vs hours with Zapier's 1-contact-per-task limit.
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 Zapier for this if your team doesn't code and you need dead-simple setup. Takes 8 minutes to configure and the trigger fires within 2-15 minutes of a new row appearing. The guided interface walks non-technical users through field mapping without confusion. Pick Make instead if you're importing 1000+ contacts monthly β Zapier's task limits get expensive fast at high volume.
This workflow costs 1 task per contact imported. At 200 contacts/month, that's 200 tasks total, fitting comfortably in Zapier's Starter plan at $20/month. Make charges $9/month for 1000 operations, so it's $11 cheaper monthly at this volume. N8n is free but requires hosting setup. Zapier wins on simplicity despite higher costs.
Make handles batch imports better β you can process multiple rows in a single scenario run instead of 1 task per contact. N8n offers more advanced data transformation if your spreadsheet needs cleaning before import. But Zapier's error handling is cleaner for this use case. When a contact creation fails, Zapier shows exactly which row and field caused the problem. Make's error messages are cryptic for beginners.
Google Sheets API has a 5-minute polling delay, so new rows take 2-15 minutes to trigger the Zap. If you edit existing rows, Zapier sometimes treats them as new and creates duplicate contacts. HubSpot's contact deduplication relies on exact email matches β extra spaces or different capitalization create separate contacts. Test with real messy data, not clean samples.
Ideas for what to build next
- βAdd Slack notifications for new contacts β Create a second Zap that posts to Slack when HubSpot contacts are created, keeping your sales team informed of new leads.
- βSet up contact scoring automation β Build a workflow that assigns HubSpot lead scores based on company size, job title, or other criteria from your spreadsheet data.
- βCreate follow-up email sequences β Trigger HubSpot email workflows automatically when contacts are imported, sending welcome emails or nurture sequences based on lead 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