Beginner~12 min setupProductivity & CRMVerified April 2026
Google Sheets logo
HubSpot logo

How to Sync Google Sheets Bulk Property Updates to HubSpot with Make

Automatically update HubSpot contact or deal properties whenever you change values in a Google Sheets column.

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

Best for

Teams doing regular bulk property updates who need changes synced to HubSpot within 5 minutes.

Not ideal for

One-time imports or teams updating fewer than 20 records per month.

Sync type

polling

Use case type

sync

Real-World Example

πŸ’‘

A 25-person B2B SaaS sales team maintains lead scoring data in Google Sheets and needs it synced to HubSpot hourly. The sales ops manager updates 150-200 contact scores daily based on product usage data. Before automation, they exported CSV files and manually imported them to HubSpot twice per day, causing stale data and missed follow-up opportunities.

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 Make

Copy the pre-built Make blueprint and paste it straight into Make. 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 Sheets spreadsheet with HubSpot record IDs or email addresses in one column
HubSpot admin or super admin account access for API permissions
Property data organized in columns with headers matching HubSpot field names
Make account with available operations for your expected update volume

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Contact IDhs_object_id
5 optional fieldsβ–Έ show
Lead Scorelead_score
Last Activity Datenotes_last_updated
Lifecycle Stagelifecyclestage
Annual Revenueannualrevenue
Product Interestproduct_interest

Step-by-Step Setup

1

Scenarios > Create new scenario > Google Sheets

Create New Make Scenario

Start building your scenario in Make. You'll use Google Sheets as the trigger to detect changes in your spreadsheet.

  1. 1Log into Make and click 'Create a new scenario'
  2. 2Click the plus (+) icon in the center
  3. 3Search for 'Google Sheets' and select it
  4. 4Choose 'Watch Changes' as your trigger
βœ“ What you should see: You should see a Google Sheets module with 'Watch Changes' selected in your scenario canvas.
2

Google Sheets module > Connection > Add

Connect Google Sheets Account

Authenticate your Google account so Make can monitor your spreadsheet for changes. This creates a persistent connection.

  1. 1Click 'Add' next to the Connection field
  2. 2Sign in with your Google account
  3. 3Grant Make permission to access Google Sheets
  4. 4Click 'Save' to store the connection
βœ“ What you should see: The connection dropdown should show your Google account email with a green checkmark.
⚠
Common mistake β€” Use the same Google account that owns your properties spreadsheet β€” shared sheets won't trigger reliably.
Make settings
Connection
Choose a connection…Add
click Add
Google Sheets
Log in to authorize
Authorize Make
popup window
βœ“
Connected
green checkmark
3

Google Sheets module > Configuration

Configure Spreadsheet Monitoring

Point Make to your specific spreadsheet and sheet tab that contains the property data you want to sync to HubSpot.

  1. 1Select your spreadsheet from the 'Spreadsheet' dropdown
  2. 2Choose the sheet tab containing your property updates
  3. 3Set 'Table contains headers' to Yes
  4. 4Leave 'Row with headers' as 1
βœ“ What you should see: The module should display your spreadsheet name and sheet tab, with headers detected automatically.
⚠
Common mistake β€” Make monitors the entire sheet β€” put only HubSpot-bound data here or you'll trigger on unrelated changes.
4

Scenario canvas > Add module > HubSpot

Add HubSpot Update Module

Add HubSpot as the action module to receive the property updates from your spreadsheet changes.

  1. 1Click the plus (+) icon to the right of Google Sheets
  2. 2Search for 'HubSpot' and select it
  3. 3Choose 'Update a Contact' or 'Update a Deal' based on your data
  4. 4Position the module after Google Sheets
βœ“ What you should see: Your scenario should show Google Sheets connected to a HubSpot update module with an arrow between them.
5

HubSpot module > Connection > Add

Connect HubSpot Account

Authenticate your HubSpot account and grant Make permission to update records. This requires admin access to work properly.

  1. 1Click 'Add' next to the HubSpot Connection field
  2. 2Enter your HubSpot account domain
  3. 3Sign in with your HubSpot credentials
  4. 4Authorize Make to read and write HubSpot data
βœ“ What you should see: The HubSpot connection should show 'Connected' with your HubSpot account domain visible.
⚠
Common mistake β€” You need HubSpot admin or super admin permissions β€” regular user accounts can't update properties via API.
6

HubSpot module > Record identification

Map Record Identifier

Configure how Make will find the correct HubSpot record to update using data from your spreadsheet row.

  1. 1In the 'ID' field, click and select the column containing HubSpot record IDs
  2. 2Or use 'Email' field if updating contacts by email address
  3. 3Map the identifier from your Google Sheets trigger data
  4. 4Verify the field mapping shows the correct column reference
βœ“ What you should see: The ID or Email field should display a dynamic reference like '1. Email' or '1. Contact ID' from your sheet.
⚠
Common mistake β€” HubSpot record IDs are long numbers β€” don't confuse them with row numbers or custom ID fields you created.
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 module > Properties > Add item

Map Property Fields

Connect each column from your spreadsheet to the corresponding HubSpot property that should be updated.

  1. 1Scroll to the Properties section in the HubSpot module
  2. 2Click 'Add item' for each property you want to update
  3. 3Select the HubSpot property name from the dropdown
  4. 4Map it to the corresponding Google Sheets column
βœ“ What you should see: Each property mapping should show the HubSpot field name on the left and your sheet column reference on the right.
⚠
Common mistake β€” Custom HubSpot properties use internal names like 'annual_revenue_2024' not display names like 'Annual Revenue 2024'.
8

Google Sheets module > Advanced settings

Configure Change Detection

Set up how often Make checks for changes and what triggers an update to avoid unnecessary API calls.

  1. 1Click 'Advanced settings' on the Google Sheets module
  2. 2Set 'Limit' to 100 to process up to 100 changes per run
  3. 3Leave 'Range' empty to monitor the entire sheet
  4. 4Set scheduling to every 5 minutes for near real-time sync
βœ“ What you should see: Advanced settings should show Limit: 100 and your chosen schedule interval.
9

Scenario controls > Run once

Test the Scenario

Run a test to verify Make can detect changes in your sheet and update HubSpot correctly before going live.

  1. 1Click 'Run once' at the bottom of the scenario
  2. 2Make a test change in your Google Sheet
  3. 3Wait 30 seconds and check the execution log
  4. 4Verify the HubSpot record was updated correctly
βœ“ What you should see: The execution log should show successful completion with green checkmarks on both modules.
⚠
Common mistake β€” Test with a non-critical record first β€” bulk updates can't be easily undone if your mapping is wrong.
Make
β–Ά Run once
executed
βœ“
Google Sheets
βœ“
HubSpot
HubSpot
πŸ”” notification
received
10

HubSpot module > Right-click > Add error handler

Add Error Handling

Configure what happens when HubSpot API limits are hit or records aren't found to prevent scenario failures.

  1. 1Right-click the HubSpot module and select 'Add error handler'
  2. 2Add a 'Break' module for the error handler route
  3. 3Set error handling to 'Rollback' in scenario settings
  4. 4Save the error handler configuration
βœ“ What you should see: A dotted line should connect your HubSpot module to a Break module, indicating error handling is active.
⚠
Common mistake β€” Without error handling, one bad record will stop the entire batch from processing.
11

Scenario controls > Toggle ON/OFF

Activate the Scenario

Turn on automatic monitoring so Make continuously watches for changes and syncs them to HubSpot.

  1. 1Click the 'OFF' toggle in the bottom-left to turn it ON
  2. 2Confirm the scenario activation
  3. 3Set up email notifications for errors if desired
  4. 4Save the scenario with a descriptive name
βœ“ What you should see: The scenario status should show 'ON' with a green indicator, and scheduling should be active.
⚠
Common mistake β€” Once active, every sheet change triggers an API call β€” avoid editing non-HubSpot columns in the same sheet.

Drop this into a Make custom function.

JavaScript β€” Custom Function{{if(1.`Email` != ""; 1.`Email`; 1.`Contact ID`)}}
β–Έ Show code
{{if(1.`Email` != ""; 1.`Email`; 1.`Contact ID`)}}

... expand to see full code

{{if(1.`Email` != ""; 1.`Email`; 1.`Contact ID`)}}

Scaling Beyond 300+ record updates per day+ Records

If your volume exceeds 300+ record updates per day records, apply these adjustments.

1

Batch Processing

Reduce the scenario run frequency to every 15 minutes and increase the limit to 50 records per batch. This reduces operations usage while staying under HubSpot's rate limits.

2

Rate Limit Buffer

Add a Sleep module set to 1 second between every 10 HubSpot updates. This prevents 429 rate limit errors that cause scenario failures and require manual restarts.

3

Change Detection Optimization

Use Google Sheets filters or separate tabs to limit the monitored range. Monitoring entire sheets with thousands of rows burns operations even when only a few cells change.

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 Make for this workflow

Use Make for this if you're updating 50+ records regularly and need change detection within 5 minutes. Make's Google Sheets 'Watch Changes' trigger beats Zapier's basic row detection, and the visual mapping makes complex property updates manageable. Pick Zapier instead if you only update a few records monthly β€” the simpler interface isn't worth Make's learning curve for low-volume work.

Cost

This workflow uses 2 operations per updated record (1 for Google Sheets change detection, 1 for HubSpot update). At 200 property updates per month, that's 400 operations total. Make's Core plan at $9/month includes 10,000 operations, so you're well covered. Zapier charges $20/month for the same volume on their Starter plan. N8n is free but requires hosting, which costs $15-25/month on DigitalOcean β€” Make wins on pure cost here.

Tradeoffs

Zapier's HubSpot integration has better property dropdown menus that show display names alongside internal names, making field mapping less confusing than Make's API-focused interface. N8n offers more granular error handling and retry logic for failed updates. But Make's change detection is more reliable than both β€” Zapier's row-based triggers miss in-cell edits, and N8n's Google Sheets polling can skip rapid changes during high activity.

Google Sheets API has a 100-request-per-100-seconds quota that Make doesn't warn about until you hit it. Large bulk updates will fail silently after the first batch. HubSpot's property validation happens after Make sends the data, so formatting errors only show up in execution logs, not during testing. Make's change detection also triggers on formula recalculations, so avoid putting calculated fields in your monitored columns or you'll burn through operations fast.

Ideas for what to build next

  • β†’
    Add Slack notifications for failed updates β€” Set up a Slack module on the error handler route to notify your team when HubSpot updates fail due to rate limits or missing records.
  • β†’
    Create audit log in separate sheet β€” Add a Google Sheets module that logs each successful update with timestamp and changed values for compliance and troubleshooting.
  • β†’
    Bi-directional sync for status changes β€” Build a reverse scenario that updates your Google Sheet when HubSpot properties change, keeping both systems synchronized in real-time.

Related guides

Was this guide helpful?
← Google Sheets + HubSpot overviewMake profile β†’